DIEN
阿里巴巴提出DIN模型之后,并没有停止其推荐模型演化的进程,而是于2019年正式提出了DIN模型的演化版本–DIEN。模型的应用场景和DIN完全一致,其创新在于序列模型模拟了用户兴趣的进化进程。下面对DIEN的主要思路和兴趣演化部分的设计进行详细介绍。
DIEN的进化动机
无论是电商购买行为,还是视频网站的观看行为,或是新闻应用的阅读行为,特定用户的历史行为都是一个随时间排序的序列。既然是时间相关的序列,就一定存在或深或浅的前后依赖关系,这样的序列信息对于推荐过程无疑是有价值的。
那么,为什么说序列信息对推荐来说是有价值的呢?一个经典的电商用户的行为现象可以说明这一点。对于一个综合电商来说,用户兴趣的迁移其实非常快,例如,上周一位用户挑选一双篮球鞋,这位用户上周的行为序列都会集中在篮球鞋这个品类的商品上,但在他完成购买后,本周他的购物兴趣可能变成买一个机械键盘。序列信息的重要性在于:
- 它加强了最近行为对下次行为预测的影响。在这个例子中,用户近期购买机械键盘的概率会明显高于再买一双篮球鞋或购买其他商品的概率。
- 序列模型能够学习到购买趋势的信息。在这个例子中,序列模型能够在一定程度上建立“篮球鞋”到“机械键盘”的转移概率。如果这个转移概率在全局统计意义上是足够高的,那么用户购买篮球鞋时,推荐机械键盘也会成为一个不错的选项。直观上,二者的用户群体很有可能是一致的。
如果放弃序列信息,则模型学习时间和趋势这类信息的能力就不会那么强,推荐模型就仍然是基于用户所有购买历史的综合推荐,而不是针对“下一次购买”推荐。显然,从业务的角度看,后者才是推荐系统正确的推荐目标。
DIEN模型的构架
基于引进“序列”信息的动机,阿里巴巴百对DIN模型进行了改进,形成了DIEN模型的结构。如下图所示,模型仍是输入层+Embedding层+连接层+多层全连接神经网络+输出层的整体架构。图中彩色的“兴趣进化网络”被认为是一种用户兴趣的Embedding方法,它最终的输出是h’(T)这个用户兴趣向量。DIEN模型的创新点在于如何构建“兴趣进化网络”。
兴趣进化网络分为三层,从下至上依次是:
- 行为序列层(浅绿色部分):其主要作用是把原始的id类行为序列转换成Embedding行为序列。
- 兴趣抽取层(米黄色部分):其主要作用是通过模拟用户兴趣迁移过程,抽取用户兴趣。
- 兴趣进化层(浅红色部分):其主要作用是通过在兴趣抽取层基础上加入注意力机制,模拟于当前目标广告相关的兴趣进化过程。
在兴趣进化网络中,行为序列层的结构与普通的Embedding层是一致的,模拟用户兴趣进化的关键在于“兴趣抽取层”和“兴趣进化层”。
兴趣抽取层的结构
兴趣抽取层的基本结构是GRU网络。相比传统的序列模型RNN和LSTM,GRU解决了RNN的梯度消失问题。与LSTM相比,GRU的参数数量更少,训练收敛速度更快,因此成了DIEN序列模型的选择。
每个GRU单元的具体形式由下列公式定义。
其中Wu,Wt,Wh,Uz,Ur,Uh是六组需要学习的参数矩阵,it是输入状态向量,也就是行为序列层的各行为Embedding向量b(t),ht是GRU网络中第个隐状态向量。
经过由GRU组成的兴趣抽取层后,用户的行为向量b(t)被进一步抽象化,形成了兴趣状态向量h(t)。理论上,在兴趣状态向量序列的基础上,GRU网络已经可以做出下一个兴趣状态向量的预测,但DIEN却进一步设置了兴趣进化层。
兴趣进化层的结构
DIEN兴趣进化层相比兴趣抽取层最大的特点是加入了注意力机制。这一特点与DIN的一脉相承。从结构图的注意力单元的连接方式可以看出,兴趣进化层注意力得分的生成过程与DIN完全一致,都是当前状态向量与目标广告向量进行互作用的结果。也就是说,DIEN在模拟兴趣进化的过程中,需要考虑与目标广告的相关性。
在兴趣抽取层之上再加上兴趣进化层就是为了更有针对性地模拟与目标广告相关的兴趣进化路径。由于阿里巴巴这类综合电商的特点,用户非常有可能透视购买多品类商品,例如在购买“机械键盘”的同时还在查看“衣服”品类下的商品,那么这时注意力机制就显得格外重要了。当目标广告是某个电子产品时,用户购买“机械键盘”相关的兴趣演化路径显然比购买“衣服”的演化路径重要,这样的筛选功能兴趣抽取层没有。
兴趣进化层完成注意力机制的引入通过AUGRU(基于注意力更新门的GRU)结构,AUGRU在原GRU的更新门的结构上加入了注意力得分,具体形式如下图所示。
结合GRU公式,可以看出AUGRU在原始的ut’基础上加入注意力得分at,注意力得分的生成方式与DIN模型中注意力激活单元的基本一致。
序列模型对推荐系统的启发
由于序列模型具备强大的时间序列的表达能力,使其非常适合预估用户经过一系列行为后的下一次动作。
事实上,不仅阿里巴巴在电商模型上成功运用了序列模型,YouTube、Netflix等视频流媒体公司也已经成功的在其视频推荐模型中应用了序列模型,用于预测用户的下次观看行为。
但在工程实现上需要注意:序列模型比较高的训练复杂度,以及在线上判断过程中的串行推断,使其在模型服务过程中延迟较大,这无疑增大了其上线的难度,需要在工程上着重优化。