《Deep Interest Evolution Network for Click-Through Rate Prediction》
点击付费(cost per click: CPC
)是广告系统中最常见的计费形式之一,广告主需要为广告的每次点击付费。在 CPC
广告系统中,点击率(click-through rate: CTR
)预估的表现不仅会影响到整个平台的最终收入,还会影响到用户体验(user experience
)和满意度(satisfaction
)。点击率预估建模越来越受到学术界和工业界的关注。
在大多数 non-searching
的电商场景中,用户不会主动表达当前的意图。设计模型以捕获用户的兴趣及其兴趣的动态(dynamics
)提高点击率预估性能的关键。最近,很多 CTR
模型从传统方法转变到深度 CTR
模型。大多数深度 CTR
模型聚焦于捕获来自不同 fields
的特征之间的交互,而不太关注用户兴趣 representation
。DIN
强调用户兴趣是多样的,并使用 attention based
的模型来捕获与目标 item
相关的兴趣,从而获得自适应的兴趣 representation
。然而,包括 DIN
在内的大多数兴趣模型都将行为直接视为兴趣,而显式的行为很难充分反映潜在的兴趣。因此这些方法都忽略了挖掘用户行为背后真正的用户兴趣。此外,用户兴趣不断演变(evolve
),捕获兴趣的动态对于兴趣 representation
很重要。
基于所有这些观察,论文《Deep Interest Evolution Network for Click-Through Rate Prediction》
提出了深度兴趣演变网络(Deep Interest Evolution Network: DIEN
)来提高 CTR
预估的性能。DIEN
中有两个关键模块:一个是从显式的用户行为中提取潜在的时序兴趣(temporal interest
),另一个是对兴趣演变过程(interest evolving process
)进行建模。恰当的兴趣 representation
是 DIEN
模型的基石。
在兴趣提取层(interest extractor layer
) ,DIEN
选择 GRU
来建模行为之间的依赖关系。遵循兴趣直接导致连续行为的原则,论文提出了辅助损失,它使用下一个行为(next behavior
)来监督当前隐状态(hidden state
)的学习。论文将这些具有额外监督信息的隐状态称作兴趣状态(interest state
)。这些额外的监督信息有助于为兴趣 representation
捕获更多的语义信息,并推动 GRU
的隐状态有效地表达兴趣。
更进一步,用户的兴趣是多样化的,这导致了兴趣漂移(interest drifting
)现象:用户在相邻访问中的意图可能非常不同,并且用户的一种行为可能依赖于很久以前的行为。每个兴趣都有自己的演变轨迹(evolution track
)。同时,一个用户对不同目标 item
的点击行为受到不同兴趣部分的影响。
在兴趣演变层(interest evolving layer
),论文对于目标 item
相关的兴趣演变轨迹进行建模。基于从兴趣提取层获得的兴趣序列,论文设计了具有注意力更新门的 GRU
,即 GRU with attentional update gate: AUGRU
。AUGRU
利用兴趣状态和目标 item
计算相关性,增强了相关兴趣(relative interests
)对于兴趣演变的影响,同时削弱了因为兴趣漂移导致的非相关兴趣的影响。通过在更新门中引入注意力机制,AUGRU
可以导致针对不同目标 item
的、特定的兴趣演变过程。
DIEN
的主要贡献如下:
论文聚焦电商系统中的兴趣演变现象,并提出了一种新的网络结构来建模兴趣演变过程。建模兴趣演变导致更具表达性的兴趣 representation
和更精确的点击率预估。
不同于直接将行为作为兴趣,论文专门设计了兴趣提取层。针对 GRU
的隐状态较少地针对兴趣 representation
的问题,论文提出了一种辅助损失。该辅助损失使用连续行为(consecutive behavior
)来监督每个 step
隐状态的学习。这使得隐状态足以代表潜在的兴趣。
论文创新地设计了兴趣演变层,其中带有注意力更新门的 GRU
加强了目标 item
相关的兴趣的影响,并克服了兴趣漂移问题。
在公共数据集和工业数据集的实验中,DIEN
显著优于 SOTA
的解决方案。值得注意的是,DIEN
已经部署在淘宝展示广告系统中,并在各种指标下获得了显著的提升( 20.7%
的点击率提升)。
相关工作:凭借深度学习在特征 representation
和特征组合方面强大的能力,最近的 CTR
模型从传统的线性模型或非线性模型转变到深度模型。大多数深度模型遵循 Embedding & MLP
的结构。基于这种范式,越来越多的模型关注特征之间的交互(interaction
):
Wide & Deep
和 DeepFM
都结合了低阶特征交互和高阶特征交互来提高表达能力。
PNN
提出了一个 product layer
来捕获跨 field
特征之间的交互模式。
然而,这些方法并不能清晰地反映数据背后的用户兴趣。DIN
引入了注意力机制来激活局部的、与目标 item
相关的历史行为,并成功地捕获到用户兴趣的多样性特点(diversity characteristic
)。然而,DIN
在捕获序列行为(sequential behaviors
)之间的依赖关系方面很弱。
在很多 application
领域中,可以随时间记录 user-item
交互。最近的一些研究表明,这些交互信息可用于构建更丰富的单个用户模型(individual user model
)并挖掘额外的行为模式(behavioral pattern
)。在推荐系统中:
TDSSM
联合优化长期用户兴趣和短期用户兴趣,提高推荐质量。
DREAM
使用 RNN
结构来研究每个用户的动态 representation
以及 item
购买历史的全局序列行为(global sequential behavior
)。
《Ups and downs: Modeling the visual evolution of fashion trends with one-class collaborative filtering》
构建了视觉感知推荐系统,该系统展示了更符合用户和社区(community
)不断演变兴趣的产品。
《Sequential click prediction for sponsored search with recurrent neural networks》
根据用户的兴趣序列衡量用户的相似性,从而提高协同过滤推荐的性能。
《Improving native ads ctr prediction by large scale event embedding and recurrent networks》
通过使用大规模 event embedding
和 RNN
网络的 attentional output
来改进原始的 CTR
预估性能。
ATRank
使用基于注意力的序列框架( attention based sequential framework
)来建模异质行为(heterogeneous behavior
)。
和序列无关的方法相比,这些方法可以显著提高预测准确性。然而,这些传统的基于 RNN
的模型存在一些问题。
一方面,它们大多将序列结构的隐状态直接视为潜在兴趣,而这些隐状态缺乏对兴趣 representation
的、专门的监督。
另一方面,大多数现有的基于 RNN
的模型依次地、平等地处理相邻行为之间的所有依赖关系。众所周知,并非所有的用户行为都严格依赖于相邻的行为。每个用户都有多样化的兴趣,每个兴趣都有自己的演变轨迹,因此这些模型可能会受到兴趣漂移的干扰。
为了推动序列结构的隐状态有效地代表潜在兴趣,应该引入对隐状态的额外监督。DARNN
使用 click-level
的序列预测,它在每次向用户展示每个广告时,对点击动作进行建模。除了点击动作,还可以进一步引入 ranking
信息。在推荐系统中,ranking loss
已经被广泛用于排序任务。与这些 ranking loss
类似,我们提出了兴趣学习的辅助损失。在每个step
,辅助损失使用 next clicked item
和 non-clicked item
来监督兴趣 representation
的学习。
为了捕获与目标 item
相关的兴趣演变过程,我们需要更灵活的序列学习结构(sequential learning structure
)。在问答(question answering: QA
)领域,DMN+
使用基于注意力的 GRU
,即 attention based GRU: AGRU
来推动注意力机制对输入事实(fact
)的位置和顺序都保持敏感。在 AGRU
中,更新门向量被简单地替换为标量的 attention score
。这种替换忽略了更新门所有维度之间的差异,这种差异包含了从先前序列传输的丰富信息。受到 QA
中使用的新型序列结构的启发,我们提出了带注意力门的 GRU
,即 GRU with attentional gate: AUGRU
,从而在兴趣演变过程中激活相关的兴趣。和 AGRU
不同,AUGRU
中的 attention score
作用于从更新门计算出的信息。更新门和 attention score
的结合推动了更专有(specifically
)、更敏感(sensitively
)的演变过程。
这里我们详细介绍 DIEN
。首先我们简单回顾一下名为 BaseModel
的、基础的 Deep CTR
模型。然后我们展示了 DIEN
的整体结构,并介绍了用于捕获兴趣和建模兴趣演变过程的技术。
Feature Representation
:在线展示广告系统中,有四类特征:
用户画像特征(user profile
):包括性别、年龄等。
用户行为特征(user behavior
):包括用户访问的商品ID
列表。
广告特征(AD
):广告本身也是商品,因此称作目标商品。它包含商品ID
、店铺ID
等特征。
上下文特征(Context
):包含当前访问时间等特征。
每类特征中每个field
的特征都编码为 one-hot
向量。例如用户画像中的 female
特征编码为 [0,1]
。假设用户画像、用户行为、广告、上下文这四类特征中不同 field
的 one-hot
向量拼接之后分别为
在序列的 CTR
模型中,值得注意的是,用户行为特征包含一个行为列表,每个行为对应一个 one-hot
向量,可以表示为:
其中 one-hot
向量。
BaseModel
的结构:大多数 deep CTR
模型基于 Embedding & MLP
结构,因此 BaseModel
主要由以下部分组成:
Embedding
部分:embedding
是将大规模稀疏特征转换为低维稠密特征的常用操作。在 embedding layer
,每个特征 field
对应一个 embedding
矩阵。例如,visited goods
的 embedding
矩阵可以表示为:
其中: embedding
向量,embedding
向量维度,
对于行为特征的one-hot
向量 embedding
向量 embedding
向量列表可以表示为:
MLP
部分:将来自同一类特征的所有 embedding
向量馈入一个池化层,得到一个固定长度的向量。然后将来自不同类特征的固定长度向量拼接在一起,馈入 MLP
网络中得到最终预测结果。
损失函数:深度 CTR
模型中广泛使用的损失函数为负的对数似然,它使用目标 item
的 label
来监督整体预测结果。即:
其中:
item
。
item
的概率。
与赞助搜索(sponsored search
)不同,在很多电商平台中,用户并没有清晰地表达他们的意图,因此捕获用户兴趣及其动态(dynamics
)对于 CTR
预估很重要。DIEN
致力于捕获用户兴趣并建模兴趣演变过程。
如下图所示,DIEN
由几个部分组成。
首先,所有离散特征都通过 embedding layer
进行转换。
接下来,DIEN
采取两个步骤来捕获兴趣演变:
兴趣提取层(interest extractor layer
)根据行为序列提取兴趣序列。
兴趣演变层(interest evolving layer
)建模与目标 item
相关的兴趣演变过程。
然后,将最终兴趣的 representation
、广告 embedding
向量、用户画像 embedding
向量、上下文 embedding
向量拼接起来。拼接的向量馈入 MLP
以进行最终的预测。
在电商系统中,用户行为是用户潜在兴趣的载体,用户执行一次行为之后兴趣可能就会发生变化。在兴趣提取器层,我们从连续的用户行为中提取一系列的兴趣状态。
电商系统中用户的点击行为非常丰富,即使在很短时间内(如两周),用户历史行为序列的长度也很长。为了在效率和性能之间平衡,我们采用 GRU
建模行为之间的依赖关系,其中 GRU
的输入是按发生时间排序的行为。GRU
克服了 RNN
的梯度消失问题,比 LSTM
更快,适用于电商系统。GRU
形式化为:
其中:
sigmoid
激活函数,
embedding
,它作为 GRU
的输入。
然而,仅捕获行为之间依赖关系的隐状态 item
的点击行为是由最终兴趣触发的,因此损失函数 label
仅仅监督了最后一个兴趣状态
众所周知,用户每一步的兴趣状态都将导致连续的行为,因此我们提出辅助损失,从而利用第 next behavior
作为正样本之外,我们还从正样本之外采样了一些 item
作为负样本。因此得到 embedding
序列:
其中:
embedding
, embedding
维度。
item
的 embedding
向量, item
的 embedding
集合。
item
以外的所有item
中采样得到的item embedding
。
辅助损失函数为:
其中:
sigmoid
激活函数。
item
的 embedding
向量,它作为第 postive
的监督信息;item
的 embedding
向量,它作为第 negative
的监督信息。
考虑辅助损失之后,DIEN
模型的整体目标函数为:
其中: CTR
预测。
通过引入辅助函数,每个隐状态
总体而言,引入辅助函数具有多个优点:
从兴趣学习的角度看,辅助损失函数的引入有助于GRU
的每个隐状态学到正确的兴趣representation
。
从 GRU
优化的角度看,辅助函数的引入有助于缓解 GRU
的长距离依赖问题,降低反向传播的难度。
还有不怎么重要的一点:辅助损失函数为 embedding
层的学习提供了更多的语义信息,从而产生更好的 embedding
矩阵。
随着外部环境和用户自身认知的共同作用,用户的各种兴趣随着时间的推移也在不断演变。以用户对衣服的兴趣为例,随着人口趋势和用户品味的变化,用户对衣服的偏好也在改变。这种兴趣演变过程直接决定了候选衣服商品的点击率预测。对这种兴趣演变过程进行建模有以下优点:
兴趣演变模块(interest evolving module
)可以提供具有更多相关历史信息的最终兴趣的 representation
。
可以更好地跟随兴趣演变趋势来预测目标 item
的点击率。
值得注意的是,在演变过程中兴趣表现出两个特点:
由于兴趣的多样性,兴趣可能会发生漂移(drift
)。兴趣漂移对用户行为产生的影响是:用户可能在某个时间段对各种书籍感兴趣,但是另一个时间段可能对各种衣服感兴趣。
尽管兴趣之间会相互影响,但是每种兴趣都有自己的演变过程。如:书籍和衣服的兴趣演变过程几乎是独立的。我们只关注和目标 item
相关的兴趣演变过程。
在第一阶段辅助损失的帮助下,我们获得了兴趣序列的 representation
。通过分析兴趣演变的特点,我们结合注意力机制的局部激活能力以及GRU
的序列学习能力来建模兴趣演变过程。在 GRU
的每个 step
,局部激活都可以强化相关兴趣的影响,并减弱无关兴趣(兴趣漂移)的干扰,有助于建模目标item
相关的兴趣演变过程。
令
我们在兴趣演变模块中使用的 attention score
函数定义为:
其中:
a
各 field
的 embedding
向量的拼接向量,
attention score
反映了广告 a
和输入的潜在兴趣
接下来,我们将介绍几种结合注意力机制和 GRU
对兴趣演变过程进行建模的方法。
GRU with attentional input: AIGRU
:为了在兴趣演变过程中激活相关的兴趣,我们提出了一种简单的方法,称作带注意力输入的 GRU
(GRU with attentional input: AIGRU
)。AIGRU
使用attention score
来影响兴趣演变层的输入:
其中: GRU
的输入,用于兴趣演变。
在 AIGRU
中,和目标 item
相关性较低的兴趣的 scale
可以通过attention score
来减少。理想情况下,和目标item
相关性较低的输入可以被降低到零。但是 AIGRU
效果不是很好,因为即使是零输入也可以改变 GRU
的隐状态。所以,即使相对于目标item
的兴趣较低,也会影响后面兴趣演变过程的学习。
Attention based GRU: AGRU
:在问答(question answering: QA
)领域,DMN+
首先提出了基于注意力的 GRU
attention based GRU: AGRU
。通过使用来自注意力机制的 embedding
信息修改 GRU
架构之后,AGRU
可以有效地提取复杂 query
中的关键信息。
受问答系统的启发之后,我们将 AGRU
的使用从提取 query
中的关键信息,迁移到在兴趣演变过程中捕获相关的兴趣。具体而言,AGRU
使用 attention score
代替 GRU
的更新门,并直接修改隐状态:
其中: AGRU
的隐状态。
在兴趣演变的场景中,AGRU
利用attention score
直接控制隐状态的更新。AGRU
在兴趣演变过程中削弱了目标 item
相关性较低兴趣的影响。将注意力嵌入到 GRU
中提高了注意力机制的影响,帮助 AGRU
克服了 AIGRU
的缺陷。
GRU with attentional update gate: AUGRU
:虽然 AGRU
可以直接使用attention score
来控制隐状态的更新,但是它使用了标量(attention score
GRU
(GRU with attentional update gate: AUGRU
)来无缝结合注意力机制和 GRU
:
其中: AUGRU
设计的注意力更新门; AUGRU
的隐状态。
在 AUGRU
中,我们保留更新门的原始维度信息,它决定了每个维度的重要性。我们使用attention score
item
更少相关性的兴趣对隐状态的影响越小。AUGRU
更有效地避免了兴趣漂移带来的影响,并推动目标item
相关的兴趣平稳演变。
这里我们在公共数据集、工业数据集上将 DIEN
和SOTA
技术进行比较。此外,我们设计了实验来分别验证辅助损失和 AUGRU
的影响。为了观察兴趣演变的过程,我们展示了兴趣隐状态的可视化结果。最后,我们分享了在线 serving
的技术和结果。
数据集:
公共数据集(Public Dataset
):Amazon
数据集。该数据集由商品评论和商品元数据组成。我们使用该数据集的两个子集:Books, Electronics
。
在这些数据集中我们将评论视为行为,并按照时间对用户的评论排序。假设用户
工业数据集(Industrial Dataset
):由淘宝在线展示广告系统中的曝光日志和点击日志组成。
我们将连续 50
天点击的广告作为样本,用户点击目标商品之前 14
天的点击行为作为历史行为序列。其中前 49
天的样本作为训练集,第 50
天的样本作为测试集。
这些数据集的统计信息如下表所示。
baseline
方法:我们将 DIEN
和一些主流的 CTR
预估模型进行比较。
BaseModel
:BaseModel
采用与 DIEN
相同的 embedding setting
、 MLP setting
,但是BaseModel
使用 sum pooling
来聚合用户的所有行为embedding
。
Wide & Deep
: Wide & Deep
由两部分组成,其 deep part
和 BaseModel
相同、wide part
为线性模型。
PNN
:PNN
使用 product layer
来捕获跨 field
之间的特征交互模式(interactive pattern
)。
DIN
:DIN
使用注意力机制来激活目标 item
相关的用户行为。
Two layer GRU Attention
:通过双层 GRU
来建模用户行为序列,并采用注意力机制来关注目标item
相关的行为。
公共数据集的结果:在公共数据集中每个实验重复 5
次,取离线 AUC
的均值和标准差,实验结果如下表所示。可以看到:
人工设计特征的 Wide & Deep
性能不佳,而自动特征交叉的 PNN
效果相对较好。
旨在捕获兴趣的模型可以明显改善 AUC
:
DIN
激活了相对于目标广告的用户兴趣,Two Layer GRU Attention
进一步有效的捕获了兴趣序列中目标广告的相关兴趣。所有这些探索都获得了积极的效果。
DIEN
不仅可以有效捕获兴趣序列,还可以对与目标item
相关的兴趣演变过程建模。兴趣演变模型可以帮助 DIEN
获取更好的兴趣representation
,并准确捕获兴趣动态,从而大幅提升性能。
工业数据集的结果:我们进一步对真实展示广告的数据集进行实验。在工业数据集中,我们在 MLP
使用 6
层 FCN layer
,维度分别为 600, 400, 300, 200, 80, 2
,历史行为序列的最大长度为 50
。实验结果如下表所示。可以看到:
Wide & Deep,PNN
比 BaseModel
效果更好。
与 Amazon
数据集只有一类商品不同,阿里在线广告数据集同时包含多种类型的商品,因此基于注意力的方法(如 DIN
)可以大幅提升性能。
DIEN
捕获了目标 item
相关的兴趣演变过程,并获得最佳效果。
消融研究:这里我们展示 AUGRU
和辅助损失的效果。
AUGRU
的效果:下表给出了不同兴趣演变方法的结果。
与 BaseModel
相比,Two layer GRU Attention
获得了改进,但是它缺乏对兴趣演变进行建模从而限制了能力。
AIGRU
直接对兴趣演变建模。尽管它效果得到提升,但是在兴趣演变过程中,注意力和演变之间的分裂使得建模过程中丢失了信息。
AGRU
进一步试图融合注意力和演变过程,但是它没有充分利用更新门针对多个维度更新的优势。
AUGRU
取得了明显的进步(倒数第二行),它理想地融合了注意力机制和序列学习,有效捕捉了目标item
相关兴趣的演变过程。
辅助损失的效果:使用 AUGRU
的基础上我们进一步评估辅助损失的效果。公共数据集中,用于辅助损失的负样本都是从当前评论商品之外的item
集合中随机抽样的。工业数据集中,用于辅助损失的负样本是所有已曝光但是未点击的广告。
如下图所示,整体损失函数 representation
生效,其中
如下表所示,辅助损失为两个公共数据集都带来了很大的改进(最后一行 vs
倒数第二行),它反应了监督信息对于学习兴趣序列和 embedding
表示的重要性。
如下表所示,辅助损失为工业数据集也带来了性能提高(最后一行 vs
倒数第二行),但是我们可以看到改进并不像公共数据集那样明显。这种差异来源于几个方面:
首先,工业数据集具有大量的样本来学习 embedding
层,这使得它从辅助损失中获得的收益更少。
其次,不同于公共数据集的item
全部属于同一个类目,工业数据集包含阿里所有场景的所有类目 item
。我们的目标是在一个场景中预测广告的点击率。辅助损失的监督信息可能与目标 item
是异质的(heterogeneous
),所以辅助损失对工业数据集的影响可能相比公共数据集要小,而 AUGRU
的影响则被放大了。
兴趣演变可视化:AUGRU
中隐状态的动态变化可以反映出兴趣演变过程,我们可以将这些隐状态可视化从而探索不同目标item
对于兴趣演变的影响。
我们通过 PCA
将 AUGRU
的隐状态投影到二维空间中,投影对应的隐状态按照行为发生的顺序连接。其中历史行为来自于以下类目:电脑音箱、耳机、汽车 GPS
、SD
卡、micro SD
卡、外置硬盘、手机套。
图a
给出了不同目标item
的隐状态移动路径。
None target
的黄色曲线表示原始兴趣序列(所有注意力得分都相等),它表示不受目标item
影响的兴趣演变。
蓝色曲线表示目标item
为屏幕保护类目的 item
激活的隐状态,目标item
与所有历史行为相关性较小,因此表现出类似黄色曲线的路径。
红色曲线表示目标item
为手机套类目的 item
激活的隐状态,目标item
和历史行为密切相关,因此导致较长的路径。
图b
中,和目标item
相关的历史行为获得了更大的注意力得分。
在线 A/B test
:我们在淘宝的展示广告系统进行在线 A/B testing
,测试时间从 2018-06-07 ~ 2018-07-02
,测试结果如下。与 BaseModel
相比,DIEN
的 CTR
提升 20.7%
、eCPM
提升 17.1%
、pay per click: PPC
降低 3%
。
目前 DIEN
已经在线部署并服务于主要流量,业务收入显著增长。
在线 serving
:DIEN
的在线服务(online serving
)是一个巨大挑战。在线系统流量非常高,峰值可超过 100
万用户/秒。为保证低延迟和高吞吐量,我们采用了几种重要技术来提高 serving
性能:
element parallel GRU
以及 kernel fusion
:融合尽可能多的独立 kernel
计算,同时 GRU
隐状态的每个元素并行计算(元素级并行)。
Batching
:不同用户的相邻请求合并为一个 batch
,从而充分利用 GPU
的并行计算能力。
模型压缩:通过 Rocket Launching
方法来压缩模型从而训练一个更轻量级的网络,该网络尺寸更小但是性能接近原始大模型。例如,在 Rocket Launching
的帮助下,GRU
隐状态的维度可以从 108
压缩到 32
。
通过这些技术,DIEN serving
的延迟可以从 38.2ms
降低到 6.6ms
,每个 worker
的 query per second: QPS
可以达到 360
。