DSIN:Deep Session Interest Network for Click-Through Rate Prediction

个人公众号,欢迎关注

YouChouNoBB

论文地址:https://arxiv.org/pdf/1905.06482.pdf

代码实现:GitHub - shenweichen/DSIN: Code for the IJCAI'19 paper "Deep Session Interest Network for Click-Through Rate Prediction"

这是一篇对用户序列建模的论文,用户session内的行为相似,session之间的行为差异较大.其中session根据行为发生的时间进行划分,然后进行兴趣提取,兴趣交互,兴趣激活

重点介绍4个layer

1.Session Division Layer  : session划分

2.Session Interest Extractor Layer :session兴趣提取

3.Session Interest Interacting Layer :session兴趣交互

4.Session Interest Activating Layer : session兴趣激活

1.Session Division Layer

将用户行为序列S划分成Q,第k个session表示如下,其中b_{i}是session中第i个item,使用时间间隔超过30分钟来划分session

需要讨论的点:session是否可以直接对item的embedding通过hash来区分,这样可以将相似的item划分到同一个session,不相似的item,不会出现在同一个session,可能需要设置超参来指定划分多少个session

 2.Session Interest Extractor Layer

在同一个session类的item会彼此类似,但是也会存在一些有差异的item,为了降低这种不相关item的影响,对每个session使用Multi-Head Self-Attention

1)Bias Encoding

为了利用上序列之间的顺序,所以加上位置信息的embedding作为attention的输入.包括session的位置,item在session中的位置,在behavior embedding中unit的位置

对Bias Encoding的定义如下,其中k为session的index,t为item在session内的index,c为unit的index

 所以用户的行为序列可以被更新为如下表达,即原始序列+bias encoding

 2)Muti-Head Self-Attenntion

在推荐系统中,用户的行为会被多种因素影响,比如颜色,款式,价格,评价等.所以可以使用Muti-Head Self-Attenntion 机制来从不同空间表达用户兴趣.我们重新定义一下用户的session序列Qk,如下表示,k为session的index,h为multi-head的index,H为head的数量

 所以head的输出可由self-attention计算,其中W为可学习权重(模型参数),QKV为attention中的query,key,value.可以看到W前面的输入都是相同的,即query=key=value,所以为self-attention, 其中d_{model}为embedding size 

然后将多个head concat起来输入FFN(feed-forward network前馈网络)

如下为FFN示意图,可以看到multi-head之后,经过了多次Add&Norm操作,Add为residual connections,即残差连接,其思想可以参考巨作ResNet(一篇大道至简的论文).

 

最后,用户第k个session的兴趣可以经过avg-pooling表达为

 

需要注意的是,在不同的session中,模型参数是共享的.也就是说不同session都是通过同一个网络模块计算得到session兴趣

3.Session Interest Interacting Layer

因为用户session兴趣与上下文关系保持着顺序关系,可以对这样的动态变化进行建模,使session兴趣的表达更为丰富.论文使用了Bi-LSTM来建模这种顺序关系,Bi即双向的意思,LSTM原理可以参考我的另一篇文章{GRU&LSTM},LSTM示意图如下,有两个隐藏状态,h和c,x为输入,y为输出,z为一些中间计算结果得到的门控

 在本文的模型中,i为记忆门,f为遗忘门,h和c为隐藏状态,作为下一次计算的输入,o为输出门

I_{t}为用户t个session的兴趣作为输入,一些计算如下:

记忆门i_{t}由输入信息,上两个隐藏状态h,c计算得到

遗忘门f_{t}也由输入信息,两个隐藏状态h,c计算得到,只是模型参数不一样

隐藏态c_{t}遗忘权重乘上一个隐藏态+记忆权重乘输入和隐藏态h的tanh变换得到

输出门o_{t}由输入信息,上一个隐藏态h和隐藏态c计算得到

隐藏态h_{t}由输出门和隐藏态c的tanh变换得到

\sigma为激活函数sigmoid,以上这些向量的size和输入是一样的

 前面提到论文使用的Bi-LSTM,也就是双向LSTM,ft为forward,bt为backward

所以隐藏态H可以表示为如下,此外隐藏态H作为下一阶段的输入

 4.Session Interest Activating Layer

session兴趣还需要考虑和target item之间的相关性,所以类似DIN的思想,可以算session和target item的相似度作为session的权重,以此来激活session兴趣

其中I_{k}为session兴趣,X_{I}为target item,W为模型权重参数,a_{k}^{I}为第k个session的权重

所以U^{I}为加权后的session兴趣

同理,通过一样的计算方式,可以由Bi-LSTM产生的隐藏态H得到交互的session兴趣

所以U^{H}为加权后的交互session兴趣

 最后将user画像,item画像,session兴趣,交互session兴趣concat,经过多层MLP输出

(这里有个疑问,为啥是softmax,不是说好的ctr吗,难道是想表达softmax是通用的输出,sigmoid只是其中一种形式?)

个人公众号,欢迎关注

YouChouNoBB

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值