DIN(Deep Interest Network)是由阿里妈妈精准定向广告算法团队在KDD2018提出的针对电商场景深入理解用户兴趣的预估模型,也可适用于其他场景。
主要贡献:
- 指出了使用固定长度的向量来表达用户多样性的兴趣的局限性,设计了新颖的Deep Intrest Network,它引入了局部激活单元(local activation unit)来自适应地从给定广告的历史行为中学习用户兴趣的表达。
- 开发了两种技术来训练工业级深度网络:i) mini-batch aware的正则化,避免了在NN的巨量参数上计算正则。ii) 一个数据自适应的激活函数(Dice),在泛化推广PReLU过程中考虑到了输入数据的分布。
- 在公开和阿里的数据集上做了深入的实验,验证了DIN和训练技术的有效性。并公开了代码。
一、背景
1. Motivation
现有的深度CTR预估模型都可以归结为Embedding&MLP的范式:首先通过embedding layer将大规模的稀疏特征投影为低维连续的embedding vector,然后将这些向量concatate后输入到一个全连接网络中,计算其最终的预估目标。Embedding&MLP模型利用一个固定的向量
去表达用户就会成为模型表达用户多样兴趣的瓶颈。此固定用户向量
的维度限制了整体模型解空间的秩, 而向量的维度受计算力以及泛化性的限制不可能无限制的扩充。
实际上当我们要预测一个User
对一个目标Item
的点击率,我们可能并不需要
表达用户的所有兴趣,我们只需要表达其和
相关的兴趣。
Motivated by this, 提出了DIN模型捕捉针对不同商品时用户不同的兴趣状态,并用一个根据不同预估商品目标动态变换的
来表达用户与之相关的兴趣。
DIN方法基于对用户历史行为数据的两个观察:
- 1、多样性,一个用户可以对多种品类的东西感兴趣;
- 2、局部激活,只有一部分的历史数据对目前的点击预测有帮助,比如系统向用户推荐泳镜时会和用户点击过的泳衣产生关联,但是跟用户买的薯片、书籍等就关系不大。
于是,DIN设计了一个attention结构,对用户的历史数据和待估算的广告之间部分匹配,从而得到一个权重值,用来进行embedding间的加权求和。
2. 相关工作
LS-PLM和FM模型可以看作是一类只有一个隐藏层的网络,首先在稀疏的输入采用embedding层,然后利用专门设计的transformation函数来做target fitting,以此来捕获特征之间的组合关系。
PNN尝试通过在embedding层之后引入一个product乘积层来捕捉高阶的特征交互。
DeepFM利用一个因子机作为Wide&Deep中的"Wide"模块,从而不需要人工特征工程。
总之整体结构都是embedding层和MLP的组合,我们的基模型采用类似的方式。
神经机器翻译(NMT)对所有的译文使用一个加权求和来获得期望的释义,并且只专注于生成下一个目标单词的相关信息。最近,在搜索广告的上下文信息上应用Attention机制,与NMT类似,对model text使用RNN,然后学习一个全局的隐向量来帮助把’attention’集中在每个query的关键词上。
DIN设计了一个局部激活单元(Local Activation Unit)来对相关的用户行为做软搜索,并使用一个加权求和的Pooling来获得用户对给定广告的兴趣的自适应表达。
DIN提出Adaptive regularizaion来防止过拟合,效果显著。此外,引入dice activation function进一步加强了模型的表达效果。
二、系统详解
4.1 特征表示
multi-hot编码包含了丰富的用户兴趣信息,注意不需要组合特征。
4.2 Base模型(Embedding&MLP)
嵌入层:
输入one-hot和multi-hot的特征向量,转化为低维稠密向量。
池化层和Concat层:
不同用户有不同的行为编号,multi-hot后的行为特征向量
中的非零数字各有不同,使得相应的embedding向量各有不同。由于全连接层只能处理固定长度的输入,获取固定长度向量的常规操作就是:
通过一个pooling层将embedding向量转换成固定长度的向量:
基础模型通常使用sum pooling计算用户embedding; DIN通过使用weighted sum pooling计算用户embedding。
注:DIN中使用的是weighted-sum,其实就是加权的sum-pooling,权重经过一个activation unit计算得到。
然后把固定长度的向量表示连接起来,就得到了overall的向量表示。
**MLP: ** 使用全连接层来自动地学习特征组合。
**Loss: ** 目标函数是负的对数似然函数:
其中,S是大小为N的训练集,x是网络的输入,y属于{0,1}是label,p(x)是网络softmax层后输出的预估概率值。
4.3 DIN的结构
Base模型的固定长度向量表示,忽略了候选广告的不同,每个用户的向量是固定的。为了达到要求,简单地扩展embedding向量的维度将会严重增加学习的参数个数,而且容易过拟合。
DIN模型的结构如图所示:
DIN通过一个兴趣激活模块(Activation Unit),用预估目标Candidate ADs的信息去激活用户的历史点击商品,以此提取用户与当前预估目标相关的兴趣。权重高的历史行为表明这部分兴趣和当前广告相关,权重低的则是和广告无关的“兴趣噪声”。我们通过将激活的商品和激活权重相乘,然后累加起来作为当前预估目标ADs相关的兴趣状态表达。 最后我们将这相关的用户兴趣表达、用户静态特征和上下文相关特征,以及ad相关的特征拼接起来,输入到后续的多层DNN网络,最后预测得到用户对当前目标ADs的点击概率。
加入Activation Unit之后,用户的兴趣表示计算如下:
其中,{e1,e2,…eH}是长度为H的用户U的用户行为embedding vector,
是广告A的embedding vector,
这样,
的值随着广告的不同而变化(向量长度为H)。如图右上角所示,外积(Out Product)函数
是一个输出为激活权重的前馈神经网络,把用户行为的embedding和广告的embedding向量这两部分输入,加上它们的out product喂给一个随后的网络,是一种显而易见的关联性建模方法。
对每个兴趣表示赋予不同的权值,这个权值是由用户的兴趣和待估算的广告进行匹配计算得到的,也就是 所学习到的。这就是本文引入注意力机制的核心点。
Activation Unit实现Attention机制,对Local Activation建模;
Pooling(weighted sum)对Diversity建模(见Base Model)。
We have tried LSTM to model user historical behavior data in the sequential manner. But it shows no improvement. 尝试对用户历史行为数据使用LSTM进行时序方式的预测,并没有得到改善。
三、训练技术
5.1 Mini-batch Aware Regularization
过拟合是模型训练中的很容易出现的问题。
通常的做法是加入L1、L2防止过拟合,但这种正则方式对于工业级CTR数据不适用,结合其稀疏性及上亿级的参数,以L2正则化为例,需要计算每个mini-batch下所有参数的L2-norm,参数上升至亿级之后计算量太大,不可接受。
用户数据符合长尾定律(long-tail law),也就是说很多的feature id只出现了几次,而一小部分feature id出现很多次。这在训练过程中增加了很多噪声,并且加重了过拟合。直接去掉出现次数比较少的feature id会导致模型更容易过拟合,而且阈值作为一个新的超参数,需要大量的实验来选择。
DIN提出了高效的Mini-batch aware正则化,只计算mini-batch中非零项的L2-norm。
其中
是第j个embedding vector,指示函数
表示x是否有特征id j,
表示在所有样本中特征id J出现的次数。在mini-batch aware方式中,等式4可以转换成等式5,近似为下面的等式6:
第m个mini-batch的梯度w.r.t 特征j的embedding weights就是:
其中
表示第m轮mini-batch,
表示在mini-batch 中至少一个实例具有特征id
,
表示第j个embedding vector。
5.2 Data Adaptive Activation Function
DIN的论文中,我们还对激活函数做了改进,提出了黑魔法DICE激活函数。
目前应用的比较广的激活函数ReLU和PReLU的计算过程可以描述为:
我们把P(s)称为控制函数,这个控制函数其实就是一个整流器,可以看到无论是PReLU还是ReLU的控制函数都是一个阶跃函数,其变化点在s = 0处,意味着面对不同的输入这个变化点是不变的。实际上神经元的输出分布是不同的, 面对不同的数据分布采用同样的策略可能是不合理的,因此在我们提出的Dice激活函数中我们改进了这个控制函数,让它根据数据的分布来调整,这里我们选择了统计神经元输出的均值和方差来描述数据的分布:
控制函数:
5.3 Metrics and Result
使用了一种“An variation of user weighted AUC” 用于度量用户间order,通过平均每个用户的AUC,公式如图:
引入了RelaImpr metric 去度量模型的相对提升度。
在数据集上的实验表明:
DIN可以自适应得到用户兴趣的不同表示,极大提升了模型的表达能力;此外,DIN引入了Dice进一步提升了模型表现。
Ref:
[1] 论文发表在这里
[2] github官方wiki