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

Posted 天泽28

tags:

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

推荐系统(十三)阿里深度兴趣网络(三):DSIN模型(Deep Session Interest 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)
  12. 推荐系统(十二)阿里深度兴趣网络(二):DIEN模型(Deep Interest Evolution Network)

写在前面:

这篇发表在IJCAI’2019S上的文章,实际上有点对不起标题,与阿里前两篇paper(DIN,DIEN)相比,DSIN是一篇典型的离线跑跑实验,发发paper(俗称灌水?)的论文,我的标题把它与DIN 、DIEN组成一个系列,甚至觉得这是对前两篇的不公,毕竟质量悬殊太大…个人对这篇论文的评价:估计写这篇paper的团队纯粹为了KPI,他们大概率根本部署到线上,以这篇paper所描述网络结构的复杂度,即使以阿里的工程能力,个人都觉得很难部署到线上,所以这篇paper只提到了在阿里真的数据集(记住是数据集)上做了评估,只字未提部署到淘宝的线上推荐服务中。这篇文章在工业界没有引起什么注意,我想原因也是这个。

本篇博客将会从以下几个方面介绍DSIN:

  1. 动机
  2. DSIN整体网络结构
  3. Session Division Layer
  4. Session Interest Extractor Layer
  5. Session Interest Interacting Layer
  6. Session Interest Activating Layer
  7. 总结

一、动机

DSIN的动机挺好的,无论是在DIN还是DIEN中,对于用户行为序列都没有引入session的概念,比如DIEN中直接用用户过去14天的点击序列,实际上这会导致两个问题:1. 序列长度过长,当序列长度达到数百个时,即使有attention的存在,效果也会受到一定影响。2. 跨session的序列item,用户点击的item存在突变,比如前一个session内点的都是电子产品相关的,后一个就是服饰。也就是说session与session间存在异构性,同一个session内的item存在同构性。

动机是非常好的立意点,失败(对于工业场景,对于发paper可以说是成功点)的地方在于为了发paper,各种transformer,双向LSTM堆起来,导致工业场景根本没法用。

二、DSIN整体网络结构


整体网络结构自从往上依次为:

  1. session division layer:用于把用户行为序列切分为一个个session,这里按照时间间隔大于30min来切分的。
  2. session interest extractor layer:用于提取用户session内的兴趣
  3. session interest interacting layer:用于学习session内用户兴趣的顺序关系
  4. session interest activating layer:和DIN、DIEN中一样,算一下target item和用户兴趣因向量之间的相关性当做attention分数。

三、Session Division Layer

这一层没什么,就是简单的把用户行为序列切分成多个session,session切分的依据是时间间隔大于30min。原文:The segmentation of users’ ses- sions exists between adjacent behaviors whose time interval is more than 30 minutes。需要注意的是,这里每个item都是embedding向量,比如session k,用公式表示为: Q k = [ b 1 , . . . , b T ] ∈ R T ∗ d m o d e l Q_k=[b_1,...,b_T] \\in R^T*d_model Qk=[b1,...,bT]RTdmodel T T T是session内行为item的个数, b i b_i bi为第 i i i个行为的embedding向量,embedding size为 d m o d e l d_model dmodel

四、Session Interest Extractor Layer

这一层差点直接整个transformer过来,multi-head self-attention整起来,当然直接抄似乎又没什么创新点,要被审稿人喷啊,那好,把自注意力中的positional encoding魔改下,提出个Bias Encoding(BE),直接看公式吧:
B E ( k , t , c ) = W k K + W t T + W c C (1) BE_(k,t,c) = W^K_k + W^T_t + W^C_c \\tag1 BE(k,t,c)=WkK+WtT+WcC(1)
W k K W^K_k WkK 表示第 k k k个session的bias vector, W t T W^T_t WtT表示session内第 t t t个行为的bias vector, W c C W^C_c WcC表示行为embedding向量中第 c c c个bit。所以,用户行为最终的embedding向量 Q Q Q也就变成了 Q = Q + B E Q = Q+BE Q=Q+BE

然后,套了一波Multi-head Self-attention,关于Multi-head Self-attention一直久闻其大名,但毕竟在推荐系统中用的还不错,所以也没有很细致的去探究,后面有时间一定补一篇关于Multi-head Self-attention的博客。
经过Multi-head Self-attention后,得到 I k Q I_k^Q IkQ,即用户第 k k k个session的向量(有 Q Q Q个item),因此还需要做个pooling,DSIN这里做的average pooling,即:
I k = A V G ( I K Q ) (2) I_k = AVG(I_K^Q) \\tag2 Ik=AVG(IKQ)(2)

五、Session Interest Interacting Layer

这一层,直接套了个双向LSTM,没太搞明白套双向的目的,论文中也没有介绍,另外在DIEN中极力克制时间复杂度使用GRU的情况下,这篇DSIN竟然本质倒末又用回了LSTM,并且还是双向的!!!关于LSTM可以参见本人博客:LSTM(Long Short-Term Memory),我这里为了和论文符号保持一致,直接搬下论文的公式:
( i n p u t   g a t e )     i t = σ ( W x i I t + W h i h t − 1 + W c i c t − 1 + b i ) ( f o r g e t   g a t e )     f t = σ ( W x f I t + W h f h t − 1 + W c f c t − 1 + b f ) ( c e l l   v e c t o r )     c t = f t c t − 1 + i t t a n h ( W x c I t + W h c h t − 1 + b c ) ( o u t p u t   g a t e )     f t = σ ( W x o I t + W h o h t − 1 + W c o c t − 1 + b f ) h t = o t t a n h ( c t ) (3) \\beginaligned (input\\ gate)\\ \\ \\ i_t &= \\sigma(W_xiI_t + W_hih_t-1 + W_cic_t-1 + b_i) \\\\ (forget\\ gate)\\ \\ \\ f_t &= \\sigma(W_xfI_t + W_hfh_t-1 + W_cfc_t-1 + b_f) \\\\ (cell\\ vector)\\ \\ \\ c_t &= f_tc_t-1 + i_ttanh(W_xcI_t + W_hch_t-1 + b_c) \\\\ (output\\ gate)\\ \\ \\ f_t &= \\sigma(W_xoI_t + W_hoh_t-1 + W_coc_t-1 + b_f) \\\\ h_t &= o_t tanh(c_t) \\endaligned \\tag3 (input gate)   it(forget gate)   ft(cell vector)   ct(output gate)   ftht=σ(WxiIt+Whiht1+Wcict1+bi)=σ(WxfIt+Whfht1+Wcfct1+b以上是关于推荐系统(十三)阿里深度兴趣网络:DSIN模型(Deep Session Interest Network)的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

阿里深度兴趣网络模型paper学习