推荐系统之DIEN模型原理

简介

本文要介绍的是由阿里巴巴团队于2019年提出的DIEN模型,此模型是该团队此前提出的DIN的演化版本。DIEN的应用场景和DIN一模一样,其创新之处在于使用了序列模型来模拟用户兴趣的进化过程。DIN模型直接将用户历史行为数据当成用户的兴趣特征,但是正如我们所知,用户潜在的兴趣很难通过显式的历史行为数据直观反映出来。DIEN正是瞄准了这个难点,深入挖掘历史行为数据背后隐藏的用户兴趣特征,并且捕捉用户兴趣的进化过程。

DIEN的“进化”动机

无论是电商购买行为,还是视频网站的观看行为,或者是新闻应用的阅读行为,特定用户的历史行为都是一个随着时间排序的序列。既然是时间相关的序列,就一定存在或深或浅的前后依赖关系,这样的序列信息对于推荐过程无疑是有价值的。举例来说明这一点,对于一个综合电商来说,用户兴趣的迁移其实非常快。例如,上周以为用户在挑选篮球鞋,这位用户上周的行为序列可能都集中在篮球鞋这个品类的商品上,但在他完成购买之后,本周他的购物兴趣可能会变成买一个机械键盘。序列信息的重要性在于:

  • 它加强了最近行为对下次行为预测的影响
    在上面的例子中,用户近期购买机械键盘的概率会明显高于再买一双篮球鞋或者其他商品的概率。
  • 序列模型能够学习到购买趋势的信息
    在上面例子中,序列模型能够再一定程度上建立“篮球鞋”到“机械键盘”的转移概率。如果这个转移概率在全局统计意义上式足够高的,那么用户在购买篮球鞋时,推荐机械键盘也会成为一个不错的选项。直观上,二者的用户群体可能是一致的。

如果放弃序列信息,则模型学习时间和趋势这类信息的能力就不会那么强,推荐模型就仍然是基于用户所有购买历史的综合推荐,而不是针对“下一次购买”推荐。显然,从业务的角度来看,后者才是推荐系统正确的推荐目标。

DIEN模型

基于引进“序列”信息的动机,阿里巴巴对DIN模型进行了改进,形成了DIEN模型的结构。DIEN模型依旧遵循传统的Embedding层+聚合层+多层全连接神经网络+输出层的结构。DIEN模型整体框架如下图:

DIEN模型
上图中彩色部分是“兴趣提取网络”,可以认为它是用来从用户的历史行为数据中提取兴趣的网络,它最终的输出是h'(T),代表当前用户的兴趣向量。DINE模型的创新点在于如何构建“兴趣提取网络”。“兴趣提取网络”自底向上共包含3层,分别是:

  • 用户行为层(Behavior Layer)
    主要作用是将原始的高维稀疏的历史行为数据转换成低维稠密的embedding向量。
  • 兴趣提取层(Interest Extractor Layer)
    主要作用是通过模拟用户兴趣的迁移过程,从用户历史行为数据的背后抽取真实兴趣特征。
  • 兴趣进化层(Interest Evolving Layer)
    主要作用是通过在兴趣提取层基础上加入注意力机制,模拟与当前广告相关的兴趣进化过程。

后两层才是DIEN比较关键的创新,我们着重分析一下这两层的构造。

兴趣提取层(Interest Extractor Layer)

在电商系统中,用户的行为数据往往蕴含着用户的兴趣爱好,这些兴趣也会随着用户的购买行为而发生变化,兴趣提取层的目的就是从用户的行为序列中提取出一系列的兴趣状态。
为了平衡效率和性能,作者选择了GRU(Gated Recurrent Unit,门循环单元)网络来对用户行为之间的依赖进行建模。相比传统的RNN和LSTM,GRU能够克服RNN梯度消失的问题,同时比LSTM网络具有更少的参数,训练收敛速度更快,更加适合电商系统。GRU的结构如下:

GRU
论文中所使用的GRU结构与上图一致,只不过参数相比上图右边的公式中描述的更多,DIEN中使用的GRU的计算公式如下:
GRU计算公式
其中\sigma代表sigmoid激活函数,\text {o}代表逐元素乘积,W^{u}, W^{r}, W^{h} \in \mathbb{R}^{n_{H} \times n_{I}}, U^{z}, U^{r}, U^{h} \in n_H \times n_H,其中n_H代表隐层的大小,n_I是输入大小,i_t是GRU的输入状态向量,也就是行为序列中个行为的embedding向量,h_t是GRU网络中第t个隐状态向量。
然而,隐状态向量h_t只能捕捉用户行为之间的依赖关系,却并不能很好地描述用户的兴趣。由于目标item的点击行为是由最终计算出来的兴趣特征触发的,L_{target}中使用的标签数据只对最终生成的兴趣进行监督学习,而历史隐状态h_t (t < T)并不能进行监督学习。因此,作者提出了辅助损失(auxiliary loss),它使用了t+1时刻的行为向量e_{t+1}来监督当前t时刻GRU学习到的隐状态h_t。示意图如下:
Auxiliary Loss

除了使用时间轴上下一个行为向量e_{t+1}作为正样本以外,还从不包含正样本的历史行为样本集中抽样出一个负样本e_{t+1}'
这样就可以形成N对行为向量序列:\left\{\mathbf{e}_{b}^{i}, \hat{\mathbf{e}}_{b}^{i}\right\} \in \mathcal{D}_{\mathcal{B}}, i \in 1,2, \cdots, N, 其中 \mathbf{e}_{b}^{i} \in \mathbb{R}^{T \times n_{E}}代表点击行为序列,\mathbf{\hat e}_{b}^{i} \in \mathbb{R}^{T \times n_{E}}代表负样本序列。T是行为序列的总长度,n_E是embedding向量的维度。由此可得,Auxiliary Loss的计算方式如下:
其中\sigma(x_1,x_2)的定义如下:
h_t代表GRU的第t个隐状态,DIEN的总体损失函数为:
Loss
其中\alpha是一个超参数,用于平衡CTR预估和兴趣表示。
作者认为,通过引入Auxiliary Loss,GRU的每个隐状态h_t就有足够强的表达能力来代表用户的兴趣,并且所有T个隐状态进行聚合之后得到序列[h_1,h_2,...,h_T]也能够让兴趣进化层进行近一步的建模。总得来说,Auxiliary Loss具有以下优点:

  • 从兴趣学习的角度来看,Auxiliary Loss的引入可以使得GRU的隐状态向量h_t更有效地表达用户的兴趣
  • 从GRU的优化角度来看,当GRU对较长历史行为序列建模时,Auxiliary loss可以降低反向传播的难度
  • Auxiliary Loss的引入给embedding层的学习提供了更多的语义信息

实际上,没太明白Auxiliary Loss究竟如何提供更多语义信息。

兴趣进化层(Interest Evolving Layer)

由于内部和外部环境的影响,用户的兴趣是在不断变化的。以买衣服为例,随着时下流行和用户口味的变化,用户对衣服的品位也会随之变化。用户对衣服偏好的变化会直接影响到对候选衣服的CTR预估。当然,随着用户兴趣的进化,兴趣也可能会发生偏移。举个例子,用户可能在一段时间内喜欢买书,而在另外一段时间内喜欢买衣服。尽管兴趣之间是会互相影响的,但是每个兴趣爱好都有各自的进化历程,并且基本都是独立的。比如,关于书和衣服的品位的变化就基本是独立的。我们在做CTR的时候,只需要关注与目标物品相关的兴趣进化过程。
在兴趣进化层的第一阶段,作者引入了注意力机制,来计算每个GRU的隐状态h_t与目标广告之间的权重关系,也叫做注意力分数。具体计算公式如下:

其中e_a是目标广告的embedding向量,W \in \mathbb R^{n_H \times n_A}n_A是广告embedding向量的维度。注意力分数可以反映广告e_a和输入h_t之间的关系,关系越紧密,则分数越高。
接下来介绍一些将GRU和注意力结合的机制,它们共同来对用户兴趣进化过程进行建模。作者一共提出了3种模型,分别是AIGRU、AGRU、AUGRU。

  • GRU with attentional input (AIGRU)
    这种方式将attention直接作用于输入,无需修改GRU的结构,即兴趣进化层GRU的输入是兴趣提取层GRU的隐状态h_t与对应注意力分数a_t的乘积:
  • Attention based GRU(AGRU)
    这种方式需要修改GRU的结构,此时hidden state的输出变为:
  • GRU with attentional update gate (AUGRU)
    这种方式需要修改GRU的结构,此时hidden state的输出变为:

这里需要注意一下后两种,他们主要是修改了GRU内部的计算公式,GRU的整体输入和输出还是没变的。

代码实践

待补充

参考

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容