推荐系统阿里深度兴趣网络:DIEN模型(Deep Interest Evolution Network)

Posted 天泽28

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统阿里深度兴趣网络:DIEN模型(Deep Interest Evolution Network)相关的知识,希望对你有一定的参考价值。

推荐系统(十二)阿里深度兴趣网络(二):DIEN模型(Deep Interest Evolution Network)

推荐系统系列博客:

  1. 推荐系统(一)推荐系统整体概览
  2. 推荐系统(二)GBDT+LR模型
  3. 推荐系统(三)Factorization Machines(FM)
  4. 推荐系统(四)Field-aware Factorization Machines(FFM)
  5. 推荐系统(五)wide&deep
  6. 推荐系统(六)Deep & Cross Network(DCN)
  7. 推荐系统(七)xDeepFM模型
  8. 推荐系统(八)FNN模型(FM+MLP=FNN)
  9. 推荐系统(九)PNN模型(Product-based Neural Networks)
  10. 推荐系统(十)DeepFM模型
  11. 推荐系统(十一)阿里深度兴趣网络(一):DIN模型(Deep Interest Network)

阿里关于深度兴趣网络的探索共有3篇论文发表,按照发表年份的先后分别是:DIN、DIEN和DSIN。上一篇博客介绍了开篇之作DIN,本篇博客来介绍DIEN。DIEN相比较DIN多了个E(Evolution),即兴趣的进化转移。
本篇博客将会从以下几个方面介绍DIEN:

  1. 动机
  2. 整体网络结构
  3. Interest Extractor层及辅助loss
  4. Interest Evolving层
  5. GRU的改进AUGRU
  6. 在线工程

一、动机

论文中描述的动机认为:目前的CTR预估模型都直接把用户行为当做用户兴趣,简单的做个embedding后就进入到MLP中,并没有挖掘潜藏在这些行为之后用户的兴趣。原文如下:

most interest models including DIN regard the behavior as the interest directly, while latent interest is hard to be fully reflected by explicit behavior. Previous methods neglect to dig the true user interest behind behavior. Moreover, user interest keeps evolving, capturing the dynamic of inter- est is important for interest representation.

以下一段话,纯属个人瞎猜,各位看官姑且看看就好:
个人在这里盲猜最本质的动机还是总觉得用户行为是个序列,提到序列嘛,第一想法肯定是RNN啊,但是吧,用户行为序列还和文本序列不太一样,文本序列有明确的语法制约,比如【我是好人】就是一句有明确含义的话,打乱下顺序【人我是好】就明显不具有含义了。但是用户行为序列,比如点击行为序列【牛仔裤–>哈伦裤–>阔腿裤】和【哈伦裤–>牛仔裤–>阔腿裤】顺序改变下,其实是没什么影响的,也就是说用户行为序列对于『顺序』实际上不是很敏感的,这里再去硬套RNN似乎有些牵强附会。但是吧,你得装啊(王蒙语录,哈哈哈哈),所以,DIEN说我是对用户行为背后兴趣进化过程建模,那么RNN总该可以用了吧(当然也不是普通的RNN,而是阿里改良后的),毕竟兴趣进化过程(注意是进化过程)这种东西你可以说和时序无关,也可以说和时序有关。

言归正传,阿里在KDD版本DIN的论文中也提到了一段话,与我上面的想法不谋而合,DIN论文原话:

We have tried LSTM to model user historical behavior data in the sequential manner. But it shows no improvement. Different from text which is under the constraint of grammar in NLP task, the sequence of user historical behaviors may contain multiple concurrent interests. Rapid jumping and sudden ending over these interests causes the sequence data of user behaviors to seem to be noisy. A possible direction is to design special structures to model such data in a sequence way. We leave it for future research.

从这里可以看出,实际上阿里早在DIN版本中就尝试过了用RNN来对用户行为序列建模,但并没有什么效果,原因也正如我上面所说的。阿里在这里说了一句『 A possible direction is to design special structures to model such data in a sequence way』这也为DIEN的诞生埋下了伏笔,也就是DIEN中AUGRU的设计,所以还是不得不佩服阿里妈妈盖坤团队不停思考不停实践的精神,点赞。

下面,我们就来一一拆解这篇论文。

二、整体网络结构

图1. DINE整体网络结构
从图1中能够看出,DIEN的整体结构过程为:1)特征(User Profile feature, User Behavior feature, Ad feature and Context feature四大类),2)经过Embedding层得到低维稠密的embedding向量,3)然后进入到Interest Extractor层,这里就是个普通的GRU,为了更好的训练,引入了辅助Loss。4)然后进入到Interest Evolving层,5)最终与ad feature,Context feature和User Profile feature的向量做concat,进入到多层全连接层(MLP),然后BP训练。

因为引入了辅助loss,因此整个DIEN模型的loss为:
L = L t a r g e t + α ∗ L a u x (1) L = L_target + \\alpha * L_aux \\tag1 L=Ltarget+αLaux(1)
其中 L t a r g e t L_target Ltarget为全连接层后的交叉熵loss,公式为:
L t a r g e t = − 1 N ∑ ( x , y ) ∈ D ( y log ⁡ p ( x ) + ( 1 − y ) log ⁡ ( 1 − p ( x ) ) ) (2) L_target = -\\frac1N\\sum_(x,y)\\in D(y\\log p(x) + (1-y)\\log (1-p(x))) \\tag2 Ltarget=N1(x,y)D(ylogp(x)+(1y)log(1p(x)))(2)
L a u x L_aux Laux为辅助loss,为了更好的训练Interest Extractor层,其公式为:
L a u x = − 1 N ∑ i = 1 N ∑ t ( log ⁡ σ ( h t i , e b i [ t + 1 ] ) + log ⁡ ( 1 − σ ( h t i , e ^ b i [ t + 1 ] ) ) ) (3) L_aux = -\\frac1N\\sum_i=1^N\\sum_t(\\log \\sigma(h_t^i, e^i_b[t+1]) + \\log (1-\\sigma(h_t^i, \\hate^i_b[t+1]))) \\tag3 Laux=N1i=1Nt(logσ(hti,ebi[t+1])+log(1σ(hti,e^bi[t+1])))(3)
关于这个公式会在第四部分进行详细解释,这里大家就知道有这个公式的存在就可以了。

三、Interest Extractor层及辅助loss

interest extractor是为了从用户行为序列中抽取用户兴趣。首先,阿里这里使用了用户过去两周即14天的点击商品与商品类目序列(按照目前淘宝的体量,个人估计这个序列应该会在100以上)。前面也说过到,既然是序列,肯定是RNN,从效果与效率的角度考虑首选肯定是GRU,这里再来温习下GRU吧,毕竟如果不是一直搞NLP的同学,可能只会GRU有个大体的印象了,关于GRU的具体细节,参见我之前的博客:GRU,在这里,我只列出公式(为了与本博客贴合,符合表达与DIEN里一致):
u t = σ ( W u i t + U u h t − 1 + b u ) r t = σ ( W r i t + U r h t − 1 + b r ) h t ^ = t a n h ( W h i t + r t ∘ U h h t − 1 + b b ) h t = ( 1 − u t ) ∘ h t − 1 + u t ∘ h t ^ (4) \\beginaligned u_t &= \\sigma(W^ui_t + U^uh_t-1 + b^u) \\\\ r_t &= \\sigma(W^ri_t + U^rh_t-1 + b^r) \\\\ \\hath_t &= tanh(W^hi_t + r_t \\circ U^h h_t-1 + b^b) \\\\ h_t &= (1-u_t) \\circ h_t-1 + u_t \\circ \\hath_t \\endaligned \\tag4 utrtht^ht=σ(Wuit+Uuht1+bu)=σ(Writ+Urht1+br)=tanh(Whit+rtUhht1+bb)=(1ut)ht1+utht^(4)
其中 u t u_t ut为更新门, r t r_t rt为重置门, ∘ \\circ 为点乘,即对应元素相乘。

如果就这么直接硬套GRU,那么就又回到前面开头说的。直接用GRU显然存在两个问题:

  1. 隐藏状态 h t h_t ht 仅仅只是抓住了用户行为序列的依赖关系并不能有效的反映出用户兴趣,前面也说了用户行为序列的『顺序』其实没啥用(大家可以实验试一试,除了增加了点复杂度&

    以上是关于推荐系统阿里深度兴趣网络:DIEN模型(Deep Interest Evolution Network)的主要内容,如果未能解决你的问题,请参考以下文章

    DIEN: 阿里点击率预估之深度兴趣进化网络

    DIEN: 阿里点击率预估之深度兴趣进化网络

    推荐系统(十三)阿里深度兴趣网络:DSIN模型(Deep Session Interest Network)

    推荐系统阿里深度兴趣网络:DIN模型(Deep Interest Network)

    推荐系统阿里深度兴趣网络:DIN模型(Deep Interest Network)

    推荐系统(十三)阿里深度兴趣网络:DSIN模型(Deep Session Interest Network)