基本想法
首先说说DIN(Deep Interest Network)到底在干嘛,DIN主基本想法是:利用用户的历史行为序列(下单,点击等)提高推荐物品的点击率。
论文中有这样一幅图:
图中显示了一个女生的行为序列,被推荐物品是一个女大衣。传统的推荐物品的CTR计算方法是不会区别对待历史行为中的物品与被推荐物品的相关度,也就是下文提到的基础模型。DIN最大的特点是在计算推荐物品的CTR时,考虑历史序列中的物品对当前推荐物品的影响(图中的进度条),也就是Attention机制。这也是阿里将attention机制引入推荐模型的动机。
论文显示介绍了一个通用的基准模型,然后在加入attention机制,得到DIN模型
基准模型
基础模型共享一个类似的嵌入和多层感知机的范式,如下图所示。它由几个部分组成:
(1)Embedding layer:嵌入层,将输入(高维二进制向量)转换成低维稠密表示。
(2)Pooling layer and Concat layer:常见的池化操作有:sum pooling and average pooling,对嵌入向量列表应用求和/平均操作。因为用户的行为序列一般是不同的,因此可以对所有的Embedding结果进行sum pooling,得到一个固定大小的向量,作为全连接层的输入。
嵌入和池化层将原始的稀疏特征映射到多个固定的长度表示向量。然后将所有向量连接在一起获得实例的整体表示向量。
(3)MLP:多层感知机,完全连接层用于自动学习特征的组合。
(4)Loss:基本模型中使用的目标函数是负对数似然函数,定义如下:
L = − 1 N ∑ ( x , y ) ∈ S ( y l o g p ( x ) + ( 1 − y ) l o g ( 1 − p ( x ) ) ) L = - \frac{1}{N} \sum_{(x,y) \in S}(ylogp(x)+(1-y)log(1-p(x))) L=−N1(x,y)∈S∑(ylogp(x)+(1−y)log(1−p(x)))
DIN模型
基本原理
与基本模型相比,DIN引入了一种新颖的Activation Unit,保留其他结构不变,与base模型基本相同。Activation Unit可以自适应地计算在给定广告A 的情况下用户表示向量 v u \mathbf v_u vu
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 v_U(A) = f(v_A,e_1,e_2,...,e_H)=\sum_{j=1}^Ha(e_j,v_A)e_j=\sum_{j=1}^Hw_je_j vU(A)=f(vA,e1,e2,...,eH)=j=1∑Ha(ej,vA)ej=j=1∑Hwjej
其中, { e 1 , e 2 , … , e H } \{e_1,e_2,\dots,e_H\} {
e1,e2,…,eH} 是用户u的历史行为嵌入向量(历史序列长度为H),a(.)是Activation Unit的输出权重,此处的权重不需要进行softmax归一化,理由如下:
在t恤和手机两个候选广告中,t恤激活了大部分属于衣服的历史行为,衣服可能会比手机获得更大的权重值(更高的兴趣强度)。传统的注意力方法通过对a(·)的输出进行softmax归一化而失去了数值尺度上的分辨率。
v U v_U vU是代表用户行为的embedding向量, v A v_A vA 是候选广告商品的embedding向量, e i e_i ei是用户u的第i次行为的embedding向量,没有引入注意力机制的基准模型中, v U v_U