DIEN:Deep Interest Evolution Net

2020-08-23  本文已影响0人  爿臣戈王耑

Deep Interest Evolution Network for Click-Through Rate Prediction

论文地址:Deep Interest Evolution Network for Click-Through Rate Prediction

摘要

  点击率预估的目标是评估用户点击的可能性,这是广告系统的核心之一。对于CTR预估模型,需要捕捉用户行为数据背后的用户兴趣。另外,考虑到外部环境和内部感知的变化,用户兴趣也会随着时间动态变化。兴趣建模的CTR模型有几种,其中大多数是将行为的表现直接视为兴趣,而缺乏对具体行为背后的潜在兴趣进行建模。此外,几乎没有研究考虑兴趣的变化。在本文中提出一种新颖的CTR模型:Deep Interest Evolu-tion Network (DIEN)。具体来说,设计了兴趣提取层(interest extractor layer )从历史行为序列中捕捉暂时的兴趣。在这一层,我们引入辅助损失(auxiliary loss)来监督每一个兴趣提取。由于用户的兴趣多的多样性,尤其是电子商务中,我们提出了兴趣进化层(interest evolving layer)来捕捉在给定item下的用户兴趣进化过程。在兴趣进化层,attention机制被新颖的嵌入到顺序结构中,使得相关兴趣的作用在兴趣进化过程中得到加强。在公共和工业数据集的实验中,DIEN明显优于迄今为止的解决方案。值得注意的是,DIEN已经部署到淘宝的展示广告体系中,CTR提高了20%。

简介

  CPC(Cost per click)计费方式是广告系统中最常见的计费方式之一,广告客户为广告的每次点击进行付费。在CPC广告体系中,CTR预估不仅影响整个平台的最终收入,而且还影响着用户体验。CTR预估模型在工业界和学术界得到越来越多的关注。

  在大多非搜索的电子商务场景中,用户不会主动的表达其当前意图。设计模型捕捉用户的兴趣和其变化是提高CTR模型性能的关键。最近,许多CTR模型已经由传统的方法论转换到深度方法论。许多深度CTR模型关注捕捉不同领域特征之间的交互,而较少关注用户的兴趣表示。DIN强调了用户兴趣的多样性,它使用attention机制来捕捉给定item下的相关兴趣,获得兴趣的自适应性的表示。然而,包括DIN在内的很多模型都是直接将用户行为视为兴趣,而很难通用户展示的行为来体现潜在的兴趣。先前的方法忽略了挖掘行为背后的用户真正的兴趣。此外,用户的兴趣不断变化,捕捉用户的兴趣的动态变化是很重要的。

  基于这么观察,本文提出DIEN模型。DIEN中有两个关键模块,一个是从用户的显示行为中捕捉用户的暂时兴趣,另外一个是对用户兴趣进化进行建模。正确的兴趣表示是建模兴趣变化的基础。在兴趣抽取层,DIEN采用GRU对行为之间依赖关系进行建模。遵循的原则是兴趣直接导致了连续的行为,提出辅助损失,即用用户的下一个行为来监督当前的隐藏状态。称这些额外监督的隐藏状态为兴趣状态。这些额外的监督信息有助于捕捉更多兴趣表征的语义含义和推动GRU隐藏状态有效的表示兴趣。此外,用户的兴趣是多样性的,这导致了兴趣漂移现象:相邻的访问行为中用户的意图可能非常不同,一个用户行为可能依赖于很久之前的行为。每个兴趣都有自己的进化轨迹。同时,一个用户的对不同候选item的点击动作受不同兴趣的部分影响。在内部的进化层,对特定item相关的兴趣进化轨迹进行建模。基于兴趣提取层的兴趣序列,设计了AUGRU( GRU withattentional update gate)。使用兴趣状态(就是带监督状态的GUR隐藏状态)和目标item计算相关性,AUGRU增强了兴趣进化层的兴趣影响,弱化了由于兴趣漂移而产生的不相关的兴趣影响。将attention机制引入到更新门之中,AUGRU可以导致针对不同目标item而产生不同兴趣的进化过程。

DIEN的主要贡献如下:

  在公共和工业数据集上进行实验,DIEN的性能是最优的。并且DIEN已经部署在淘宝的展示广告中,在各种指标下获得显著的提升。

相关工作

   凭借深度学习对特征的表示和组合的强大能力,最近传统的CTR模型由传统的线性或者非线性模型转变为深度模型。大多数的深度模型都是Embedding+MLP的结构。基于这种规则,越来越多的模型关注特征之间的相关关系。Wide&Deep和DeepFM模型都是结合低阶和高阶的特征来提高表示能力;PNN (Qu et al. 2016) 提出一个product layer 来捕捉类别之间的交互方式。然而这些方式都没有反应数据背后的兴趣。DIN(Zhou et al. 2018c)引入了attention机制在跟定item下的去激活历史的行为,成功的捕获到用户兴趣的多样性。然而DIN在捕捉用户行为顺序之间的依赖性很弱。
   在很多场景下,用户和项目的交互可以随着时间变化而记录下来。这些信息可以建立更丰富的个人模型和发现更多的行为模式。在推荐系统中, TDSSM(Song, Elkahky, and He2016)共同优化长期和短期的用户兴趣来提高推荐质量; DREAM(Yuet al. 2016) 使用RNN结果来研究每个用户的动态表示和item的购买全局序列。He and McAuley(2016)建立了视觉感知推荐系统,该系统会发现与用户和社区不断发展的兴趣更加匹配的产品。Zhang et al(2014)根据用户的兴趣序列来衡量用户的相似度,提高的协同过滤的推荐效果。Parsanaet al(2018)通过使用大规模的事件embedding和RNN网络的attention输出来提高原生广告的CTR。ATRank(Zhou et al. 2018a)使用基于attention机制的顺序框架来对异构行为建模。与不采用序列的方法相比,这些方法可以显著提高预测准确性。
   然而,这些传统的基于RNN模型存在一些问题。一方面,它们大多数都是将顺序序列的隐藏状态直接视为潜在兴趣,而这些隐藏状态又缺乏对兴趣表示的特殊监督。另一方面,大多基于RNN模型平等的处理相邻行为的之间的依赖关系。众所周知,并非所有的用户行为都严格依赖于每个相邻的行为。每个用户都有不同的兴趣,每一个兴趣都有自己的进化轨迹。对于任何给定item,这些模型只能获得一个固定的兴趣进化轨迹,因此这些模型可能受到兴趣漂移的影响。

   为了使得顺序结构的隐藏状态有效的表示潜在兴趣,应该对隐藏状态进行额外的监督。DARNN(Ren et al.2018)使用点击级别的序列预测,对每次向用户展示广告时的点击动作建模。除了点击动作,还可以引入排名信息。在推荐系统中,rank损失已经被广泛的使用。与rank损失相似,本文提出兴趣学习的辅助损失。在每一步,辅助损失采用点击的item去对抗不点击的item的方式 来监督兴趣学习的表示。
   为了捕捉与给定item相关的兴趣的进化过程,需要更加灵活的顺序结构。在问答领域,DMN+(Xiong, Merity,and Socher 2016)使用了基于attention的GRU(AGRU)来推动注意力机制去感知输入的顺序和顺序,在AGRU中更新门的向量简单的用attention的分值来代替。这种替换忽略的更新门中所有维度中的差异,这些差异包含了先前序列中带来的丰富信息。受到QA中新颖的顺序序列启发,本文提出基于attention门的GRU(AUGRU),用于激活兴趣进化中的相关兴趣。与AGRU不同,AUGRU中的attention分值用来计算更新门的计算信息。更新门和attention分值的结合推动了更具体更敏感的兴趣进化过程。

DIEN

  接下来详细的介绍DIEN(Deep Interest Evolution Network)。首先,回顾一下基于深度的CTR模型,命名为\color{red}{BaseModel}。然后,介绍DIEN的整体结构和用于捕捉用户兴趣和对兴趣进化过程建模的技术。

Review of BaseMode

  从特征表示、模型结构、损失函数三方方面来回顾BaseModel。
特征表示:在我们的在线展示广告系统中,分为四类特征:用户信息、用户行为、广告、上下文信息。显然广告也是item。为了便捷,我们这里把广告作为目标item。每个类型的特征都有多个字段(fields)。用户信息的字段包括性别、年龄等等;用户行为的字段包括用户访问过的商品id;广告的字段包括广告id、商品id等;上下文的字段是时间之类的。每个特征可以编码为one-hot的形式,例如用户信息中的女性可以编码为[0,1]。用户信息、用户行为、广告、上下文的特征onehot集合可以分别用x_p,x_b,x_a,x_c来表示。在CTR序列模型中,值得注意的是每一个字段(这里我认为是每一个样本)都包含行为列表,每一个行为对应这onehot变量,可以用x_b=[b_1;b_2;...;b_T] \in \mathbb{R}^{K \times T} , b_t \in \{0,1\}^K来表示,其中b_t表示第t个行为的onehot向量表示,\color{red}{T}表示用户历史行为数,\color{red}{K}表示的是用户可以点击的总商品数。
模型结构:大多数CTR深度模型都是基于embedding & MLP的,基础结构由以下几部分组成:

损失函数:在CTR深度模型中广泛使用的损失函数是负对数似然函数,使用label来监督整体的预测:L_{target}= - \frac{1}{N} \sum_{(x,y) \in \mathcal{D}}^{N} (y \log{p(x)}+(1-y) \log(1-p(x))) \tag{1},这里x=[x_p,x_a,x_c,x_b] \in \mathcal{D},\mathcal{D}是大小为N的训练集。y \in {0,1}表示是用户是否点击目标item。p(x)是网络的输出,表示的是用户点击目标item的概率。

Deep Interest Evolution Network

DIEN结构

  不同于付费搜索,在许多类似在线展示广告的电子商务平台上,用户不能清楚表达他们的意图,因此捕捉用户的兴趣对提高CTR准确性至关重要。DIEN致力于捕捉用户兴趣和对兴趣进化过程进行建模。如图1展示的,DIEN分为一下几个部分。首先,所有的类别特征通过embedding层进行转化。然后,DIEN采用2步来捕捉用户进化过程:兴趣提取层基于用户行为序列抽取兴趣序列;兴趣进化层模拟了相对于目标item下的兴趣进化过程。最后,最终的兴趣表示和广告、用户信息、上下文的embedding向量进行拼接。拼接的向量最后喂到MLP中进行最后的预测。接下来分别介绍兴趣提取层和兴趣进化层。

Interest Extractor Layer

兴趣提取层。在电子商务系统中,用户行为是用户潜在兴趣的载体,用户采取一个行为后兴趣也会发生变化。在兴趣提取层,从用户的行为序列中提取一系列的兴趣状态。
   电子商务系统中用户的行为是丰富的,在短时间内(例如两周)就会产生很长的用户历史行为。为了平衡效率和性能,采用GRU对行为之间的依赖关系进行建模,其中GRU的输入是按行为发生的时间顺序。GRU克服了RNN梯度消失的问题,并且比LSTM更快。GRU的公式如下:
u_t= \sigma(W^u i_t+U^u h_{t-1} +b^u ) \tag{2}
r_t = \sigma(W^r i_t + U^r h_{t-1} + b^r) \tag{3}
\tilde{h_t} = \tanh(W^h i_t + r_t \circ U^h h_{t-1} +b^h) \tag{4}
h_t = (1-u_t) \circ h_{t-1} + u_t \circ \tilde{h_t} \tag{5}
这里\sigma是sigmoid激活函数,\circ 是元素积(element-wise product),W^u,W^r,W^h \in \mathbb{R}^{n_H \times n_I} ,U^u,U^r,U^h \in \mathbb{R}^{n_H \times n_H} ,n_H是隐藏层大小,n_i是输入层大小。i_t是GRU的输入,i_t=e_b[t]表示的用户第t个行为embedding向量,h_t表示的第t个隐藏状态。

GUR结构:


GRU结构
GRU公式结构图

元素积element-wise product:
向量元素积。m维与n维的元素积变成m * n维矩阵。n维与n维的元素积变成n维向量。
矩阵元素积。m * n维矩阵与m * n维矩阵的元素积变成m * n维矩阵
x \circ y = \left[ \begin{matrix} x_1 & \dots & x_n \end{matrix} \right] \left[ \begin{matrix} y_1 & \dots & y_n \end{matrix} \right] = \left[ \begin{matrix} x_1 y_1 & \dots & x_n y_n \end{matrix} \right]
x \circ y = \left[ \begin{matrix} x_1 & \dots & x_n \end{matrix} \right] \left[ \begin{matrix} y_1 \\ \dots \\ y_m \end{matrix} \right] = \left[ \begin{matrix} x_1 y_1 & \dots & x_n y_1 \\ \dots & \dots & \dots \\ x_1 y_m & \dots & x_n y_m \\ \end{matrix} \right]
x \circ y = \left[ \begin{matrix} x_{11} & \dots & x_{1n} \\ \dots & \dots & \dots \\ x_{m1} & \dots & x_{mn} \end{matrix} \right] \left[ \begin{matrix} y_{11} & \dots & y_{1n} \\ \dots & \dots & \dots \\ y_{m1} & \dots & y_{mn} \end{matrix} \right] = \left[ \begin{matrix} x_{11}y_{11} & \dots & x_{1n}y_{1n} \\ \dots & \dots & \dots \\ x_{m1}y_{m1} & \dots & x_{mn}y_{mn} \\ \end{matrix} \right]

   然而,仅仅捕获行为之间的依赖关系是不能有效的表示兴趣的。如果item的点击行为是有最终的兴趣触发的,在L_{target}中使用的label只包含监督最终兴趣的事实,然而历史状态h_t无法得到适当的监督。众所周知,每一步兴趣状态都直接引起连续的行为。因此提出辅助损失,使用b_{t+1}来监督兴趣状态的h_t。除了使用实际的下一个行为做完正例,还从数据集中抽取的了负例。N对行为embedding序列:\{ e_b^i , \hat{e}_b^i \} \in \mathcal{D}_\mathcal{B} , i \in 1,2,\dots,N,这里e_b^i \in \mathbb{R}^{\times n_E}表示点击的行为序列 ,\hat{e}_b^i \in \mathbb{R}^{\times n_E}表示没有点击的行为序列 。T是历史行为数,n_E表embedding维数,e_b^i[t] \in \mathcal{G}表示用户i点击第t个item的embedding向量,\hat{e}_b^i \in \mathcal{G} - e_b^i[t]表示的是除用户i在第t步单击的item外,从数据集中采样的item的embedding向量。
辅助损失函数公式如下:
L_{aux} = - \frac{1}{N}(\sum_{i=1}^{N} \sum_t \log \sigma(h_t^i ,e_b^i[t+1])\\ + \log(1-\sigma(h_t^i ,\hat{e}_b^i[t+1]) )) \tag{6}
这里\sigma(x_1,x_2)=\frac{1}{1+exp(-[x_1,x_2])}是sigmoid激活函数,h_t^i表是的用户i的第t个隐藏状态。所以,DIEN使用的整体的损失函数是:
L =L_{target} + \alpha \ast L_{aux} \tag{7}
这里\alpha是平衡兴趣表示和CTR预估的超参数。

   在辅助损失的的帮助下,每一个隐藏状态h_t用户采取行为i_t后的兴趣状态。连接T个兴趣点[h_1,h_2,\dots,h_t]组成兴趣序列,兴趣进化层可以在此基础上进行对兴趣进化进行建模。

   总的来说引入辅助损失有几个优点:从兴趣学习的角度来看,辅助损失可以帮助GRU的隐藏状态表示用户兴趣。对于GRU的优化,当GRU模拟长历史行为序列时,辅助损失降低了反向传播的难度(why???)。最后,辅助损失为embedding层提供了更多的语义信息,可以产生更好的embedding矩阵。

Interest Evolving Laye

兴趣进化层。随着外部环境和内部认知共同影响,用户的不同兴趣随着时间变化而变化。以服装兴趣为例,随着人们流向趋势和用户品味发生变化,用户对衣服的偏好也随之变化。用户对衣服的兴趣的进化过程直接决定了候选衣服的CTR预估。建立兴趣进化过程模型有以下优点:

要注意的是兴趣进化过程中表现以下2个特点。

   在第一个阶段,在辅助损失的帮助下,我们已经获得兴趣序列的表达形式。通过分析兴趣进过的特征,结合attention机制中的局部激活能和GRU序列学习能力来对兴趣进化过程进行建模。GRU中每一个步中的局部激活可以增加对相关兴趣的兴趣,减弱兴趣漂移带来的影响,这有助于对特定item下的兴趣进化过程进行建模。

   与上述公式2-5相似,我们使用i_t^{'},h_t^{'}分别表示兴趣进化层中的输入和隐藏状态,这里的输入就是上一层(兴趣抽取层)中的输出:i_t^{'}=h_t 。这里最终的隐藏状态h_t^{'}表示最终的兴趣状态。

   在兴趣进化模块中的attention机制的函数如下:
a_t = \frac{\exp(h_t W_{e_a})}{\sum_{j=1}^{T} \exp(h_t W_{e_a} )} \tag{8}
这里e_a表示是不同类别广告的embedding向量后的连接,W \in \mathbb{R}^{n_H \times n_A},n_H是隐藏状态的维度,n_A是广告embedding向量的维度。attention分数反应了广告e_a和输入h_t之间的关系,相关性强的分数越大。

   下一步,如何将attention机制加入到GUR中呢?下面介绍三种。

   在AUGRU中,保留了更新门中的原始信息,这决定了每个维度的不同影响。基于差异化嬉戏,使用attention分数a_t来缩放更新门的所有维度,这导致了相关性较小的兴趣对隐藏状态影响较小。AUGRU可以更有效的避免兴趣漂移带来的干扰,推动相关的兴趣平稳的进化。

实验

   本章节将DIEN对比已有的模型效果。此外,设计了实验分别验证辅助损失和AUGRU的效果。为了能观察到兴趣进化的过程,设置了兴趣隐藏状态的可视化结果。

数据集

使用公共和工业数据集上来验证DIEN的效果。数据集的统计信息见表1.


数据集信息

公共数据集。亚马逊数据集是亚马逊的产品和评论组长的。这里采用亚马逊数据的两个子集:Books 和 Electronics来验证DIEN的效果。在这些数据集中,将评论当做行为,按时间对一个人的评论进行排序。假设用户uT个行为,我们的目标是利用这个T-1个行为来预测用户u是否对写出第T次评论。
工业数据集。这个数据集是阿里的在线展示广告系统中曝光和点击日志组成的。对于训练集,采用过去49天的点击的广告作目标item。每一个目标item和它相应的点击行为构成了一个实例。用一个目标item a为例,将a被用户点击的日期作为最后一天,这个用户前14天的行为作为历史行为。测试集中也是类似。

模型比较

公共数据集结果

   DIEN的结构包含了GRU、AUGRU、辅助损失和其他的正常模块。在公共数据集上,每个实验重复5次。

公共数据集上AUC

   实验结果见表2。可以发现设计的Wide$Deep模型表现不俗很好,PNN可以提高base model的性能。同时,意在捕捉用户兴趣的模型可以显著提高AUC:DIN激活了与广告相关的兴趣,Two layer GRU attention进一步在兴趣序列中激活兴趣,所有的这些设计得到正向的反馈。DIEN不仅能更有效的捕捉兴趣序列,而且对于目标item相关的兴趣进化过程进行建模。兴趣进化过程有助于DIEN获得更好的兴趣表示,并精确捕捉兴趣的动态,这极大的提高了性能。

工业数据集结果

   设计实验在真正的展示广告中进行实验。设计了6层FCN层,维度分别是600、400、300、200、80、2。最大的历史序列长度设置为50。

工业数据集上的AUC

   如表3所示,Wide&Deep 和PNN模型都能获得比BaseModel更好的性能。不同于亚马逊只有一个类别的数据集,在线广告包含了各种各样类别商品。基于这个特点,基于注意力机制的模型(DIN)极大的提高了性能。DIEN捕捉了与候选广告相关的兴趣进化过程,获得了更好的性能。

应用研究

   下面分别验证AUGRU和辅助损失的效果。

AUGRU和辅助损失的AUC

AUGRU效果

表4展示了兴趣进化的不同方式的结果。相比Base Model,Two layer GRU Attention 提升了效果,然而缺乏兴趣进化限制了它的能量。AIGRU尽管有进步,但在兴趣进化过程中注意力发生了分裂 和丢失了信息。AGUR进一步尝试融合注意力和兴趣进化,但是在GUR中的attention无法再更新门中充分利用。AUGRU获得明星的改进,这反应了理想的融合注意力机制和顺序学习思想,有效的捕捉了相关兴趣的进化过程。

辅助损失效果

   基于AUGRU获取的模型,进一步验证辅助损失的效果。在公共数据集上,辅助损失使用的负例是从排除正例的数据集中随机抽样的。在工业数据集上,未点击的广告作为负例。如图2展示,整体的损失L和辅助损失L_{aux}是有相似的下降趋势的,这意味着CTR的整体损失和辅助损失对兴趣表示来说都有效。

公共数据集上的学习曲线

   表4中,辅助损失在公共数据集上带来显著的提升,这反应了监督学习对顺序序列的学习和embedding表示的重要性。对于表3中工业数据,辅助损失进一步的提高了性能。然而,发现提升效果不如公共数据集上那么明显。这个差异来源于几个方面。第一,对于工业数据集,它有大量的样本去学习embedding层,这是得辅助损失获得的收益减少。第二,与亚马逊一个类别的数据集不同,工业数据的点击行为是来源于阿里平台所有场景和所有的类目的商品。目标是在一个场景中预测广告点击率。辅助损失中使用的监督信息可能与目标item有所不同,所以辅助损失对于工业数据集提示效果较小,但是AUGRU的影响被放大。

兴趣进化可视化

AUGRU中的隐藏状态的动态变化可以反映兴趣的进化过程。对隐藏状态进行可是来探索不同目标item对兴趣进化的影响。

兴趣进化层可视化

   从以下类别中选择历史行为:电脑音箱、耳机、车载GPS、SD&SDHC卡、微型SD卡、外部硬盘、头戴电话、手机壳等等。AUGRU中的隐藏状态通过PCA转为2维。变为2维的隐藏状态按顺序进行连接。不同目标item下的激活的隐藏状态移动路线在图3a中展示。这黄色的曲线表示的是无后续item下的attention分数(计算方式与公式12相等),即兴趣的进化没有收到候选item的影响。蓝色曲线表示在屏幕保护膜类商品下的隐藏状态的变化过程,它与所有的历史行为关系不大,因此它与黄色曲线类似。红色的曲线是在手机壳类商品激活的隐藏状态的变化过程,这个目标item强相关历史行为,如图所示,它移动的很长的过程。相应的,如图3-b所示,最后一个行为获得较大的attention得分。

个人理解,就是说与历史行为相关的候选item的兴趣 会保留的更长(一段时间不发送变化),与候选item无关的隐藏状态变化 等同于没有候选item的隐藏状态变化。这就说明了,AUGRU对兴趣进化的建模的有效性

在线服务& AB实验

AB实验结果

实验是从2018-06-07到2018-07-12,AB实验在淘宝的在线广告中进行。如表5所示,相比较BaseModel,DIEN对CTR的收益性对提高了20.7%,eCPM提高了17.1%。另外DIEC减少了PPC(按点击收费)3%。DIEN已经部署在主要流量,为业务收入的做出了显著的贡献。

   DIEN对在线服务的商业系统来说是一个巨大的挑战。在线广告系统拥有相关高的流量,这流量高峰达到了每秒100w用户。为了保证低延迟和高吞吐,设计了几种方案。(1)元素并行化GRU&内核融合,尽可能的融合更多的独立内核。此外并行化计算GRU的隐藏状态。(2)批处理:将来自不同用户的相邻请求合并为一批来使用GPU。(3)用Rocket Launchin方式模型压缩:借助压缩模型的方式,可以将GRU隐藏状态的维数从108降到32。在这些技术的影响下,DIEN服务延迟从38.2ms减少到6.6ms,每个worker的QPS可以提高到360。

并行优化和优化延迟这块象征的看一下(反正,我也没看懂)。

结论

本文提出了一个新的网络结构DIEN(Deep Interest Evolution Networ),去模拟兴趣进化的过程。DIEN提高了CTR。具体来说,设计了兴趣提取层来捕捉兴趣序列,它使用辅助损失提供给兴趣状态更多的监督。然后,提出了兴趣进化层,其中DIEN使用了AUGRU来对特定item下的兴趣进化进行建模。在AUGRU的帮助下,DIEN克服了兴趣漂移的干扰。对兴趣进化进行建模有助于更有效的捕捉兴趣,进一步提高了CTR。

这片文章主要是设计了辅助损失和AUGRU。

上一篇下一篇

猜你喜欢

热点阅读