个人公众号,欢迎关注
YouChouNoBB
论文地址:https://arxiv.org/pdf/1905.06482.pdf
这是一篇对用户序列建模的论文,用户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表示如下,其中是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, 其中为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为输出门
为用户t个session的兴趣作为输入,一些计算如下:
记忆门由输入信息,上两个隐藏状态h,c计算得到
遗忘门也由输入信息,两个隐藏状态h,c计算得到,只是模型参数不一样
隐藏态由遗忘权重乘上一个隐藏态+记忆权重乘输入和隐藏态h的tanh变换得到
输出门由输入信息,上一个隐藏态h和隐藏态c计算得到
隐藏态由输出门和隐藏态c的tanh变换得到
为激活函数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兴趣
其中为session兴趣,
为target item,W为模型权重参数,
为第k个session的权重
所以为加权后的session兴趣
同理,通过一样的计算方式,可以由Bi-LSTM产生的隐藏态H得到交互的session兴趣
所以为加权后的交互session兴趣
最后将user画像,item画像,session兴趣,交互session兴趣concat,经过多层MLP输出
(这里有个疑问,为啥是softmax,不是说好的ctr吗,难道是想表达softmax是通用的输出,sigmoid只是其中一种形式?)
个人公众号,欢迎关注
YouChouNoBB