DSIN: Deep Session Interest Network for Click

基本信息

字段 内容
标题 Deep Session Interest Network for Click-Through Rate Prediction
作者 Yufei Feng, Fuyu Lv, Weichen Shen, Menghan Wang, Fei Sun, Yu Zhu, Keping Yang
机构 Alibaba Group
年份 2019 (IJCAI’19)
方向 Session Interest, Self-Attention, Bi-LSTM, Sequential Modeling
场景 电商展示广告 session 级用户行为序列建模
arXiv https://arxiv.org/abs/1905.06482

DSIN是继DIEN改进DIN之后,进一步改进DIEN的工作,作者不再是G Zhou,论文的实验也不再包含工程上的效果评估,没有提及是否上线有涨点,似乎相较于DIN和DIEN来说更学术风一些。

作者blog:https://yufeifeng.github.io/

作者知乎:https://www.zhihu.com/people/fengpang

背景/动机/创新点

作者认为用户行为序列存在特征:序列是由多个session构成的(以时间为分割的不同密集行为子序列),同一session内的用户行为是相似的(用户通常在同一个session中带有明确且独特的倾向),不同session间的用户行为可能是相异的(不同session中用户的兴趣差异较大),这其实也和DIEN中的“用户兴趣是微观连续,宏观漂移的”的理论是一致的。

作者认为现有的大部分用户序列建模方法忽略了session这个问题,基于此,作者提出了DSIN,即Deep Session Interest Network,用以从session到sequence的视角更细粒度地对用户行为序列建模,达到提升ranking效果更好的目的。

主要创新点:

  1. 使用加入bias encoding的self-attention(与传统position encoding不同)对session进行encoding,提取session中的用户兴趣。
  2. 使用Bi-LSTM去建模用户session间的兴趣变化和交互过程。
  3. 用Activation Unit来学习不同session对候选商品的注意力分数。

模型改进

img

作者把模型主要部分划分为了两个parts:

  1. User Profile 和 Item Profile Embedding part

  2. User Behavior Modeling part

  3. Session Division Layer

  4. Session Interest Extractor Layer

  5. Session Interest Interacting Layer

  6. Session Interest Acivating Layer

Session Division Layer

img

主要作用是把sequence分割成多个sessions,DSIN的分割方法是:用户相邻行为的时间间隔大于30min则进行分割。

Session Interest Extractor Layer

img

img

Self-attention不包含位置信息,作者额外引入了位置信息编码,这里编码是三种位置信息的总和:

  1. 交互行为在session中的位置
  2. session在sequence中的位置
  3. 交互行为在sequence中的位置

经过Encoder的ith-session是多个向量的集合,作者对其应用了AvgPooling来聚合成一个向量,用来表征ith-session的Embedding。

训练的损失函数:交叉熵

Session Interest Interacting Layer

img

作者认为用户的session兴趣在sequence中存在一定上下文联系,对时间顺序的session体现的兴趣的动态变化进行建模能够增强每个session对用户兴趣的表达能力。相较于DIEN的AUGRU,DSIN采用了Bi-LSTM,认为其有更好的序列关系学习能力(但是后面实验怎么没有和AUGRU对比)。

img

img

这里的最后一行公式符号应该代表拼接

Session Interest Activating Layer

img

作者对上述两个层的Session向量分别和候选商品做attention,然后对两个Layer分别进行加权平均,最后和User Profile Embedding以及Item Profile Embedding拼接在一起作为MLP的输入。

img

img

DSIN最后的输出是候选商品的CTR预测值

实验设计

数据集:

  1. Advertising Dataset:Alibaba的公开数据集
  2. Recommender Dataset:Alibaba真实私有数据集

Baseline:

  1. YoutubeNet(without User Behavior)
  2. YoutubeNet(with User Behavior)
  3. Wide&Deep
  4. DIN
  5. DIN-RNN
  6. DIEN

评价指标:

  1. AUC

img

作者将Baseline与DSIN以及两个变体(bias encoding变为position encoding/去掉session之间的兴趣建模层以及对应的activation unit)进行比较。

注意点

  1. bias position encoding和传统position encoding不同。
  2. 作者没有验证Bi-LSTM是否能够比AUGRU or GRU带来更好的效果,我认为这是不足之处。
  3. 每个session的behavior数是固定的(论文设定为10),多的截断,少的padding,应该就是对变长序列的常见处理方法,而且原文的session是30min间隔,可能普遍场景的交互行为数平均是小于10的。
  4. img公式部分有一个typo

QA

作者:Ethan Wong
链接:https://zhuanlan.zhihu.com/p/89700141

Q1:在interest extractor层中的mult-head self attention,是根据头将vector平均分为H份吗?如果是,为什么可以均分呢?

A1:不均分。你可以认为每一个head是一个分支,用于提取某一方面的特征。最后回通过ffn提炼出head之间的feature interaction.

Q2:在interest extractor层中的mult-head self attention,如果能做average pooling,I_kQ是一个vector吗?还是说有很多个I_kQ?但是I_k^Q好像已经包含了H个头的信息了。。。

A2:应该是的。我理解I_k^Q是第k个session的特征表示,已经融合了k个head的特征提取结果(FFN的作用)。

Q3:Session Interest Interacting Layer的隐藏层公式里的负号代表相加还是异或?

A3:concatenation

Q4:文章里的公式有好多的W,文章只是说他们是linear matrix,我的理解是待训练的权重,这样想对吗 ?

A4:是的,就是一个projection matrix,都是用来做矩阵乘法的。本质就是一种线性变换。