论文《Deep Interest Network for Click-Through Rate Prediction》阅读

论文概况

这篇论文是阿里出品,关于推荐系统中点击率预测的一篇论文,发表在KDD 2018。提出了模型 DIN,主要的创新点就是论文题目中的 interest 一词,本文提出了一种基于 目标 item (对于CTR预测领域就是ad)的一种注意力神经网络模型。另外,还提出了 MBA正则化 (mini-batch aware regularizaiton)方法 和 PReLU/Dice 激活函数。

Introduction

作者在这里解释了DIN的初衷,针对特定的一件商品的推荐,如果特征中包含用户的历史行为,那么不能一概而论地对所有商品进行均等地计算,而以往的Embedding&MLP类型方法中,对历史商品没有进行侧重,这是不合理的。

在DIN中,作者针对目标item对历史行为进行了attentive learning。举例来说,如果一个人买了一件游泳镜,那这一定是因为这个人之前买过泳装,泳帽之类的东西,跟这个人买的羊毛衫、电脑之类的其它东西不太相关。基于此,提出了 DIN 模型。

Deep Interest Network

先上图:
DIN

图分为两部分,左边为 baseline —— 主流方法; 右边为DIN 模型方法。

Feature Representation

这里就是上文提到的稀疏矩阵,分为四类,包括用户特征,用户历史行为,目标ad特征,以及上下文特征。
features
作者这里将特征分为了四类,用户特征,用户历史行为,目标ad特征,以及上下文特征。这里不明白如何处理数据的,可以参考Factorization Machines一文,这里是典型的因子分解机模型的处理方法,这里贴个图。

FMs
简单讲下,就是每一行就是一个 interaction,包含了user、item的信息,用户的历史信息(用户的观影历史),以及context上下文信息,target是电影打分结果。

Base Model (Embedding&MLP)

就是先embedding层将稀疏特征降维,成为dense特征。

再输入 MLP ,完成多层非线性变换,经过softmax, 输出概率。

这类 base 模型的缺点是embedding大小固定,不能表示更多的信息。

The structure of Deep Interest Network

v U ( A ) = f ( v A , e 1 , e 2 , ⋯   , e H ) = ∑ j = 1 H a ( e j , v A ) e j = ∑ j = 1 H w j e j (3) \mathbf{v}_U(A) = f(\mathbf{v}_A, \mathbf{e}_1 , \mathbf{e}_2, \cdots, \mathbf{e}_H ) \\ = \sum\limits_{j=1}^{H}{a(\mathbf{e}_j, \mathbf{v}_A) \mathbf{e}_j } \\ = \sum\limits_{j=1}^{H}{ \mathbf{w}_j \mathbf{e}_j } \tag{3} vU(A)=f(vA,e1,e2,,eH)=j=1Ha(ej,vA)ej=j=1Hwjej(3)

这里的H 和图例中的 N 是一个东西,属于文中的一点小纰漏。

结合模型架构图(图2)来看,首先这个公式表示的是user的embedding,给定目标广告 A ,与base model不同的是,最终的user behavior的表示是所有的历史浏览向量的加权之和。权重为 a ( e j , v A ) a(\mathbf{e}_j, \mathbf{v}_A) a(ej,vA) ,这个a就是图2追踪的activation unit的内容,如下所示:

activation unit
计算方法是通过N个user behavior history中的任意一个,分别于target ad 向量做外积(即两向量的法向量),再连同两个向量本身进行concatenation,再传入两层MLP(第一层为PReLU/Dice层,后续介绍,也是本文的一个创新点)中,得到N个实数权重。

N个实数权重分别与N个user behavior vector进行加权相乘,传入后面的MLP中。

Training Techniques

Mini-batch Aware Regularization

作者这里提出了小批量感知的正则化,简称MBA regularization。作者指出,如果在批处理过程中,输入的向量是稀疏的,每次更新也只更新少量几个模型参数(为0的都不会更新,参考梯度下降算法),因此如果正则化加入了整个模型的L2正则化,反而会降低模型性能。

因此,作者只将小批量输入中向量的非 0 位置对应的模型参数 对应的 embedding 矩阵位置那一列的参数进行更新。具体的计算如下:

L 2 ( W ) = ∣ ∣ W ∣ ∣ 2 2 = ∑ j = 1 K ∣ ∣ w j ∣ ∣ 2 2 = ∑ ( x , y ) ∈ S ∑ j = 1 K I ( x j ≠ 0 ) n j ∣ ∣ w j ∣ ∣ 2 2 (4) L_2(W) = ||W||_2^2 = \sum_{j=1}^K||w_j||_2^2 \\ = \sum\limits_{(x, y)\in S}{ \sum\limits_{j=1}^{K}{\frac{I(x_j\neq0)}{n_j}||w_j||_2^2} } \tag{4} L2(W)=∣∣W22=j=1K∣∣wj22=(x,y)Sj=1KnjI(xj=0)∣∣wj22(4)
其中, w j ∈ R D w_j\in \mathbb{R}^D wjRD 是 embedding 矩阵的第 j 列,K是所有的feature长度。这里是将架构图中分散开进行的embedding过程合在一起说的,这样更容易表达。

上式是传统的全部参数都进行更新的L2正则化,代表将所有K列的embedding向量进行2范式平方计算。更进一步地,就是将训练集中所有的instance加入运算,具体的, n j n_j nj 是第 j j j 个 feature 在 训练集中出现的次数,公式(4)中第二行代表在中间加入一个出现次数的权重,然后再外面加和,这个想法和归一化类似。

L 2 ( W ) = ∑ j = 1 K ∑ m = 1 B ∑ ( x , y ) ∈ B m I ( x j ≠ 0 ) n j ∣ ∣ w j ∣ ∣ 2 2 (5) L_2(W) = { \sum\limits_{j=1}^{K} \sum_{m=1}^{B} \sum\limits_{(x, y)\in B_m} {\frac{I(x_j\neq0)}{n_j}||w_j||_2^2} } \tag{5} L2(W)=j=1Km=1B(x,y)BmnjI(xj=0)∣∣wj22(5)

有了上面的想法,很自然地,就可以将批处理中同一个 Batch 中出现的特征进行二范式加入进去,这样就会缩小更新的参数范围,如公式(5)所示。公式(5)就是将公式(4)中的同时处理,分散到每个batch中。式(4)中 , B B B 代表 batch个数, B m {B}_m Bm 代表第 m 个batch。

更进一步地,

L 2 ( W ) ≈ ∑ j = 1 K ∑ m = 1 B α m j n j ∣ ∣ w j ∣ ∣ 2 2 (6) L_2(W) \approx { \sum\limits_{j=1}^{K} \sum_{m=1}^{B} {\frac{\alpha_{mj}}{n_j}||w_j||_2^2} } \tag{6} L2(W)j=1Km=1Bnjαmj∣∣wj22(6)

其中, α m j = max ⁡ ( x , y ) ∈ B m I ( x j ≠ 0 ) \alpha_{mj} = \max_{(x, y)\in B_m}{I(x_j\neq0)} αmj=max(x,y)BmI(xj=0) 代表第 m 个batch 中 第 j 个特征 是否出现。 因为 I ( x j ≠ 0 ) {I(x_j\neq0)} I(xj=0)只有 0 和 1, 所以加上 max ⁡ ( ⋅ ) \max(\cdot) max() 同样还是 0 或者 1。

公式(6)中使用的是约等号,因为 ∑ ( x , y ) ∈ B m I ( x j ≠ 0 ) \sum\limits_{(x, y)\in B_m}{{I(x_j\neq0)}} (x,y)BmI(xj=0) 最大也就是 B m B_m Bm ,属于 O ( N ) O(N) O(N) ,常数次大小,所以使用 是否出现来代替,这里使用 α m j \alpha_{mj} αmj 替换计算的原因我估计是为了计算简便,不需要考虑批数据中每个instance。

由上式,可以得出 w j w_j wj 的更新公式,如下所示:

w j ← w j − η [ 1 ∣ B m ∣ ∑ ( x , y ) ∈ B m ∂ L ( p ( x ) , y ) ∂ w j + λ α m j n j w j ] (7) w_j \leftarrow w_j - \eta \left[ \frac{1}{|B_m|} \sum\limits_{(x, y)\in B_m} \frac{\partial L(p(x), y)}{\partial w_j} + \lambda \frac{\alpha_{mj}}{n_j}w_j \right] \tag{7} wjwjη Bm1(x,y)BmwjL(p(x),y)+λnjαmjwj (7)

上式组合了两项内容, ∑ ( x , y ) ∈ B m ∂ L ( p ( x ) , y ) ∂ w j \sum\limits_{(x, y)\in B_m} \frac{\partial L(p(x), y)}{\partial w_j} (x,y)BmwjL(p(x),y) 是 log loss 损失函数的偏导求解, λ α m j n j w j \lambda \frac{\alpha_{mj}}{n_j}w_j λnjαmjwj 是MBA 正则化损失项的偏导部分。

其中, η \eta η是学习率; λ \lambda λ 是 正则化项的系数。

这里需要说明的是,MBA 正则化项,只考虑了embedding matrix 的正则化,对于后面的MLP部分的正则化没有添加。

Data Adaptive Activation Function

这部分简要介绍,实际上就是根据batch中数据的分布进行 激活函数中心点 变换的一个函数。

总结

这篇文章由阿里出品,中心思想就是在用户的user behavior中加入了目标ad 参与计算注意力,完成预测的推荐算法。

除此以外,该文还有两个创新点是:

  1. 针对稀疏数据提出的MBA正则化 —— mini-batch aware regularization;
  2. 针对批数据处理提出的激活函数 —— pReLU / Dice。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值