一、提出动机
这个模型依然是研究如何更好地从用户的历史行为中捕捉到用户的动态兴趣演化规律。
1.1、序列本身的特点:
其实用户点击序列有他自己本身的特点:用户过去可能有很多历史点击行为,按照用户的点击时间排好序,比如[item3,item45,item69,item21,...],大部分情况下用户的兴趣是非常广泛且多变的,那么这一大串序列的商品中,往往出现的一个规律就是再比较短的时间间隔内的商品往往会很相似,时间间隔长了之后,商品之间就会出现很大的差别,这个是很容易理解的,一个用户再半个小时之内的浏览点击的几个商品的相似度和一个用户上午点击和晚上点击的商品的相似度很可能是不一样的。
1.2、DIEN及之前模型的缺点
但DIEN就是只关注了如何去改进网络,而忽略了用户历史行为序列本身的这种特点,直接把一大串行为序列放入GRU让它自己去学,如果一大串序列一块让GRU学习的话,往往用户的行为快速改变和突然终止的序列会有很多噪声点,不利于模型的学习。
1.3、DSIN简介
所以,DSIN就是从序列本身的特点出发,把一个用户的行为序列分成了多个会话,所谓会话,其实就是按照时间间隔把序列分段,每一段的商品列表就是一个会话,那这时候,会话里面每个商品之间的相似度就比较大了,而会话与会话之间商品相似度就可能比较小。
图片下方的数字表示单击当前项目的时间与单击第一个项目的时间之间的时间间隔(以秒为单位),我们将她的行为序列分为3个会话。每次会话的时间间隔超过30分钟时,会话将按照这一原则进行划分。用户在会话1中主要浏览裤子,在会话2中主要浏览戒指,并且在会话3中主要浏览外套。
DSIN通过利用用户的多个历史会话来对CTR预测任务中的用户顺序行为进行建模。
- 首先,分段是必须的,也就是用户行为序列输入到模型之前,要按照固定的时间间隔(比如30分钟)给他分开段,每一段里面的商品序列称为一个会话session,这个叫做会话划分层。
-
然后,就是学习商品时间的依赖关系或者序列关系,由于上面把一个整的行为序列划分成了多段,那么再这里就是每一段的商品时间的序列关系要进行学习,当然我们说可以用GRU,不过这里作者用了多头的注意力机制,这个东西是在多个角度研究一个会话里面各个商品的关联关系,进而提取用户对每个会话的兴趣。相比GRU来讲,没有啥梯度消失,并且可以并行计算,比GRU更加强大。这个叫做会话兴趣提取层。
-
使用双向的LSTM研究会话与会话的关系其实就是再学习用户兴趣的变化规律,不仅看从现在到未来的兴趣演化,还能学习未来到现在的变化规律,这个叫做会话交互层。
-
由于不同的会话兴趣对目标项的影响不同,最后我们设计了本地激活单元来聚合它们以形成最终的用户兴趣表示即会话兴趣局部激活层。
二、DSIN模型架构
在推荐系统中,用户的行为序列由多个历史会话组成。
用户在不同的会话中表现出不同的兴趣。此外,用户的会话兴趣顺序地彼此相关。
DSIN的目的是提取用户在每个会话中的会话兴趣,并捕捉会话兴趣的顺序关系。
-
2.1、模型概述
如图所示,DSIN在MLP之前由两部分组成。
- 一种是从用户特征User Profile和项目特征Item Profile转换的嵌入向量。
- 另一个模型对用户行为进行建模,自下而上分为四层:(1)会话划分层,将用户行为序列划分为会话;(2)会话兴趣提取层,提取用户的会话兴趣;(3)会话兴趣交互层,捕捉会话兴趣之间的顺序关系;(4)会话兴趣激活层将本地激活单元应用于用户对目标项的会话兴趣。
最后将会话兴趣激活层的输出以及用户模型和项目模型的嵌入向量送入MLP进行最终预测。
2.2、会话划分层
为了更精确地提取用户的会话兴趣,我们将用户的行为序列S划分为会话Q,其中第k个会话Qk = [b1;...;bi;.;bT] ∈ RT×dmodel,T是我们在会话中保持的行为的数量,bi是用户在会话中的第i个行为。用户会话的分割存在于时间间隔超过30分钟的相邻行为之间。
在DSIN中,我们将用户的行为序列划分为多个会话,原因有两个:(i)用户的行为在每个会话中通常是同质的;(ii)用户的会话兴趣遵循顺序模式,更适合于序列建模。
2.3、会话兴趣提取层
用户在Session内的行为是高度相关的,但在每个会话中可能会存在一些用户的随意行为,这些随意行为可能是噪声,如果直接进行Sum/Avg Pooling就会被噪声行为带偏。为了捕捉同一会话中行为之间的内在关系并减少那些不相关行为的影响,
DSIN使用Multi-head Self-attention对Session内的序列进行建模,生成Session的兴趣表达 。
2.3.1、Bias Encoding
为了利用序列的顺序关系,自注意机制对输入embedding进行位置编码。
此外,还需要捕捉会话的顺序关系以及不同表示子空间中存在的偏差。
因此,我们在位置编码的基础上提出了偏置编码BE ∈ RK×T×dmodel,其中BE中的每个元素定义如下:
其中wK ∈ RK是会话的偏置向量,k是会话的索引,wT ∈ RT是会话中位置的偏置向量,t是会话中行为的索引,wC ∈ Rdmodel是行为embedding中单元位置的偏置向量,c是行为embedding中单元的索引。
添加偏置编码后,用户行为会话Q更新如下:
2.3.2、Multi-head Self-attention
在推荐系统中,用户的点击行为受到各种因素(例如颜色、样式和价格)的影响。
多头自我注意可以捕捉不同表征子空间中的关系。
令Qk = [Qk 1;...;Qkh],其中Qkh ∈ RT×dh是Qk的第h个头,H是头的数目,dh = dmodel/h。
其中WQ、WK、WQ是线性矩阵。然后将不同头部的向量连接起来,然后送入前馈网络:
其中FFN(·)是前馈网络,WO是线性矩阵。我们还依次进行了残差连接和层归一化。用户的第k个会话兴趣Ik计算如下:
其中Avg(·)是平均池化。注意,权重在不同会话的自注意机制中是共享的。
2.4、会话兴趣交互层
用户的会话兴趣与上下文兴趣之间存在顺序关系,为了丰富会话兴趣的表示,使用Bi-LSTM捕捉session之间的顺序关系。这样历史每个Session的兴趣表达,都包含了下上文Session信息。
LSTM内存单元实现如下:
其中σ(·)是逻辑函数,i、f、o和c是输入门、遗忘门、输出门和与It具有相同大小的单元向量。双向意味着存在前向和后向RNN,隐藏状态H计算如下:
其中hft是前向LSTM的隐藏状态,而hbt是后向LSTM的隐藏状态。
2.5、会话兴趣激活层
与目标项目相关度越高的用户会话兴趣对用户是否点击目标项目的影响越大。用户会话兴趣的权重需要重新分配。
三、实验评价指标
AUC(Area Under ROC Curve)是随机选取的正样本排序高于负样本的概率,反映了模型的排序能力。其定义如下:
其中D+是所有正例的集合,D−是所有负例的集合,f(·)是模型对样本x的预测结果,I(·)是指标函数。