DIN(Deep Interest Network):核心思想+源码阅读注释

论文地址: https://arxiv.org/abs/1706.06978
DIN是近年来较为有代表性的一篇广告推荐CTR预估的文章,其中使用的attention机制也为使用序列特征提供了新的思路。本文分析了DIN的核心思想。鉴于DIN源代码的变量命名过于随意,难以理解,这里也提供了部分源代码的注释,仅供参考。

论文分析

  • 核心思想:用户的兴趣是多元化的(diversity),并且对于特定的广告,用户不同的兴趣会产生不同的影响(local activation)。

  • 举个DIN论文上的例子:

    一位年轻的宝妈,在淘宝上点击了一个新款包包的广告(说明她对这一广告很感兴趣)。我们需要研究是什么因素造成了她会点击,以便今后给她投放类似的广告。一般来说,用户行为特征(user bahavior features)(如用户近期浏览/点击/购买过的商品等)具有决定性的因素。用户行为特征一般是指某个用户对于多个商品的行为序列。不同的用户,其用户行为序列的长度和内容都有很大差异(这就是diversity)。对于这位宝妈,假设其用户序列中包含了她最近浏览的新款托特包,皮革手袋,以及锅碗瓢盆等。很明显,和锅碗瓢盆相比,前两个商品对于她点击这一新款包包广告这一行为更具有决定性因素(这就是local activation)。那么对于其他的广告,如厨房清洁剂广告,则其用户行为序列中浏览的锅碗瓢盆部分会成为**预测该宝妈是否会点击该广告(即CTR预测)**的决定性因素。换句话说,预测某用户对于某广告的CTR时,不能对用户行为序列中所有商品都一视同仁,而是要考虑目标广告的具体内容与用户行为序列的结合。

  • 现存的Embedding+MLP模型的问题

    现有的CTR预测模型,如FNN,Wide&Deep,Deep Crossing,PNN等,其主要结构都是使用FM等方式实现Embedding,将大规模稀疏的Web数据转化为稠密的vector。由于输入特征中的用户行为序列一般为multi-hot编码,因此不同用户数据embedding后的vector长度数不同的。一般会将这些vector通过一个pooling层(sum pooling 或mean pooling)得到长度固定的vector,并输入到后续的MLP中训练。这一过程的问题是,所有用户的特征都用一个定长的vector来表示,并没有考虑到用户序列特征和目标广告之间的关系。DIN论文中使用的base model就是这样一种模型,如图1所示:

DIN(Deep Interest Network):核心思想+源码阅读注释_第1张图片

图1. base model
* 那么如何将两者结合起来呢?论文设计的DIN模型,可以自适应地在计算**用户兴趣向量**时考虑到用户历史行为与候选广告之间的关系。(原文:Instead pf expressing all user's diverse interests with the ssame vector, DIN adaptively calculates the representation vector of user interests by taking into consideration the relevance of historical behaviors w.r.t. candidate ad. ) 这种用户兴趣向量,对于不同的候选广告(candidate ad)来说是不同的。 至于如何在网络结构中实现,DIN引入了一种local activation unit,来计算用户行为特征和候选广告之间的关系,如图2所示:

DIN(Deep Interest Network):核心思想+源码阅读注释_第2张图片

图2. DIN model

对于候选广告, 根据local activation unit计算出的用户兴趣向量为:
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 (1) \boldsymbol v_U(A)=f(\boldsymbol {v_A,e_1,e_2,...,e_H} )=\sum_{j=1}^Ha\boldsymbol{(e_j,v_A)e_j}=\sum_{j=1}^H\boldsymbol{w_je_j} \tag 1 vU(A)=f(vA,e1,e2,...,eH)=

你可能感兴趣的:(深度学习,推荐系统,python)