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

DSINDeep_Session_Interest_Networkcenter_0">
推荐系统(十三)阿里深度兴趣网络(三):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_38">二、DSIN整体网络结构

<a class=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 \tag{1} 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) \tag{2} 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) \begin{aligned} (input\ gate)\ \ \ i_t &= \sigma(W_{xi}I_t + W_{hi}h_{t-1} + W_{ci}c_{t-1} + b_i) \\ (forget\ gate)\ \ \ f_t &= \sigma(W_{xf}I_t + W_{hf}h_{t-1} + W_{cf}c_{t-1} + b_f) \\ (cell\ vector)\ \ \ c_t &= f_tc_{t-1} + i_ttanh(W_{xc}I_t + W_{hc}h_{t-1} + b_c) \\ (output\ gate)\ \ \ f_t &= \sigma(W_{xo}I_t + W_{ho}h_{t-1} + W_{co}c_{t-1} + b_f) \\ h_t &= o_t tanh(c_t) \end{aligned} \tag{3} (input gate)   it(forget gate)   ft(cell vector)   ct(output gate)   ftht=σ(WxiIt+Whiht1+Wcict1+bi)=σ(WxfIt+Whfht1+Wcfct1+bf)=ftct1+ittanh(WxcIt+Whcht1+bc)=σ(WxoIt+Whoht1+Wcoct1+bf)=ottanh(ct)(3)

六、Session Interest Activating Layer

这边直接照搬DIN中的attention,也就是用target item和抽取得到的用户兴趣直接算相似度当做attention score,DSIN这里做了一点改动,不仅用target item和Session Interest Interacting Layer得到的 H k H_k Hk算相似度,也用target item和Session Interest Extractor Layer得到的 I k I_k Ik算相似度,如下图中红色框起来的部分所示:
<a class=DSIN_attention" width="560" height="477" />

  • target item和Session Interest Extractor Layer得到的 I k I_k Ik算相似度:

a k I = exp ⁡ ( I k W I X I ) ∑ k K exp ⁡ ( I k W I X I ) U I = ∑ k K a k I I k (4) \begin{aligned} a^I_k &= \frac{\exp(I_kW^IX^I)}{\sum_k^K\exp(I_kW^IX^I)} \\ U^I &= \sum_k^Ka^I_kI_k \end{aligned} \tag{4} akIUI=kKexp(IkWIXI)exp(IkWIXI)=kKakIIk(4)

  • target item和Session Interest Interacting Layer得到的 H k H_k Hk算相似度
    a k H = exp ⁡ ( H k W H X I ) ∑ k K exp ⁡ ( H k W K X I ) U H = ∑ k K a k H H k (5) \begin{aligned} a^H_k &= \frac{\exp(H_kW^HX^I)}{\sum_k^K\exp(H_kW^KX^I)} \\ U^H &= \sum_k^Ka^H_kH_k \end{aligned} \tag{5} akHUH=kKexp(HkWKXI)exp(HkWHXI)=kKakHHk(5)

最终,把user profile、item profile的embedding向量与上面得到的 U I U^I UI U H U^H UH做一个concat,灌入MLP中。

七、总结

没什么好说的,灌水文一篇,375在招手…,难怪清华推荐会议列表中会把IJCAI降为B类…




参考文献

[1]: Feng Y, Lv F, Shen W, et al. Deep session interest network for click-through rate prediction[J]. arXiv preprint arXiv:1905.06482, 2019.


http://www.niftyadmin.cn/n/966974.html

相关文章

20个学习CSS的绝佳网站-让你从入门到精通

CSS&#xff08;层叠样式表&#xff09;是一种简单的设计语言&#xff0c;能够将页面变漂亮这回事儿变的简单化。在HTML和XHTML中设定页面的样式&#xff0c;这是最常用的应用。但也可以应用于 XML类的文档&#xff0c;包括SVG和XUL。他负责管理网页的设计和外观。使用CSS&…

当所有大小公司都在用GitHub时,你需要这项技能!

当所有大小公司都在用GitHub时&#xff0c;你需要这项技能&#xff01;GitHub官网&#xff1a;https://github.com/ GitHub本身的子项目&#xff1a;https://github.com/github 国内也有代码托管平台&#xff1a; http://git.oschina.net/ https://code.csdn.net 各种平台的Git…

推荐系统(十四)多任务学习:阿里ESMM(完整空间多任务模型)

推荐系统&#xff08;十四&#xff09;多任务学习&#xff1a;阿里ESMM&#xff08;完整空间多任务模型&#xff09;推荐系统系列博客&#xff1a; 推荐系统&#xff08;一&#xff09;推荐系统整体概览推荐系统&#xff08;二&#xff09;GBDTLR模型推荐系统&#xff08;三&a…

第三代酷睿i3处理器_酷睿十代可上车!价格公布,附装机神器

装机本文支持暗黑模式如教长半月前所说的那样&#xff0c;酷睿十代桌面级处理器和 400 系列主板于 05 月 20 日正式“解禁”&#xff0c;届时用户可在各大电商平台和经销商处购买&#xff0c;新一轮的装机热潮即将开始&#xff01;此次酷睿十代最大的升级就是全系标配超线程技术…

Docker推出了Docker云,给大家介绍下哈!

Docker推出了Docker云&#xff0c;给大家介绍下哈&#xff01;收到了Docker官网的邮件邀请&#xff0c;他们推出了Docker云&#xff1a;https://cloud.docker.com账号信息栏目下有&#xff1a;云提供商&#xff1a;目前支持AWS&#xff0c;Digital Ocean&#xff0c;Microsoft …

电脑任何字都打不出来_买个超长的电脑屏,玩啥游戏都不舒服,哈哈……经过网友指点,事业真大!...

很多人都是非常喜欢打电脑游戏的&#xff0c;尤其是对年轻人来说就算打一整宿的游戏也可以做到的&#xff0c;不过打游戏也是需要有着一个很好的配置了&#xff0c;而像图中的这位网友&#xff0c;他在之前打游戏当中每次都嫌自己的电脑显示屏小&#xff0c;在这次中他就是购买…

项目设计之---------- 设计模式的应用(模式的集合,不像之前每个模式分开写了)...

考虑到每个模式写一篇文章太零碎&#xff0c;现在写在一起好了 1、观察者模式的应用 一个观察者模式&#xff0c;该模式要求用户改变自己的配置的时候&#xff0c;相应的监听者更新、保存数据等ConfigChangeListener是观察者父类&#xff0c;其子类是具体观察者&#xff0c;Con…

c语言现代程序设计 现代方法_现代简约家居的装修方法 现代简约家具有什么选购技巧...

想了解更多装修知识关注惠民家居频道现如今&#xff0c;大部分人都想要获得一个宁静祥和的居住环境来放松身体&#xff0c;因此关心现代简约家居的装修方法的人也就越来越多了&#xff0c;那么具体应该怎么做?在家具的选择方面又有什么技巧呢?接下来&#xff0c;小编就为您一…