Deep Interest Network (DIN)专题1-论文解析: Deep Interest Network for Click-Through Rate Prediction

深度学习CTR预估的基本方法和缺陷

基于深度学习CTR预估的基本方法

基于深度学习的CTR预测被广泛的应用,这些方法的基本思想是类似的:将大规模的稀疏特征以分组(group-wise manner )的方式映射到低纬度的嵌入向量embedding vectors),再进一步转换为固定长向量fixed-length vectors),最后拼接到一起给全连接层来学习特征间的非线性关系。该方法与传统的逻辑回归相比,能省去大量特征工程的工作并增强模型能力,通常称之为 Embedding&MLP方法(即embedding加多层神经网络),在CTR预估中非常受欢迎。

深度模型基本CTR预估方法的缺陷


由于用户的兴趣是多样的,但用户特征的表示向量维度有限,也就是说具有多样性的特征被压缩到固定长的向量,从而限制了Embedding&MLP网络的表达能力,而增加向量维度又是不可行的(内存和运算量都无法承载),因此成为了表达用户兴趣多样性的一个瓶颈。

另一方面,当对一个商品做CTR预测时,没必要将一个用户的所有兴趣包括在同一个向量中。例如,一个女性游泳爱好者会大概率点击一个泳镜的商品,主要因为她曾经购买过泳衣而不是因为她之前买过鞋。

深度兴趣网络Deep Interest Network(DIN)被提出来解决这一问题,通过考虑一个用户历史行为的相关性,DIN可以自适应地计算一个用户兴趣的表示向量。通过引入局部激活单元(local activation unit ),DIN注重相关的用户兴趣,通过软搜索(soft-searching )历史行为的相关部分并通过对推荐物品相关的用户兴趣求加权池化来获取。与推荐物品相关度高的行为可以获得更高的激活权重并主导用户兴趣的表示,这就是深度兴趣网络DIN的基本原理。

深度兴趣网络DIN的网络结构介绍

特征提取

在实际的CTR预测中,特征通常是多组(具体的某个特征为一组,如用户性别)且分类(个人信息、用户行为、访问物品、推荐物品等特征)的形式,例如多组特征:[weekday=Friday, gender=Female, visited_cate_ids={Bag,Book}, ad_cate_id=Book],此类特征通常通过编码的方式转化为高纬度稀疏二进制特征。数学上,第i组的特征通常表示为:\textbf{t}_i \in R^{K_i}K_i为第i组特征的维度,即表示该组特征有K_i个不同的id。{t}_i[j]表示特征 \textbf{t}_i的第j个属性元素只取0或1,0表示具有该属性,1表示不具有该属性,且\sum_{j=1}^{K_i}{t_i[j]} = k。若k=1则为one hot 编码,若k>1则为multi-hot 编码。那么一个实例就可以被表示为:

\textbf{x} = [\textbf{t}_1^T,\textbf{t}_2^T,...,\textbf{t}_M^T]

 其中,M表示特征数,\sum_{i=1}^{M}K_i = K表示整个特征空间的维度,例如之前说的实例的特征空间可表示为:

基本模型 

embedding层

embedding层负责把输入的高纬二进制向量转化为低维的稠密表示向量,对于第i个特征组,其对应的特征嵌入字典为:

\textbf{W}^i=[\textbf{w}_1^i,\textbf{w}_2^i......,\textbf{w}_{K_i}^i] \in \textbf{R}^{D \times K}

每一个嵌入向量\textbf{w}_j^i为对应特征ij个属性对应的特征向量,向量的纬度为D。如果\textbf{t}_{i}为one-hot编码,即只取一个属性值,那么\textbf{t}_{i}的表示特征为

\textbf{e}_i = \textbf{w}_j^i

 如果\textbf{t}_{i}为multi-hot编码,且\textbf{t}_i[j] = 1对应的集合为j \in \{i_1,i_2,...,i_k\},那么\textbf{t}_{i}表示特征

 \{\textbf{e}_{i_1}, \textbf{e}_{i_2},...,\textbf{e}_{i_k}\} = \{\textbf{w}^i_{i_1}, \textbf{w}^i_{i_2},...,\textbf{w}^i_{i_k}\}

pooling层和concat层:

由于不同用户的行为不同,对于multi-hot编码的情况, \textbf{t}_{i}表示特征\{\textbf{e}_{i_1}, \textbf{e}_{i_2},...,\textbf{e}_{i_k}\}维度是不同的,而全链接神经网络只能处理定长维度的输入,最常用的方法是通过平均或者求和池化层(所有表示特征对应的每一个向量对应元素位置求平均或者求和)来处理得到一个定长的表示特征向量:

\textbf{e}_i = pooling(\textbf{e}_{i_1}, \textbf{e}_{i_2},...,\textbf{e}_{i_k})

以这种方式,所有的分组特征均被映射为定长的表示向量,随后这些表示向量连接(concat)成一个定长的表示向量代表这个实例的全连接层输入。

MLP

表示向量输入到MLP,MLP通常使用全连接网络,也有一些相关结构上的优化,这不是本文要重点介绍的。

损失函数

损失函数为典型的交叉熵函数:

L = - \frac{1}{N} \sum_{(\textbf{x},y) \in S}(y\log{p(\textbf{x})} + (1 -y)(1 -\log{p(\textbf{x})}))

S为训练集合,\textbf{x}为网络输入,y \in {0,1}为label,p(\textbf{x})为网络输出,表示被点击的概率,整个base网络结构如下

 深度兴趣网络结构

 如上表,我们首先看下物品推荐模型中常用的特征,其中用户行为特征(User Behavior Features)是非常重要的,在模型化用户的兴趣中起着决定性作用,然而对于一个用户,其行为的表示向量是相同的,不会因为推荐商品的不同而发生变化,而由于表示向量是一个定长向量,无法存储用户的多样性信息。考虑到之前买泳镜的例子,与推荐商品相关的用户行为应该在此商品CTR的预测中起到最重要的作用和权重。因此,与之前用户行为使用同一行为表示向量不同,DIN考虑推荐商品和用户历史行为的相关性,自适应地计算用户兴趣的表示向量表示向量会随着推荐物品的不同发生变化,其网络结构如下图:

可以看到,DIN增加了一个局部的激活单元,激活单元被用于用户行为特征向量计算,根据具体推荐商品A自适应计算一个加权的池化层求和计算表示特征向量\textbf{v}_U,公式如下:

\textbf{v}_U (A)= f(\textbf{v}_A, \textbf{e}_1, \textbf{e}_2,..., \textbf{e}_H) = \sum_{j=1}^{H}{a(\textbf{e}_j,\textbf{v}_A)\textbf{e}_j} = \sum_{j=1}^{H}{\textbf{w}_j\textbf{e}_j}

其中\{\textbf{e}_1, \textbf{e}_2,..., \textbf{e}_H\}是用户行为嵌入向量的列表, \textbf{v}_A为推荐商品A的嵌入向量。a(.)是一个前馈网络,输出作为激活权重,由于输入的是两向量的内积,能够反映出两向量的相关性。也就是说,相关性越强,该向量的权重就越大。这里并不归一化权重使得所有权重和为1,这样一定程度可以避免注意力全部集中在相关性最强的那个商品上。

训练技巧

正则化方法

由于参数过多,传统的正则化方法计算量极大,根本无法接受,因此引入了一种更加轻量级的正则化方法:

 其原理很简单,由于正则化主要的参数是内嵌字典,因此正则化的时候只计算实例对应的内嵌字典里的属性向量,这样就大大降低了运算量,使得正则化可以实现。

自适应激活函数

自适应激活函数是传统PReLU激活函数的一个改进,会根据每个batch数据的均质和方差调整

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值