CTR深度学习模型之 DSIN(Deep Session Interest Network) 论文解读

2023-10-28

之前的文章讲解了DIEN模型:CTR深度学习模型之 DIEN(Deep Interest Evolution Network) 的理解与示例,而这篇文章要讲的是DSIN模型,它与DIEN一样都从用户历史行为中抽取兴趣表示,但不同的是DSIN把历史行为划分成了不同的Session,并且使用Transformer对每个Session内的行为抽取特征。

模型解读

整体模型的结构如下:

在这里插入图片描述

首先看看右下部分的矩形区域,这部分主要是对用户的行为序列建模,其中包含了4个子模块。

1. Session Divsion Layer

从下往上看的话,最底层的粉色区域是Session分割层:

在这里插入图片描述

首先是把用户的行为序列 S = b 1 , b 2 , . . . B N S={b_1, b_2, ... B_N} S=b1,b2,...BN 划分成K个Session会话 Q 1 , Q 2 , . . . Q K Q_1, Q_2, ... Q_K Q1,Q2,...QK ,不同的Session直接的间隔大于30分钟,同一Session内的序列 b 1 , b 2 , . . . , b T {b_1, b_2, ..., b_T} b1,b2,...,bT 的间隔小于30分钟。

2. Session Interest Extractor Layer

得到K个Session后,输入到黄色的Session兴趣抽取层,最终得到K个Session的兴趣表示:

在这里插入图片描述

这一层把每个Session的序列数据 Q k Q_k Qk 和对应的 bias encoding 结合起来,通过Transformer的 Multi-head Self-Attention机制提取Session内部行为之间的联系,进而得到Session对应的兴趣表示 I k I_k Ik

2.1 bias encoding

首先,这个 bias encoding 是怎么回事?

为了刻画不同Session中不同物品的顺序关系,引入了 bias encoding :
B E ( k , t , c ) = w k K + w t T + w c C BE_{(k,t,c)} = w_k^K + w_t^T + w_c^C BE(k,t,c)=wkK+wtT+wcC
B E ( k , t , c ) BE_{(k,t,c)} BE(k,t,c) 表示第k个session中第t个物品的embedding向量的第c个位置的偏置项,于是输入到 Self-attention 中的数据为:
Q = Q + B E Q = Q + BE Q=Q+BE
其中,Q 包含了 Q 1 , Q 2 , . . . , Q K Q_1, Q_2, ... , Q_K Q1,Q2,...,QK

2.2 Multi-head Self Attention

然后就是每个Session的数据输入到 Transformer 中:

在这里插入图片描述

对于输入的数据,首先进入的是 Multi-head Self-Attention,不同 head 学习到的 Attention 可能有所不同,这好比是用户对商品的注意力头可能放在颜色,款式,价格等不同因素上。假设要使用 H 个 head,那么作者把 Q k Q_k Qk 中每个物品的embedding平分成了H份: Q k = [ Q k 1 , Q k 2 , . . . , Q k H ] Q_k = [Q_{k1}, Q_{k2}, ..., Q_{kH}] Qk=[Qk1,Qk2,...,QkH] ,其中 Q k h ∈ R T × d h , d h = 1 H d m o d e l Q_{kh} \in \mathbb{R}^{T \times d_h}, d_h = \frac{1}{H} d_{model} QkhRT×dh,dh=H1dmodel , 然后就是计算每个 head 的 attention:
 head  h =  Attention  ( Q k h W Q , Q k h W K , Q k h W V ) = softmax ⁡ ( Q k h W Q W K T Q k h T d model  ) Q k h W V \begin{aligned} \text { head }_{h} &=\text { Attention }\left(\mathbf{Q}_{k h} \mathbf{W}^{Q}, \mathbf{Q}_{k h} \mathbf{W}^{K}, \mathbf{Q}_{k h} \mathbf{W}^{V}\right) \\ &=\operatorname{softmax}\left(\frac{\mathbf{Q}_{k h} \mathbf{W}^{Q} \mathbf{W}^{K^{T}} \mathbf{Q}_{k h}^{T}}{\sqrt{d_{\text {model }}}}\right) \mathbf{Q}_{k h} \mathbf{W}^{V} \end{aligned}  head h= Attention (QkhWQ,QkhWK,QkhWV)=softmax(dmodel  QkhWQWKTQkhT)QkhWV
其中 W Q , W K , W V W^Q, W^K, W^V WQ,WK,WV 是线性变换矩阵,是模型需要学习的参数。然后将 Q k Q_k Qk 所有的 head 拼接到一起,然后经过 Add & Norm 层(残差连接与层归一化),输入到前馈神经网络中:
I k Q = F F N ( C o n c a t ( h e a d 1 , h e a d 2 , . . . , h e a d H ) W o ) I_k^Q = FFN(Concat(head_1, head_2, ..., head_H)W^o) IkQ=FFN(Concat(head1,head2,...,headH)Wo)
然后再经过一个 Add & Norm 层。需要注意的是, I k Q I_k^Q IkQ 仍然是 T × d m o d e l T\times d_{model} T×dmodel的大小,于是可以使用一个平均值池化把每个Session的序列转为 d m o d e l d_{model} dmodel 维向量:
I k = A v g ( I k Q ) I_k = Avg(I_k^Q) Ik=Avg(IkQ)

3. Session Interest Interacting Layer

得到了K个Session的兴趣表示 I 1 , I 2 , . . . , I K I_1, I_2, ..., I_K I1,I2,...,IK 后,还需要输入到 Bi-LSTM 中捕获不同Session间的演变过程:

在这里插入图片描述

最终每个时刻的输出为:
H t = C o n c a t ( h f t , h b t ) H_t = Concat (h_{ft}, h_{bt}) Ht=Concat(hft,hbt)
其中 h f t , h b t h_{ft}, h_{bt} hft,hbt 是前向LSTM的隐藏状态和反向LSTM的隐藏状态。

4. Session Interest Activating Layer

经过上面的步骤,得到了两种 Session表示: I 1 , I 2 , . . . , I K I_1, I_2, ..., I_K I1,I2,...,IK 以及 H 1 , H 2 , . . . , H K H_1, H_2, ... , H_K H1,H2,...,HK,接下来就可以分别和目标商品计算相似度了,如下图的紫色部分所示:

在这里插入图片描述

其中的 Activation Unit 结构如下图所示:

在这里插入图片描述

左边的输入是目标物品的 embedding,右边的两个输入都是Session表示,这个注意力单元可以给不同的 Session 分配不同的权重,用来表示某个 Session 和目标物品的相关性,进而可以对各个 Session 进行加权求和:
a k I = exp ⁡ ( I k W I X I ) ) ∑ k K exp ⁡ ( I k W I X I ) U I = ∑ k a k I I k \begin{aligned} a_{k}^{I} &=\frac{\left.\exp \left(\mathbf{I}_{k} \mathbf{W}^{I} \mathbf{X}^{I}\right)\right)}{\sum_{k}^{K} \exp \left(\mathbf{I}_{k} \mathbf{W}^{I} \mathbf{X}^{I}\right)} \\ \mathbf{U}^{I} &=\sum_{k} a_{k}^{I} \mathbf{I}_{k} \end{aligned} akIUI=kKexp(IkWIXI)exp(IkWIXI))=kakIIk

a k H = exp ⁡ ( H k W H X I ) ) ∑ k K exp ⁡ ( H k W H X I ) U H = ∑ k K a k H H k \begin{aligned} a_{k}^{H} &=\frac{\left.\exp \left(\mathbf{H}_{k} \mathbf{W}^{H} \mathbf{X}^{I}\right)\right)}{\sum_{k}^{K} \exp \left(\mathbf{H}_{k} \mathbf{W}^{H} \mathbf{X}^{I}\right)} \\ \mathbf{U}^{H} &=\sum_{k}^{K} a_{k}^{H} \mathbf{H}_{k} \end{aligned} akHUH=kKexp(HkWHXI)exp(HkWHXI))=kKakHHk

其中的X,就是目标item的embedding.

最后一个部分就是把用户特征向量、待推荐物品向量、会话兴趣加权向量 U I U^I UI、带上下文信息的会话兴趣加权向量 U H U^H UH进行横向拼接,输入到全连接层中,得到输出:

在这里插入图片描述

实验结果

使用了两个数据集进行了实验,分别是阿里妈妈的广告数据集(Advertising)和阿里巴巴的电商推荐数据集(Recommender)。如下图所示:

在这里插入图片描述

对于某个商品,attention 可视化结果如下所示:

在这里插入图片描述

参考文章:

Deep Session Interest Network for Click-Through Rate Prediction

DSIN(Deep Session Interest Network )分享

推荐系统论文DSIN:Deep Session Interest Network

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CTR深度学习模型之 DSIN(Deep Session Interest Network) 论文解读 的相关文章

随机推荐