【CTR】Deep Session Interest Network for Click-Through Rate Prediction (IJCAI‘19)

61 篇文章 7 订阅
15 篇文章 1 订阅

DSIN (IJCAI’19)

还是阿里的工作,上文说到了用户的行为序列可能会超长,这里借用Airbnb KDD’18文章的做法,将超长的sequence以间隔超过30分钟为标准,分成了若干个session。

这里借机讨论一下Sequential RS (SRS) 和Session-based RS (SBRS)的区别

SRS和SBRS

image-20211028160602640

session是根据一定时间规则对sequence进行划分的结果,一个sequence由k个session构成。如上图,以30分钟为间隔,将用户行为序列切割成各个session。可以看出同一session内部用户的行为是高度相关的(同构),不同session间用户行为差异比较大(异构)。此外SBRS允许用户是匿名的,即没有用户特征可以用。

Model Overview

image-20211028164226801

这也是一个排序模型,输入是user 特征、候选item 特征以及用户的历史行为序列。和上文的模型关注的点一样,重点在提取用户行为序列的特征。模型分为四层:Session Divsion Layer (Session 划分层)、Session Interest Extractor Layer (Session 兴趣提取层)、Session Interest Interacting Layer (Session 兴趣交互层)、Session Interest Activating Layer (Session 兴趣激活层)

Session Divsion Layer

根据规则将一条长度为 N N N 的Sequence划分成 K K K 个session,每个session包含 T T T个item,多的截断,不足的padding。
Q k = [ b 1 ; … ; b i ; … ; b T ] ∈ R T × d model  \mathbf{Q}_{k}=\left[\mathbf{b}_{1} ; \ldots ; \mathbf{b}_{i} ; \ldots ; \mathbf{b}_{T}\right] \in \mathbb{R}^{T \times d_{\text {model }}} Qk=[b1;;bi;;bT]RT×dmodel 
image-20211029104151256

Session Interest Extractor Layer

顾名思义这层主要是为了获取session的表征。用户在session内的行为是高度相关的,着重考虑过滤意外点击,因此用multi-head self-attention (Transformer);session间行为注重考虑顺序关系,因此用Bias Encoding(类似位置编码)。

Bias Encoding

类似于position encoding,每个session有一个bias、session里每个位置有一个bias、每个位置上的每一维有一个bias,所以: B E ∈ R K × T × d model  \mathbf{B E} \in \mathbb{R}^{K \times T \times d_{\text {model }}} BERK×T×dmodel ,第 k k k 个session的第 t t t 个item的第 $ c $ 个unit的bias为:
B E ( k , t , c ) = w k K + w t T + w c C \mathbf{B E}_{(k, t, c)}=\mathbf{w}_{k}^{K}+\mathbf{w}_{t}^{T}+\mathbf{w}_{c}^{C} BE(k,t,c)=wkK+wtT+wcC
所以经过bias encoding之后,用户的session Q Q Q更新为:
Q = Q + B E \mathbf{Q}=\mathbf{Q}+\mathbf{B E} Q=Q+BE

Transformer

一个session一个session的输入到Transformer中,输入的形状为 Q k ∈ R T × d h \mathbf{Q}_{k} \in \mathbb{R}^{T \times d_{h}} QkRT×dh,Transformer的输出形状也为, I k Q ∈ R T × d h \mathbf{I}_{k}^{Q} \in \mathbb{R}^{T \times d_{h}} IkQRT×dh然后用一个avg pooling操作,将一个session的兴趣特征压缩成一个 d h d_h dh维的向量:
I k = Avg ⁡ ( I k Q ) \mathbf{I}_{k}=\operatorname{Avg}\left(\mathbf{I}_{k}^{Q}\right) Ik=Avg(IkQ)
所以用户序列经过Transformer模块后输出 I = ( I 1 , I 2 , I 3 , . . . , I K ) I = (I_1, I_2, I_3,...,I_K) I=(I1,I2,I3,...,IK)的形状为 K × d h K \times d_h K×dh。Transformer的参数在每个session中是共享的。

image-20211029104307961

Session Interest Interacting Layer

现在每个session的interest都有了,尽管interest里已经加入了bias encoding,但是对于顺序关系的刻画还是不够的。这里用一个Bi-LSTM来刻画session间的顺序关系。

image-20211029104343507

t 时刻正向传播和反向传播的hidden state拼接起来,作为该层的输出:
H t = h f t → ⊕ h b t ← \mathbf{H}_{t}=\overrightarrow{\mathbf{h}_{f t}} \oplus \overleftarrow{\mathbf{h}_{b t}} Ht=hft hbt
到这里用户行为序列的特征算是彻底提取完了,没有再能挖掘的余地了,但是挖出了这么多特征到底怎么用,还要看下一层。

Session Interest Activating Layer

前两层挖掘出了Interest特征 I k I_k Ik 和时序特征 h k h_k hk,怎么用这些特征呢?自然是加权平均,怎么算出权重?自然是阿里CTR模型的常客,Activation Unit:

image-20211029135928168image-20211029135950486

和self-attention计算方式一样,候选item作为query,兴趣/时序特征作为Value和Key,和候选item有关的特征会被放大权重,其他特征会被过滤或者权重很小。

因此Interest特征和时序特征计算方式:
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 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}^{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}^{K} a_{k}^{I} \mathbf{I}_{k} \\ &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} akI=kKexp(IkWIXI)exp(IkWIXI))UI=kKakIIkakH=kKexp(HkWHXI)exp(HkWHXI))UH=kKakHHk
所以Interest特征和时序特征最终会整合成维度为 d h d_h dh U I U^I UI U H U^H UH。然后和原始用户特征和候选物品特征拼接,输入到base模型中:

image-20211029142243209

缺点是论文里没有线上AB Test实验结果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值