序列模型

广告/推荐中的序列模型

DIN(Deep Interest Network)

paper

Model

  • 思想:针对不同的候选广告,用户历史行为与该广告的权重是不同的。
  • 方法:以当前候选广告为query,用户历史行为为key/value,利用attention机制,求query与key的attention score,并利用attention score加权value
  • Vi表示behavior id i的嵌入向量,比如good_id,shop_id等。Vu是所有behavior ids的加权和,表示的是用户兴趣;Va是候选广告的嵌入向量;wi是候选广告影响着每个behavior id的权重,也就是Local Activation。wi通过Activation Unit计算得出,这一块用函数去拟合,表示为g(Vi,Va)。

Tricks

GAUC

  • group auc
  • auc的评估是对所有样本排序后,评估正样本排在负样本的概率。但推荐、广告系统中,关注的是单个用户的排序。
  • gauc是在单个用户auc基础上,按照点击次数、show次数等进行加权平均,消除用户偏差对模型的影响。n为用户数量。

DICE

  • Data Dependent Activation Function
  • 可以视为Batch Normalization的变化。使得激活函数随着一个batch的数据分布做自适应调整——data dependent。
  • pi是一个概率值,这个概率值决定着输出是取 s 或者是 alpha_i * s,起到了一个整流器的作用。pi的计算分为两步:
    • 首先,对 x 进行均值归一化处理,这使得整流点是在数据的均值处,实现了 data dependent 的想法;
    • 其次,经过一个 sigmoid 函数的计算,得到了一个 0 到 1 的概率值。
  • 另外,期望和方差使用每次训练的 mini batch data 直接计算,并类似于 Momentum 使用了 指数加权平均:

Adaptive L2 Regularization

  • 两点改进
    • 针对 feature id 出现的频率,来自适应的调整他们正则化的强度:
      • 对于出现频率高的,给与较小的正则化强度;
      • 对于出现频率低的,给予较大的正则化强度。
    • 正则化涉及的参数限制在了仅在Mini-batch出现过的特征所影响的权重, 有效地缓解了过拟合的问题
  • amj表示是否至少有一个样本的id为j的特征出现在mini-batch中;nj表示feature id为j出现的次数,惩罚了出现频率低的item

DIEN(Deep Interest Evolution Network for Click-Through Rate Prediction)

paper, git

  • DIN: 将用户历史行为视作用户兴趣,并用attention机制来捕捉target和历史行为的相对兴趣
  • DIEN: 行为不等于兴趣,需要从行为中挖掘兴趣,并考虑兴趣的动态变化
    • 兴趣抽取层:计算一个辅助loss,来提升兴趣表达(每个历史行为embedding学习)的准确性< GRU + Loss>
    • 兴趣进化层:更加准确的表达用户兴趣的动态变化性(加权历史行为embedding的学习)< AUGRU(GRU + attention) >

Model

Interest Extractor层:兴趣的挖掘。利用GRU+辅助loss来挖掘用户兴趣。

  • 辅助loss: 第t个时间步输入e(t),GRU输出隐单元h(t),第t步loss: 令下一个时间步的输入向量e(t+1)作为正样本,随机采样负样本e(t+1)。
  • GRU, u表示update gate, r 表示reset gate, h’表示候选的隐藏状态,通过tanh缩放到-1~1之间,对Ht-1进行reset同时+Item, ht 通过last hidden states (1-update) 表示遗忘,update h’表示记忆当前状态

Interest Evolving层

  • Interest Evolving层对与target item相关的兴趣演化轨迹进行建模:利用注意力机制+GRU
  • AUGRU: attention update-gate gru。利用attention与update gate相乘,替换原始的update gate
  • 变体
    • GRU with attentional input(AIGRU): 较为简单,直接将attention系数和输入相乘
    • Attention based GRU(AGRU):采用问答领域文章提到的一种方法,直接将attention系数来替换GRU的update gate,直接对隐状态进行更新

Problems

  • GRU的耗时
  • 可以借鉴的:aug loss?

DSIN(Deep Session Interest Network for Click-Through Rate Prediction)

paper

  • session内行为同构,不同session行为异构
    • Bias encoding + Transformer:获取session内的兴趣表达
    • Bi-LSTM: session间的序列关系
    • activation unit: 类似于din,获得行为序列表达与target item的关系

Model

Session Division Layer

  • 长度为n的seq,切分为K个session,session内有T个item,一个item D维,一个session 30min
  • 得到Q ∈ R^(K*T*D)

Session Interest Extractor Layer

  • session内的序列建模
  • bias encoding: BE(k, t, c)指session k,item t下,位置c的偏置值
  • 分别对每个session k:
    • 过一个Transformer得到
    • 做avg,得到Ik,shape为K*D:

Session Interest Interacting Layer

  • session间的序列关系
  • Bi-LSTM

Session Interest Activating Layer

  • 与target交互
  • 包括两部分:
    • Ik与target的attention:未建模session间关系
    • Hk与target的attention:建模session间关系之后

Experiments

讨论

  • DIN-RNN的效果差与DIN,而DSIN-BE的效果好于DSIN-BE-No-SIIL:说明切分session后,序列建模有效,而切分前,序列建模效果有损。原因猜测为,用户行为在长期来看是跳跃的,序列建模可能在某些时间点出有很大的噪声

DMIN(Deep Multi-Interest Network for Click-through Rate Prediction)

paper推荐系统遇上深度学习(一零零)-[阿里]深度多兴趣网络DMIN

  • 利用multi-head attention机制,建模用户多兴趣
  • 引入DIEN中的aux loss

Model

Behavior Refiner Layer

  • multi-head attention,提炼用户行为序列,为每个历史行为生成一个新的embedding。HR为head数(R表示Refine),xb的shape: T*D,W: T*Dh,得到T*Dh,concat后得到T*(Dh*HR)
  • aux loss: 同DIEN

Multi-Interest Extractor Layer

  • multi-head attention,HE个head
  • 类似din,得到第h个兴趣,Ijh为第h个head的第j个item,xt为target item,pj为position encoding:

MIND(Multi-Interest Network with Dynamic Routing for Recommendation at Tmall)

paper推荐系统遇上深度学习(七十四)-[天猫]MIND:多兴趣向量召回

  • DIN:通过attention机制建模用户多样的兴趣,并得到一个embedding。MIND采用了另一种表达用户多样兴趣的思路:用多个embedding表示用户多样兴趣,具体来说,可以对用户历史行为的embedding进行聚类,聚类后的每个簇代表用户的一组兴趣。

Method

behavior2interest dynamic routing

胶囊网络

  • 背景:传统的神经网络输入一组标量,对这组标量求加权和,之后输入非线性激活函数得到一个标量的输出。而Capsule输入是一组向量,对这组向量进行仿射变换之后求加权和,把加权和输入非线性激活函数,如此经过j次迭代得到一个向量的输出。Hinton提出Capsule Network是为了解决传统的CNN中只能编码某个特征是否存在而无法编码特征的orientation
  • 来自zhihu
  • 一个两层胶囊网络(从low-level到high-level):
    • low-level: m个Nl维度的vector; high-level: n个Nh维度的vector
    • 对每一个low-level vector做映射,然后做加权融合(softmax),再做非线性激活
    • 其中softmax需要参数,参数需要迭代求解:初始化为0,即权重为1/m;后续迭代更新

B2I Dynamic Routing

MIND中的capsule:
(在MIND的中我们只要记住Capsule可以接受一组向量输入,输出一个向量;如果我们K个capsule,就会有K个输出向量)