十三、DIEN
在
CTR
预估模型中,捕获用户行为数据背后的潜在用户兴趣非常重要。目前捕获用户兴趣的模型有两个主要缺陷:包括
DIN
在内的大多数兴趣模型都将用户行为直接视为兴趣。事实上,用户的显式行为不等于用户的潜在兴趣。因此这些模型都忽略了挖掘用户显式行为背后的真正用户兴趣。
考虑到外部环境和用户自身认知的变化,用户兴趣会随着时间动态变化,大多数模型都未考虑这一点。
基于这些观察,论文
《Deep Interest Evolution Network for Click-Through Rate Prediction》
提出了深度兴趣演化模型Deep Interest Evolution Network:DIEN
。DIEN
有两个关键模块:兴趣抽取层
interest extractor layer
:用于从用户的历史行为序列中捕获潜在的时序兴趣latent temporal interest
。正确的兴趣表示是
DIEN
模型的基础。在兴趣提取层,DIEN
选择利用GRU
来建模用户行为之间的依赖关系。考虑到一段连续的行为是由某个兴趣直接引起的,因此
DIEN
引入辅助损失函数。辅助损失函数使用下一个阶段的行为来监督当前阶段隐状态(称作兴趣状态)的学习。这些额外的监督信息有助于模型捕获兴趣表示的更多语义信息,从而推动GRU
的隐状态更有效的表达兴趣。兴趣演化层
interest evolving layer
:用于建模用户的兴趣演变过程。用户的兴趣是多种多样的,这导致产生兴趣漂移现象:相邻的两次访问中,用户的意图可能完全不同。并且用户的当前行为可能取决于很久之前的行为,而不是前几次行为。
同时,用户对不同目标商品的点击行为可能受到不同兴趣的共同影响。
在兴趣演变层,
DIEN
对与目标商品有关的兴趣演变轨迹进行建模。基于从兴趣提取层得到的兴趣序列,DIEN
采用带注意力更新门的GRU
(GRU with attentional update gate:AUGRU
)来建模针对不同目标商品的特定兴趣演变过程。AUGRU
使用兴趣状态和目标商品来计算相关性,从而增强了相关兴趣对于兴趣演变的影响,同时减弱由于兴趣漂移产生的无关兴趣的影响。
DIEN
模型已经被部署到淘宝的在线展示广告系统中,其点击率提高了20.7%
。DIN
模型在捕获用户历史行为序列之间的依赖性方面很弱;传统的RNN
虽然可用于对用户历史行为序列建模,但有两个缺陷:RNN
直接将序列结构中的隐状态视为潜在的用户兴趣,但是这些隐状态缺乏对兴趣表达的专门的监督。RNN
连续且不加区分的处理相邻行为之间的所有依赖,实际上不同的行为对于目标商品的权重是不同的。
13.1 模型
13.1.1 BaseModel
在线展示广告系统中,有四类
category
特征:- 用户画像特征
user profile
:包括性别、年龄等。 - 用户行为特征
user behavior
:包括用户访问的商品ID
列表,用户访问的店铺ID
列表、用户访问的商品类别ID
列表等。 - 广告特征
AD
:广告本身也是商品,因此称作目标商品。它包含商品ID
、店铺ID
等特征。 - 上下文特征
Context
:包含当前访问时间等特征。
每个特征都可以进行
one-hote
编码。假设用户画像、用户行为、广告、上下文这四个field
的不同特征one-hot
编码拼接之后分别为 。通常用户行为特征是一个行为序列,因此有:
其中 为用户行为序列的长度, 为所有商品的数量, 是第 个行为的
one-hot
向量。- 用户画像特征
大多数
deep CTR
模型基于embedding &MLP
结构,因此BaseModel
主要由以下部分组成:embedding
部分:在embedding
层,每个稀疏ID
特征被映射为embedding
向量。假设商品
ID
被映射到向量 ,则对于行为 假设它对应于商品 (即第 个分量为1
其它分量为0
),则它对应于embedding
向量 。则用户行为序列 对应于
embedding
向量序列:同样的,我们用 来表示广告
ID
为a
的embedding
向量。MLP
部分:将来自同一个field
的所有embedding
向量馈入一个池化层,得到一个固定长度的向量。然后将来自不同field
的固定长度向量拼接在一起,馈入MLP
网络中得到最终预测结果。
采用负对数似然函数作为损失函数,即:
其中:
- , 为训练集, 为训练集大小。
- 表示用户是否点击目标商品。
- 为模型预测用户点击目标商品的概率。
13.1.2 DIEN
与搜索广告不同,在线展示广告系统中,用户并不能清楚的表明其意图,因此捕获用户的兴趣及其动态变化对于
CTR
预估模型非常重要。DIEN
致力于捕获用户兴趣,并为用户兴趣演变过程建模。DIEN
主要由四部分组成:Embedding
层、Interest Extractor Layer
兴趣抽取层、Interest Evolving Layer
兴趣演化层、MLP
网络。
13.1.3 兴趣抽取层
在电商领域,用户行为是用户潜在兴趣的载体,而用户兴趣将导致用户行为的一系列变化。而兴趣抽取层就是从用户行为序列中提取背后的一系列兴趣状态。
在电商领域用户的行为非常丰富,即使在很短时间内(如两周),用户历史行为序列的长度也很长。为了在效率和性能之间平衡,论文采用
GRU
对行为之间的依赖关系建模:其中:
为
sigmoid
激活函数, 为逐元素积。为参数矩阵。其中 为隐向量维度, 为输入维度。
为偏置参数。
为用户行为序列中的第 个行为的
embedding
,它作为GRU
的输入; 为第 个隐状态。
实际上隐状态 无法有效的表达用户兴趣。由于目标商品的点击是由最终兴趣触发的,因此损失函数 中使用的
label
仅仅监督了最后一个兴趣状态 ,历史兴趣状态 没有得到合适的监督。在电商领域,用户每一步的兴趣状态都将导致连续的行为,因此
DIEN
提出辅助损失。它利用第 步的输入(即第 个行为)来监督第 步的兴趣状态 的学习。除了采用下一个实际产生行为的商品作为正样本之外,
DIEN
还从正样本之外采样了一些商品作为负样本。因此得到 对行为embedding
序列:其中:
为训练样本编号, 为训练样本总数。
表示用户的历史行为序列, 为用户历史行为序列长度, 为行为
embedding
维度。表示用户 历史行为序列的第 个商品的
embedding
向量, 表示全部的商品集合。而 表示负样本采样序列。
表示从用户 历史行为序列第 个商品以外的所有商品中采样得到的商品的
embedding
。
辅助损失函数为:
其中:
- 为
sigmoid
激活函数。 - 表示用户 的第 个隐状态。
考虑辅助损失之后,
DIEN
模型的整体目标函数为:其中: 为模型的主损失函数; 为超参数,用于平衡兴趣表达和
CTR
预测。通过引入辅助函数,每个隐状态 就具有足够的表达能力来表达行为 背后的兴趣。所有 个兴趣状态 一起构成了兴趣序列,从而作为兴趣演化层的输入。
引入辅助函数具有多个优点:
- 从兴趣学习的角度看,辅助损失函数的引入有助于
GRU
的每个隐状态学到正确的兴趣表示。 - 从
GRU
优化的角度看,辅助函数的引入有助于缓解GRU
的长距离依赖问题,降低反向传播的难度。 - 还有不怎么重要的一点:辅助损失函数为
embedding
层的学习提供了更多的语义信息,从而产生更好的embedding
表达。
- 从兴趣学习的角度看,辅助损失函数的引入有助于
13.1.4 兴趣演化层
随着外部环境和用户自身认知的共同作用,用户的各种兴趣随着时间的推移也在不断演化。
以用户对衣服的兴趣为例,随着人口趋势和用户品味的变化,用户对衣服的偏好也在改变。这种兴趣演化过程直接决定了候选衣服商品的点击率预测。
因此对兴趣演化过程进行建模,有以下优点:
- 可以为最终兴趣表达提供更多的历史信息
- 可以更好的预测目标商品的
CTR
在演化过程中,用户兴趣呈现两个特性:
由于兴趣的多样性,兴趣可能会发生漂移。
兴趣漂移对用户行为产生的影响是:用户可能在某个时间段对书籍感兴趣,但是另一个时间段可能对衣服感兴趣。
尽管兴趣之间会相互影响,但是每种兴趣都有自己的演化过程。如:书籍和衣服的兴趣演化过程几乎是独立的。
我们只关注和目标商品相关的兴趣演化过程。
在兴趣抽取层,借助辅助损失我们获得了兴趣序列的表达形式。结合兴趣演化过程的特点,
DIEN
结合了注意力机制的局部激活能力以及GRU
的序列学习能力来建模兴趣演化过程。在GRU
的每个时间步,局部激活都可以强化相关兴趣的影响,并减弱无关兴趣(兴趣漂移)的干扰。这有助于目标商品相关的兴趣演化过程的建模。令 为兴趣演化模块的输入向量和隐向量。其中:
- 兴趣演化模块的输入就是兴趣抽取模块的隐向量: 。
- 最后一个隐向量 就是最终的兴趣状态。
注意力得分函数定义为:
其中:
- 是广告
ad
各field
的embedding
向量的拼接向量, 为拼接向量维度。 - 为参数矩阵, 为隐向量维度。
注意力得分反映了广告
a
和输入的潜在兴趣 之间的关系,关系约紧密则得分越高。有多种注意力机制来建模兴趣演化过程。
GRU with attentional input : AIGRU
:最简单直接的方式是采用注意力得分来影响兴趣演化层的输入,这被称作AIGRU
。理想情况下,和目标商品相关性较低的输入可以被降低到 0 。
但是
AIGRU
效果不是很好,因为即使是零输入也可以改变GRU
的隐状态。即:即使相对于目标商品的兴趣较低,也会影响后面兴趣演化过程的学习。Attention based GRU : AGRU
:通过使用注意力得分来替代GRU
的更新门,并直接更改隐状态:AGRU
将注意力机制嵌入到GRU
中,从而降低了兴趣演化过程中与目标商品无关兴趣的影响,克服了AIGRU
的缺陷。GRU with attentional update gate : AUGRU
:在AGRU
中我们用一个标量 替代了更新门向量 ,这会忽略不同维度的差异。因此可以考虑通过注意力得分调整更新门:其中 为原始更新门。
这里我们保留更新门的维度差异,并对每个维度按照注意力得分进行统一缩放。这使得目标商品无关兴趣对于隐状态影响较小。
AUGRU
有效避免了兴趣漂移带来的影响,并推动目标商品相关的兴趣平稳演化。
13.2 实验
数据集:
公共数据集
public Dataset
:Amazon
数据集。该数据集由商品评论和商品元数据组成。我们使用该数据集的两个子集:Books, Electronics
。在这些数据集中我们将评论视为行为,并按照时间对用户的评论排序。假设用户 有 个行为,我们的目标是使用前 个行为来预测用户 是否会点评第 个评论中的商品。
工业数据集
Industrial Dataset
:由淘宝在线展示广告系统中的曝光日志和点击日志组成。我们将连续
50
天点击的广告作为样本,用户点击目标商品之前14
天的点击行为作为历史行为序列。其中前49
天的样本作为训练集,第50
天的样本作为测试集。
对照模型为
BaseModel
、Wide&Deep
、PNN
、DIN
、Two layer GRU Attention
。其中:BaseModel
和DIEN
具有同样的embedding
和MLP
以及对应的参数配置,但是BaseModel
使用sum pooling
来聚合所有用户的行为embedding
。Wide&Deep
的deep part
和BaseModel
相同。Two layer GRU Attention
通过双层GRU
来建模用户行为序列,并采用注意力机制来关注目标商品相关的行为。
13.2.1 离线结果
在
public dataset
上的离线评估结果如下所示。评估指标为离线AUC
,每个实验重复5
次并取均值和标准差。结论:人工设计特征的
Wide&Deep
性能不佳。自动特征交叉的
PNN
效果相对较好。旨在捕获兴趣的模型可以明显改善
AUC
:DIN
激活了相对于目标广告的用户兴趣Two Layer GRU Attention
进一步有效的捕获了兴趣序列中的目标广告的相关兴趣DIEN
不仅可以有效捕获兴趣序列,还可以对与目标商品相关的兴趣演化过程建模。兴趣演化模型可以帮助
DIEN
获取更好的兴趣表达,并准确捕获兴趣的动态演化从而大幅提升性能。
在
Industrial Dataset
工业数据集上,DIEN
的MLP
部分使用 6 个FCN
层,维度分别为600,400,300,200,80,2
;历史行为序列的最大长度为50
。结论:Wide&Deep,PNN
比BaseModel
效果更好。- 与
Amazon
数据集只有一种商品不同,阿里在线广告数据集同时包含多种类型的商品,因此基于注意力的方法可以像DIN
一样大幅提升性能。 DIEN
捕获了目标商品相关的兴趣演化过程,效果最好。
不同兴趣演化方式的比较如下所示。评估指标为离线
AUC
,每个实验重复5
次并取均值和标准差。结论:- 与
BaseModel
相比Two layer GRU Attention
获得了改进,但是它缺乏对兴趣演化进行建模。 AIGRU
直接对兴趣演化建模。尽管它效果得到提升,但是注意力和演化过程之间的分裂使得建模过程中丢失了注意力的信息。AGRU
进一步试图融合注意力和演化过程,但是它没有充分利用更新门针对多个维度更新的优势。AUGRU
效果最好,它理想的融合了注意力机制和序列学习,有效捕捉了目标商品相关兴趣的演化过程。
- 与
在使用
AUGRU
的基础上我们进一步评估辅助损失的效果。- 公共数据集中,用于辅助损失的负样本都是从当前评论商品之外的商品集中随机抽样的。
- 工业数据集中,用于辅助损失的负样本是所有已曝光但是未点击的商品。
从损失函数的趋势可见:整体损失函数 和辅助损失 都保持相似的下降趋势。这意味着
CTR
预测过程中,整体损失和辅助损失对于兴趣表达都起作用。最终效果如下表所示:
辅助损失对于两个公共数据集都带来了很大改进。它反应了监督信息对于学习兴趣序列和
embedding
表示的重要性。辅助损失对于工业数据集的改进不如公共数据集明显,区别在于以下几点:
工业数据集具有大量的样本来学习
embedding
层,这使得它从辅助损失中获得的收益更少。不同于公共数据集的商品全部属于同一个类别,工业数据集包含阿里所有场景的所有类别商品。
辅助损失的目标是预测单场景,因此这和工业数据集不匹配。这导致辅助损失对于工业数据集的效果较小。此时
AUGRU
的效果得到得到增强。
AUGRU
中隐状态的动态变化可以反映出兴趣演化过程,我们可以将这些隐状态可视化从而探索不同目标商品对于兴趣演化的影响。我们通过
PCA
将AUGRU
的隐状态投影到二维空间中,投影对应的隐状态按照行为发生的顺序连接。其中历史行为来自于以下类别:电脑音箱、耳机、汽车GPS
、SD
卡、micro SD
卡、外置硬盘、手机套。图
a
给出了不同目标商品的隐状态移动路径。- 无目标商品的黄色曲线表示原始兴趣序列(所有注意力得分都相等),它表示不受目标商品影响的兴趣演化。
- 蓝色曲线表示目标商品为屏幕保护类别商品激活的隐状态,目标商品与所有历史行为相关性较小,因此表现出类似黄色曲线的路径。
- 红色曲线表示目标商品为手机套类别商品激活的隐状态,目标商品和历史行为密切相关,因此导致较长的路径。
- 图
b
中,和目标商品相关的历史行为获得了更大的注意力得分。
13.2.2 在线实验
论文在淘宝的展示广告系统进行在线
A/B testing
,测试时间从2018-06-07 ~ 2018-07-02
,测试结果如下。与
BaseModel
相比,DIEN
的CTR
提升20.7%
、eCPM
提升17.1%
、pay per click:PPC
降低3%
。目前
DIEN
已经在线部署并服务于主要流量。DIEN
的在线服务online serving
是一个巨大挑战。在线系统流量非常高,峰值可超过100
万用户/秒。为保证低延迟和高吞吐量,论文采用了几种重要技术来提高serving
性能:element parallel GRU
以及kernel fusion
:融合尽可能多的独立kernel
计算,同时GRU
隐状态的每个元素并行计算(元素级并行)。Batching
:不同用户的相邻请求合并为一个batch
,从而充分利用GPU
的并行计算能力。- 模型压缩:通过
Rocket Launching
方法来压缩模型从而训练一个更轻量级的网络,该网络尺寸更小但是性能接近原始大模型。
通过这些技术,
DIEN serving
的延迟可以从38.2ms
降低到6.6ms
,每个worker
的query per second:QPS
可以达到360
。