深度CTR之DIN:基于深度兴趣网络的点击率预估模型

文章目录

    • 1.paper介绍
    • 2.其他深度CTR模型
    • 3.要解决问题的背景
    • 4.DIN
      • 4.1 特征表达
      • 4.2 基模型(Embedding&MLP)
      • 4.3 DIN的模型结构
    • 5 训练技巧
      • 5.1 Mini-batch Aware Regularizaion(最小批感知正则化)
      • 5.2 Data Adaptive Activation Function(数据自适应激活函数)
    • 6 实验过程和结果
      • 6.3 指标
      • 6.4 在Amazon Dataset 和 MovieLens Dataset上的实验结果对比
      • 6.5 正则化的效果
      • 6.6 在Alibaba Dataset上的实验结果对比
      • 6.7 在线AB测的结果
      • 6.8 DIN的可视化

1.paper介绍

该模型于KDD2018上发表,由阿里妈妈广告技术团队推出。
文章题目-《Deep Interest Network for Click-Through Rate Prediction》

在广告点击率预估中,深度模型常见架构为Embedding&MLP。在模型的输入阶段,不管 ad_id 是什么,输入特征都会被压缩成一个定长的向量表达,这会使得模型遇到一个瓶颈:定长的向量无法从丰富的行为数据中捕捉到用户广泛的兴趣偏好。
DIN模型提出了局部兴趣单元的结构,来从历史行为数据中自适应的学习到用户对于广告的兴趣,提高了模型的表达能力。除DIN模型本身外,paper针对工业界深度模型的训练,提出了两个训练模型的trick:小批量感知的正则化技术、数据自适应激活函数。具体解释下小批量感知的正则化技术的原理:我们在模型的结构损失函数(例如常用的二分类的交叉熵函数)上一般会再加上一个正则化约束,常用的为l2正则,我们在训练每个mini_batch时候,计算当前batch的损失函数值时,在l2正则部分会计算上所有模型参数,对于复杂的模型,这会带来巨大的计算量,paper的小批量感知正则化只需要对当前的mini-batch中非零特征的参数计算其正则,这大大减少了计算量。
DIN在两个公开数据集以及阿里巴巴公开的真实生产数据集上的实验证明,DIN为当前最优的CTR预估模型。

用户的不同兴趣都是通过用户行为来表达的,但是用户的所有兴趣都被压缩成为一个定长的向量,这限制了Embedding&MLP模型的的表达能力。一个直接的解决方式是通过增加定长向量的长度来增加模型的表达能力,但是这会带来几个缺点:1)扩大参数数量,在有限的数据下增加了模型过拟合的风险;2)增加了计算和存储的压力,这在实际工业系统中是不可接受的。

基于给定的候选广告,通过考虑历史行为中的相关因素来自适应地计算用户兴趣的向量表达。DIN引入了局部激活单元,其作用是:基于给定候选广告,从用户历史相关的行为中软搜索出用户相关的兴趣,局部激活单元只关注与候选广告相关联的用户兴趣部分,并且计算用户各个兴趣的加权和来表达用户兴趣。其中与候选广告相关性越高的行为将会获得越高的机会权重并主导用户兴趣的表达。paper在实验部分可视化了对于不同的广告,用户不同的兴趣向量的表达情况,这种差异性增强了DIN模型的表达能力,帮助模型能够捕捉到用户不同的兴趣。

2.其他深度CTR模型

这一块,除了列举业界常见的DeepCTR模型,因为paper种引入了局部激活module,因此paper作者对于attention相关的技术也有过深入的调研和了解。paper种在DeepCTR技术、attention技术以及结合了attention的DeepCTR技术的实现上,举的例子有NNLM、LS-PLM、FM,以及Deep Crossing、Wide&Deep Learning、YouTube Recommendation CTR,这三个相似结构的模型对于LS-PLM 和 FM的改进是将transforming function替换为MLP 网络,哈哈哈,尤其注意的只,这里提到的了YouTube Recommendation CTR模型中,对于历史点击视频通过计算sum/avg pooling的方式将定长的向量输入到模型中,这种方式无法很多信息的丢失,例如无法捕获到局部行为的重要信息,而本paper中的DIN模型也很好的解决了这个问题。其他模型还包括PNN、DeepFM,NMT网络也是paper重点提到的模型,也算是本apper种的局部激活模块的思想来源,即注意力机制的权重加和。

3.要解决问题的背景

paper中提到的ads都是goods,阿里巴巴的展示广告系统分为match和ranking两个阶段,用户每天在网站上留下了丰富的行为数据,这些数据用在匹配模型和排序模型中发挥了很大的作用。一个比较值得注意的是,用户丰富的行为中包含了多种多样的兴趣爱好,paper中举了一个很容易理解的例子,一位妈妈历史浏览过羊绒大衣、耳环、T恤、宝宝外套等,而当她浏览网站时,系统只给她展示一个新款手提包的话,这对于她的多种兴趣而言,只展示一小部分她感兴趣的商品,比较有局限性。上面的bad case总结起来就是:一个具有丰富行为的用户,其兴趣爱好可能是多种多样的,而且每种兴趣是可以通过特定的广告去激活的(用户的兴趣可能很多,而一种广告只能激活其中一种兴趣或者少部分兴趣,所以兴趣是进行局部激活的)
深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第1张图片

4.DIN

展示广告与搜索广告在点击率预估上的不同之处在于,展示广告无法感知用户明显的意图,因此从用户丰富的历史行为数据中挖掘出有效的特征至关重要,因此这部分paper首先介绍了DIN中的特征表达部分,然后是基模型,最后是对DIN模型的介绍。

4.1 特征表达

由于是深度网络,DIN网络的输入中不包含任何交叉特征,只通过深度网络模型来做交叉。

工业界CTR预估的数据集大多数是以多个离散(类别型)特征存在的。对于离散特征,paper中主要列出了one-hot和multi-hot这两种。
特征i的维度为K_i,即特征i包含K_i个不同的ids取值,对特征i进行编码之后的向量为t_i,如公式1,而t_i[j]表示t_i的第j个元素,且t_i[j]的取值范围为{0,1}。公式2中当k=1时,向量t_i表示one-hot编码,当k>1时,向量t_i表示multi-hot编码。
t i ∈ R K i ( 1 ) t_i \in R^{K_i} \qquad (1) tiRKi(1)
∑ j = 1 K i t i [ j ] = k ( 2 ) \sum_{j=1}^{K_i}t_i[j]=k \qquad (2) j=1Kiti[j]=k(2)
一个具体的例子是,特征x以多个特征群的形式表示,如公式3所示,公式中的M表示特征群的数量。公式4中的K表示全部特征空间的维度。
[ t 1 T , t 2 T , . . . t M T ] T ( 3 ) [t_1^T, t_2^T,...t_M^T]^T \qquad (3) [t1T,t2T,...tMT]T(3)
∑ i = 1 M K i = K ( 4 ) \sum_{i=1}^{M}K_i=K \qquad (4) i=1MKi=K(4)

对于工业实际中,对于包含4类特征的特征群[weekday=Friday, gender=Female, visited_cate_ids={Bag,Book}, ad_cate_id=Book]来说,其对应的编码如公式5所示。
[ 0 , 0 , 0 , 0 , 1 , 0 , 0 ] ⏟ w e e k d a y = F r i d a y , [ 0 , 1 ] ⏟ g e n d e r = F e m a l e , [ 0 , … , 1 , … , 1 , … , 0 ] ⏟ v i s i t e d _ c a t e _ i d s = { B a g , B o o k } , [ 0 , … , 1 , … , 0 ] ⏟ a d _ c a t e _ i d = B o o k ( 5 ) \underbrace{[0,0,0,0,1,0,0]}_{weekday=Friday}, \underbrace{[0,1]}_{gender=Female},\underbrace{[0,\dots,1,\dots,1,\dots,0]}_{visited\_cate\_ids=\{Bag,Book\}},\underbrace{[0,\dots,1,\dots,0]}_{ad\_cate\_id=Book} \qquad (5) weekday=Friday [0,0,0,0,1,0,0],gender=Female [0,1],visited_cate_ids={ Bag,Book} [0,,1,,1,,0],ad_cate_id=Book [0,,1,,0](5)
paper中实际使用到的特征如表(1)所示。可见主要包含用户画像特征、用户行为特征(包括商品、店铺、品类从细到粗三个粒度)、广告特征(包括商品、店铺、品类从细到粗三个粒度)、上下文特征这四类,可见所有sparse特征一共是上亿维度,这也是为什么通常在广告等推荐任务中特征维度动辄上亿的原因了。
深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第2张图片

4.2 基模型(Embedding&MLP)

深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第3张图片
基模型如图左边所示。

4.3 DIN的模型结构

基于之前对定长的用户行为向量的输入的局限性,paper打算在有限的向量维度下表达用户多种不同的兴趣,而用户兴趣的局部激活特性启发了我们去设计了一个叫做DIN的新颖模型。

用户兴趣的局部激活特性是指:用户对T恤的兴趣来源于用户历史点击过T恤,用户对宝宝外套的兴趣来源于用户历史点击过宝宝上衣,,,即用户的兴趣I是仅仅是由其历史行为的某一个或几个行为反应的,所以说用户兴趣I是被用户的局部历史行为激活的,也就是局部激活特性。

再距离前面说到的妈妈用户,她在展示的广告上看到了一个包发现其很可爱并且点击了它,那么让用户去点击这个展示的可爱的包的驱动力是什么呢?展示广告是通过这样的一个过程命中了该用户的相关兴趣:软搜索用户历史行为,然后发现该用户历史浏览过类似的手提袋和皮革手袋。也就是说,与展示的广告相关的历史行为驱动了用户的改次点击行为。
DIN模型模仿了这样一个注意力机制的过程,即以给定的广告为出发点,需要关注局部激活兴趣的表达(指相关联的历史行为),在此基础上,DIN会自适应地计算用户兴趣的表达向量,这使得在不同的广告上,这个表达向量也会不同。

DIN所设计的局部激活单元模块,只作用在用户行为特征上(即用户点击行为),即作为一个加权池化来自适应计算用户表达向量vU(在给定候选广告A的情况下),

υ U ( A ) = f ( υ A , e 1 , e 2 , … , e H ) = ∑ j = 1 H a ( e j , υ A ) e j = ∑ j = 1 H w j e j ( 6 ) \upsilon_U(A) = f(\upsilon_A, e_1, e_2,\dots,e_H) = \sum_{j=1}^{H}a(e_j, \upsilon_A)e_j = \sum_{j=1}^{H}w_je_j \qquad (6) υU(A)=f(υA,e1,e2,,eH)=j=1Ha(ej,υA)ej=j=1Hwjej(6)
其中 {e1, e2, …, eH } 表示用户行为的embedding向量的列表(长度为H,表示该用户有H个信行为),vU(A)是广告A的向量,因此vU(A)对于不同的广告将会各不相同。a(·)是一个前向网络,其输出作为激活权重值(是标量)。因此对于不同的广告id,vU(A)就会有不同的取值,在激活权重的计算中,除了两个embeddibng向量作为输入之外,这两个向量的乘积也会被喂到之后的网络中,该网络是帮助进行相关性建模的显性知识。

公式(6)中的局部激活单元和attention方法(来源于NMT任务)有着相似的思想,但是与传统的attention机制的不同之处在于,本paper中的局部激活单元放松了对于\sum_i w_i = 1的限制,目的是为了保留用户兴趣的强度。因此,也就不需要使用softmax对输出a(·)进行归一化了,而在某种程度上,\sum_i w_i本身也就可以作为对用户已激活兴趣强度的近似值。

例如一个用户历史行为中90%的都是跟衣服相关而只有10%的跟电子产品相关,现在有两个候选广告为T恤和iphone,那么T恤广告将会激活大部分属于衣服的历史行为,并能计算得到更高的用户兴趣强度(相比于iphone广告)。而传统的attention机制标准化了a(·)的输出,但是也失去了数值尺度的分辨率没有(即兴趣的强度)。

针对用户兴趣多样,且不同的候选广告对用户历史行为的关联应该有所不同,基于这种考虑,paper中提到了使用局部激活单元进行用户兴趣建模。

同时用户历史行为本身是一种序列式的行为,那么针对用户这种序列行为数据,能不能做更多的工作呢?paper中也尝试使用了LSTM网络模型,尝试从用户序列行为中挖掘出更多的有效信息,但是实验结果没有明显的提升,paper分析其中的原因,因为用户的历史行为序列中可能包含了多种不行的兴趣,这与NLP任务中具有语法限制的特点具有不同之处。针对兴趣的快速跳转和突然结束用户会导致用户行为序列数据有噪声,处理这种问题的一个可能方式是设计合适的模型结构,这个留给未来~。

5 训练技巧

5.1 Mini-batch Aware Regularizaion(最小批感知正则化)

针对L2正则化技术在DIN中做了改进。我们知道在不加入L2正则化的时候,即损失函数中只有经验风险时,只有那些在mini-batch中出现的稀疏特征才会在本次迭代中进行参数更新(有非0的梯度值),而当加上L2正则的时候,是对所有参数都做正则,而在有大量稀疏特征的工业CTR预估任务中,这会导致计算量大幅增加(DIN模型中的大部分参数涞源就是稀疏特征的embeddding操作),导致优化不可进行。因此,DIN将L2的对所有参数正则化的方式修改为只对出现在mini-batch中的特征做正则化,这可以大大较少计算量。
在这里插入图片描述
深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第4张图片
其中,B表示总共的mini-batch数量, Bm表示第m个mini-batch。
在这里插入图片描述
αmj表示在mini-batch Bm中是否至少有一条样本具有特征j,那么:
深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第5张图片

深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第6张图片

5.2 Data Adaptive Activation Function(数据自适应激活函数)

原始PRelu公式为:
在这里插入图片描述
其中公式(8)p(s)为控制器,用来控制f(s)再两个channel之间切换,α是一个需要学习的参数。

PReLU是一个硬修正点,但是当每层的输入分布不一致时,硬修正点就不太合适了,针对这个问题,paper中设计了一个叫做Dice的数据自适应激活函数,如下:
在这里插入图片描述
其中公式(9)中,在训练环节,E[s]和Var[s]分别表示当前mini-batch的数据的均值和方差;在测试环节,E[s]和Var[s]是根据数据中的移动平均的E[s]和Var[s]值来确定的。

深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第7张图片

Dice函数的核心思路是:可以根据输入数据的分布自适应调整修正点(Dice中的修正点等于输入数据的均值),修正点是指两个channel的分割点。

6 实验过程和结果

paper在三个数据集上进行的实验,其中包含两个公开数据集和一个阿里巴巴展示广告系统下的真实数据集,具体数据情况见下表,实验中的数据集的使用方式以及参数的设置,具体参考原文。
深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第8张图片

主要对比的模型包括:
LR、BaseModel(Embedding&MLP)、Wide&Deep、PNN、DeepFM这五类模型。

6.3 指标

在ctr预估任务中,常见的评估指标是AUC,它是通过对所有有预测结果ctr值的广告进行排序,并评估排序结果的好坏程度,被排序的广告包括用户内的广告以及不同用户间的广告(一个用户展示有多条广告,同时有很多用户都有展示广告)。AUC的一个变体是加权AUC,它计算的是不同用户的AUC的平均值,每个用户的AUC是通过评估用户自己的广告的排序结果的好坏程度得到的,这种评估方式与展示广告系统的在线效果更加相关。paper中也采用了这种评估方式,具体的这种变体AUC的计算公式如下:
A U C = ∑ i = 1 n # i m p r e s s i o n i ∗ A U C i ∑ i = 1 n # i m p r e s s i o n i ( 10 ) AUC = \frac{\sum_{i=1}^{n} \#impression_i*AUC_i}{\sum_{i=1}^{n}\#impression_i} \qquad (10) AUC=i=1n#impressionii=1n#impressioniAUCi(10)
上式中的n表示用户数量,#impression_i表示为第i个用户展示的广告的数量,AUC_i表示第i个用户的AUC。

除此之外,paper中也参考[2]引入了RelaImpr的效果评估方式来衡量模型的相对提升。当随机猜测时,AUC值为0.5,因此RelaImpr计算公式如下:
R e l a I m p r = ( A U C ( m e a s u r e d m o d e l ) − 0.5 A U C ( b a s e m o d e l ) − 0.5 − 1 ) ∗ 100 % ( 11 ) RelaImpr = (\frac{AUC(measured model) - 0.5}{AUC(base model) - 0.5} - 1) * 100\% \qquad (11) RelaImpr=(AUC(basemodel)0.5AUC(measuredmodel)0.51)100%(11)
其实公式(11)等价于:
R e l a I m p r = ( A U C ( m e a s u r e d m o d e l ) − 0.5 A U C ( b a s e m o d e l ) − 0.5 − 1 ) ∗ 100 % RelaImpr = (\frac{AUC(measured model) - 0.5}{AUC(base model) - 0.5} - 1) * 100\% RelaImpr=(AUC(basemodel)0.5AUC(measuredmodel)0.51)100%
= ( A U C ( m e a s u r e d m o d e l ) − 0.5 − ( A U C ( b a s e m o d e l ) − 0.5 ) A U C ( b a s e m o d e l ) − 0.5 ) ∗ 100 % \qquad\qquad = (\frac{AUC(measured model) - 0.5 - (AUC(base model) - 0.5)}{AUC(base model) - 0.5}) * 100\% =(AUC(basemodel)0.5AUC(measuredmodel)0.5(AUC(basemodel)0.5))100%
= A U C ( m e a s u r e d m o d e l ) − A U C ( b a s e m o d e l ) A U C ( b a s e m o d e l ) − 0.5 ∗ 100 % ( 12 ) \qquad\qquad = \frac{AUC(measured model) - AUC(base model)}{AUC(base model) - 0.5} * 100\% \qquad (12) =AUC(basemodel)0.5AUC(measuredmodel)AUC(basemodel)100%(12)
而我们平时在衡量模型的相对提升Impr时一般用下面的公式:
I m p r = A U C ( m e a s u r e d m o d e l ) − A U C ( b a s e m o d e l ) A U C ( b a s e m o d e l ) ∗ 100 % ( 13 ) Impr = \frac{AUC(measured model) - AUC(base model)}{AUC(base model)} * 100\% \qquad (13) Impr=AUC(basemodel)AUC(measuredmodel)AUC(basemodel)100%(13)
公式(12)和公式(13)的唯一区别在分母上,RelaImpr的想法应该是:随机猜测的AUC既然是0.5,所以我实验模型的提升肯定是在0.5之上的AUC部分额外提升的,因为最坏的情况下AUC已经是0.5了。在计算结果上RelaImpr肯定是大于Impr,这样模型对比的实验效果提升数据也更加漂亮了,哈哈。另外一个值得注意的是,RelaImpr的结果是可能大于100%的,而Impr是不可能大于100%的。

6.4 在Amazon Dataset 和 MovieLens Dataset上的实验结果对比

深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第9张图片

6.5 正则化的效果

由于Amazon和movie数据集的特征维度都不是很高,对比模型实验中都没有遇到过拟合的问题,但是当实验alibaba的广告数据集时,过拟合的问题非常严重,因此paper中实验了各种正则化技术,包括在前面提到的改进的L2正则化技术MBA:Mini-Batch Aware regularization method。结果显示MBA方法效果最好

深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第10张图片

6.6 在Alibaba Dataset上的实验结果对比

深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第11张图片

相比于其他模型,DIN主要在三个方面有了较大的改进:

  1. 局部激活单元的引入;
  2. 数据自适应激活函数Dice;
  3. 小批量感知的正则化技术MBA。

6.7 在线AB测的结果

具体见paper中,两点:

  1. 收益非常明显;
  2. 做inference计算的实时性能上做了CPU-GPU端的各种优化,收益明显。

6.8 DIN的可视化


与候选广告相关性高的行为获得了更高的激活权重值

深度CTR之DIN:基于深度兴趣网络的点击率预估模型_第12张图片
可视化了不同品类的降维可视化结果,以及预测结果的激活强度。

你可能感兴趣的:(推荐算法,点击率预估,DNN)