Deep Interest Network for Click-Through Rate Prediction
本文指出,在基于embedding和MLP的模型中,用户的各种兴趣被压缩在一个固定长度的向量中,限制了模型的表达能力。为了能更好的表达用户各种各样的兴趣,应该大大增加固定长度向量的维度,然而这会大大增大学习参数的数量,增加过拟合风险,增大计算量与需要的存储空间。
另一方面,在预测对于某一候选广告的点击率时,并没有必要把特定用户的所有兴趣压缩成embedding,因为只有用户的部分兴趣会影响他是否点击。
本文提出了新模型Deep Interest Network(DIN),通过考虑相关的用户历史行为来表达用户对于某一广告的兴趣。
文中简单介绍了Alibaba广告系统的两个stages:
•matching stage. 通过协同过滤(CF)等方法产生对于访问用户的候选广告列表。
•ranking stage. 对于候选广告预测CTR,然后挑选CTR最高的几个进行推送。
DEEP INTEREST NETWORK
输入数据(有onehot也有multi-hot)

Base Model(Embedding&MLP)

Embedding layer
输入是高维的binary向量,通过embedding layer转换成低维稠密向量。
•如果某一特征域上的输入是onehot的,它的embedding表达就是一个embedding向量。
•如果某一特征域上的输入是multi-hot的,它的embedding表达则为一组embedding向量。
Pooling layer and Concat layer
不同用户的用户行为数量是不同的,因此在multi-hot的特征域上获得的embedding数量是不同的。全连接的网络只能处理固定数量的输入,因此一种常见的做法是通过pooling layer来得到一个固定长度的vector。

最常用的两个pooling layer分别是sum pooling和average pooling。(这里可以搞个attention呀,万物皆可attention .)
之后把所有特征域上的embedding concatenate成一个长向量,输入到后面的步骤中去。
MLP
通过MLP来进行学习特征组合。
Loss

The structure of Deep Interest Network
上面描述的方法,对于任何的候选广告,用户兴趣的表示向量都是一样的,这也为模型的性能带来了瓶颈。

与前面的模型相比,DIN的创新点在于引入了local activation unit。local activation unit应用于用户的行为特征,对于一个给定的候选广告进行weighted sum pooling。

ei表示用户的embedding vector list,va表示广告a的embedding vector。通过这种方式,vU(A)随着不同的广告进行变化。a(.)是一个前馈网络,其输出作为激活权重。
与传统的attention方法不同的是,为了能够保留用户兴趣的强度,attention score之和为1的约束被去掉了,也就是说不需要对a(.)的输出进行归一化。
TRAINING TECHNIQUES
Mini-batch Aware Regularization
文中指出传统的L1、L2正则化在大规模电商中并不适合。以L2正则为例,在没有使用正则化的时候,使用SGD时只有mini-batch中非零稀疏特征的参数需要更新,然而使用L2正则后,每个mini-batch都需要更新所有的参数,这对于参数数量很大的情况是不可接受的。
本文提出了一种只在mini-batch上进行的正则化,也就是只计算在mini-batch中出现的稀疏特征参数的L2正则。

Data Adaptive Activation Function
PReLU激活函数

其中s为input的一维,p(s)=I(s>0). α是一个可学习参数。

文中将p(s)称之为控制函数,也就是上图的左边部分。PReLU在值为0时有一个hard rectified point,当各层的输入分布不同时就不那么适合了。
考虑到这一点,本文提出了新的数据适应的激活函数Dice

其控制函数为上图的右边部分。
训练阶段,E[s]和Var[s]为mini-batch上输入的均值和方差。测试阶段,E[s]和Var[s]由训练集上的moving average(即指数加权平均)得到。ϵ是一个很小的常数,通常为10 ^ -8用于数值稳定。
Dice可以看作是对PReLu的泛化。Dice的核心想法在于根据输入数据的分布适应性的调整rectified point,具体数值为输入的均值。当E[s]=0并且Var[s]=0时,Dice退化为PReLU。
网友评论