十三、DIEN

  1. CTR 预估模型中,捕获用户行为数据背后的潜在用户兴趣非常重要。目前捕获用户兴趣的模型有两个主要缺陷:

    • 包括DIN 在内的大多数兴趣模型都将用户行为直接视为兴趣。事实上,用户的显式行为不等于用户的潜在兴趣。

      因此这些模型都忽略了挖掘用户显式行为背后的真正用户兴趣。

    • 考虑到外部环境和用户自身认知的变化,用户兴趣会随着时间动态变化,大多数模型都未考虑这一点。

    基于这些观察,论文 《Deep Interest Evolution Network for Click-Through Rate Prediction》 提出了深度兴趣演化模型 Deep Interest Evolution Network:DIENDIEN 有两个关键模块:

    • 兴趣抽取层 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%

  2. DIN 模型在捕获用户历史行为序列之间的依赖性方面很弱;传统的 RNN 虽然可用于对用户历史行为序列建模,但有两个缺陷:

    • RNN 直接将序列结构中的隐状态视为潜在的用户兴趣,但是这些隐状态缺乏对兴趣表达的专门的监督。
    • RNN 连续且不加区分的处理相邻行为之间的所有依赖,实际上不同的行为对于目标商品的权重是不同的。

13.1 模型

13.1.1 BaseModel

  1. 在线展示广告系统中,有四类 category 特征:

    • 用户画像特征 user profile :包括性别、年龄等。
    • 用户行为特征 user behavior:包括用户访问的商品ID 列表,用户访问的店铺ID 列表、用户访问的商品类别ID 列表等。
    • 广告特征 AD :广告本身也是商品,因此称作目标商品。它包含商品ID、店铺ID 等特征。
    • 上下文特征 Context :包含当前访问时间等特征。

    每个特征都可以进行one-hote 编码。假设用户画像、用户行为、广告、上下文这四个field 的不同特征 one-hot 编码拼接之后分别为 十三、DIEN - 图1

    通常用户行为特征是一个行为序列,因此有:

    十三、DIEN - 图2

    其中 十三、DIEN - 图3 为用户行为序列的长度,十三、DIEN - 图4 为所有商品的数量, 十三、DIEN - 图5 是第 十三、DIEN - 图6 个行为的 one-hot 向量。

  2. 大多数 deep CTR 模型基于 embedding &MLP 结构,因此 BaseModel 主要由以下部分组成:

    • embedding 部分:在 embedding 层,每个稀疏ID 特征被映射为 embedding 向量。

      假设商品ID 十三、DIEN - 图7 被映射到向量 十三、DIEN - 图8,则对于行为 十三、DIEN - 图9 假设它对应于商品 十三、DIEN - 图10 (即第 十三、DIEN - 图11 个分量为 1 其它分量为 0 ),则它对应于 embedding 向量 十三、DIEN - 图12

      则用户行为序列 十三、DIEN - 图13 对应于embedding 向量序列:

      十三、DIEN - 图14

      同样的,我们用 十三、DIEN - 图15 来表示广告 IDaembedding 向量。

    • MLP 部分:将来自同一个field 的所有 embedding 向量馈入一个池化层,得到一个固定长度的向量。然后将来自不同field 的固定长度向量拼接在一起,馈入 MLP 网络中得到最终预测结果。

  3. 采用负对数似然函数作为损失函数,即:

    十三、DIEN - 图16

    其中:

    • 十三、DIEN - 图17十三、DIEN - 图18 为训练集,十三、DIEN - 图19 为训练集大小。
    • 十三、DIEN - 图20 表示用户是否点击目标商品。
    • 十三、DIEN - 图21 为模型预测用户点击目标商品的概率。

13.1.2 DIEN

  1. 与搜索广告不同,在线展示广告系统中,用户并不能清楚的表明其意图,因此捕获用户的兴趣及其动态变化对于 CTR 预估模型非常重要。

    DIEN 致力于捕获用户兴趣,并为用户兴趣演变过程建模。DIEN 主要由四部分组成:Embedding 层、Interest Extractor Layer 兴趣抽取层、Interest Evolving Layer 兴趣演化层、MLP 网络。

    十三、DIEN - 图22

13.1.3 兴趣抽取层

  1. 在电商领域,用户行为是用户潜在兴趣的载体,而用户兴趣将导致用户行为的一系列变化。而兴趣抽取层就是从用户行为序列中提取背后的一系列兴趣状态。

    在电商领域用户的行为非常丰富,即使在很短时间内(如两周),用户历史行为序列的长度也很长。为了在效率和性能之间平衡,论文采用 GRU 对行为之间的依赖关系建模:

    十三、DIEN - 图23

    其中:

    • 十三、DIEN - 图24sigmoid 激活函数,十三、DIEN - 图25 为逐元素积。

    • 十三、DIEN - 图26 为参数矩阵。其中 十三、DIEN - 图27 为隐向量维度,十三、DIEN - 图28 为输入维度。

      十三、DIEN - 图29 为偏置参数。

    • 十三、DIEN - 图30 为用户行为序列中的第 十三、DIEN - 图31 个行为的 embedding,它作为 GRU 的输入; 十三、DIEN - 图32 为第 十三、DIEN - 图33 个隐状态。

  2. 实际上隐状态 十三、DIEN - 图34 无法有效的表达用户兴趣。由于目标商品的点击是由最终兴趣触发的,因此损失函数 十三、DIEN - 图35 中使用的 label 仅仅监督了最后一个兴趣状态 十三、DIEN - 图36 ,历史兴趣状态 十三、DIEN - 图37 没有得到合适的监督。

    在电商领域,用户每一步的兴趣状态都将导致连续的行为,因此 DIEN 提出辅助损失。它利用第 十三、DIEN - 图38 步的输入(即第 十三、DIEN - 图39 个行为)来监督第 十三、DIEN - 图40 步的兴趣状态 十三、DIEN - 图41 的学习。

    除了采用下一个实际产生行为的商品作为正样本之外,DIEN 还从正样本之外采样了一些商品作为负样本。因此得到 十三、DIEN - 图42 对行为embedding 序列:

    十三、DIEN - 图43

    其中:

    • 十三、DIEN - 图44 为训练样本编号,十三、DIEN - 图45 为训练样本总数。

    • 十三、DIEN - 图46 表示用户的历史行为序列, 十三、DIEN - 图47 为用户历史行为序列长度,十三、DIEN - 图48 为行为 embedding 维度。

      十三、DIEN - 图49 表示用户 十三、DIEN - 图50 历史行为序列的第 十三、DIEN - 图51 个商品的 embedding 向量, 十三、DIEN - 图52 表示全部的商品集合。

    • 十三、DIEN - 图53 表示负样本采样序列。

      十三、DIEN - 图54 表示从用户 十三、DIEN - 图55 历史行为序列第 十三、DIEN - 图56 个商品以外的所有商品中采样得到的商品的 embedding

    辅助损失函数为:

    十三、DIEN - 图57

    其中:

    • 十三、DIEN - 图58sigmoid 激活函数。
    • 十三、DIEN - 图59 表示用户 十三、DIEN - 图60 的第 十三、DIEN - 图61 个隐状态。

    考虑辅助损失之后,DIEN 模型的整体目标函数为:

    十三、DIEN - 图62

    其中: 十三、DIEN - 图63 为模型的主损失函数;十三、DIEN - 图64 为超参数,用于平衡兴趣表达和CTR 预测。

  3. 通过引入辅助函数,每个隐状态 十三、DIEN - 图65 就具有足够的表达能力来表达行为 十三、DIEN - 图66 背后的兴趣。所有 十三、DIEN - 图67 个兴趣状态 十三、DIEN - 图68 一起构成了兴趣序列,从而作为兴趣演化层的输入。

  4. 引入辅助函数具有多个优点:

    • 从兴趣学习的角度看,辅助损失函数的引入有助于GRU 的每个隐状态学到正确的兴趣表示。
    • GRU 优化的角度看,辅助函数的引入有助于缓解 GRU 的长距离依赖问题,降低反向传播的难度。
    • 还有不怎么重要的一点:辅助损失函数为 embedding 层的学习提供了更多的语义信息,从而产生更好的 embedding 表达。

13.1.4 兴趣演化层

  1. 随着外部环境和用户自身认知的共同作用,用户的各种兴趣随着时间的推移也在不断演化。

    以用户对衣服的兴趣为例,随着人口趋势和用户品味的变化,用户对衣服的偏好也在改变。这种兴趣演化过程直接决定了候选衣服商品的点击率预测。

    因此对兴趣演化过程进行建模,有以下优点:

    • 可以为最终兴趣表达提供更多的历史信息
    • 可以更好的预测目标商品的CTR
  2. 在演化过程中,用户兴趣呈现两个特性:

    • 由于兴趣的多样性,兴趣可能会发生漂移。

      兴趣漂移对用户行为产生的影响是:用户可能在某个时间段对书籍感兴趣,但是另一个时间段可能对衣服感兴趣。

    • 尽管兴趣之间会相互影响,但是每种兴趣都有自己的演化过程。如:书籍和衣服的兴趣演化过程几乎是独立的。

      我们只关注和目标商品相关的兴趣演化过程。

  3. 在兴趣抽取层,借助辅助损失我们获得了兴趣序列的表达形式。结合兴趣演化过程的特点,DIEN 结合了注意力机制的局部激活能力以及GRU 的序列学习能力来建模兴趣演化过程。在 GRU 的每个时间步,局部激活都可以强化相关兴趣的影响,并减弱无关兴趣(兴趣漂移)的干扰。这有助于目标商品相关的兴趣演化过程的建模。

    十三、DIEN - 图69 为兴趣演化模块的输入向量和隐向量。其中:

    • 兴趣演化模块的输入就是兴趣抽取模块的隐向量:十三、DIEN - 图70
    • 最后一个隐向量 十三、DIEN - 图71 就是最终的兴趣状态。

    注意力得分函数定义为:

    十三、DIEN - 图72

    其中:

    • 十三、DIEN - 图73 是广告 adfieldembedding 向量的拼接向量,十三、DIEN - 图74 为拼接向量维度。
    • 十三、DIEN - 图75 为参数矩阵,十三、DIEN - 图76 为隐向量维度。

    注意力得分反映了广告 a 和输入的潜在兴趣 十三、DIEN - 图77 之间的关系,关系约紧密则得分越高。

  4. 有多种注意力机制来建模兴趣演化过程。

    • GRU with attentional input : AIGRU :最简单直接的方式是采用注意力得分来影响兴趣演化层的输入,这被称作 AIGRU

      十三、DIEN - 图78

      理想情况下,和目标商品相关性较低的输入可以被降低到 0 。

      但是 AIGRU 效果不是很好,因为即使是零输入也可以改变 GRU 的隐状态。即:即使相对于目标商品的兴趣较低,也会影响后面兴趣演化过程的学习。

    • Attention based GRU : AGRU:通过使用注意力得分来替代 GRU 的更新门,并直接更改隐状态:

      十三、DIEN - 图79

      AGRU 将注意力机制嵌入到 GRU 中,从而降低了兴趣演化过程中与目标商品无关兴趣的影响,克服了 AIGRU 的缺陷。

    • GRU with attentional update gate : AUGRU:在 AGRU 中我们用一个标量 十三、DIEN - 图80 替代了更新门向量 十三、DIEN - 图81,这会忽略不同维度的差异。因此可以考虑通过注意力得分调整更新门:

      十三、DIEN - 图82

      其中 十三、DIEN - 图83 为原始更新门。

      这里我们保留更新门的维度差异,并对每个维度按照注意力得分进行统一缩放。这使得目标商品无关兴趣对于隐状态影响较小。

      AUGRU 有效避免了兴趣漂移带来的影响,并推动目标商品相关的兴趣平稳演化。

13.2 实验

  1. 数据集:

    • 公共数据集 public DatasetAmazon 数据集。该数据集由商品评论和商品元数据组成。我们使用该数据集的两个子集:Books, Electronics

      在这些数据集中我们将评论视为行为,并按照时间对用户的评论排序。假设用户 十三、DIEN - 图84十三、DIEN - 图85 个行为,我们的目标是使用前 十三、DIEN - 图86 个行为来预测用户 十三、DIEN - 图87 是否会点评第 十三、DIEN - 图88 个评论中的商品。

    • 工业数据集 Industrial Dataset:由淘宝在线展示广告系统中的曝光日志和点击日志组成。

      我们将连续 50 天点击的广告作为样本,用户点击目标商品之前 14 天的点击行为作为历史行为序列。其中前 49 天的样本作为训练集,第 50 天的样本作为测试集。

    十三、DIEN - 图89

  2. 对照模型为BaseModelWide&DeepPNNDINTwo layer GRU Attention 。其中:

    • BaseModelDIEN 具有同样的 embeddingMLP 以及对应的参数配置,但是BaseModel 使用 sum pooling 来聚合所有用户的行为embedding
    • Wide&Deepdeep partBaseModel 相同。
    • Two layer GRU Attention 通过双层 GRU 来建模用户行为序列,并采用注意力机制来关注目标商品相关的行为。

13.2.1 离线结果

  1. public dataset 上的离线评估结果如下所示。评估指标为离线 AUC ,每个实验重复 5 次并取均值和标准差。结论:

    • 人工设计特征的 Wide&Deep 性能不佳。

    • 自动特征交叉的 PNN 效果相对较好。

    • 旨在捕获兴趣的模型可以明显改善 AUC

      • DIN 激活了相对于目标广告的用户兴趣

      • Two Layer GRU Attention 进一步有效的捕获了兴趣序列中的目标广告的相关兴趣

      • DIEN 不仅可以有效捕获兴趣序列,还可以对与目标商品相关的兴趣演化过程建模。

        兴趣演化模型可以帮助 DIEN 获取更好的兴趣表达,并准确捕获兴趣的动态演化从而大幅提升性能。

    十三、DIEN - 图90

  2. Industrial Dataset 工业数据集上,DIENMLP 部分使用 6 个 FCN 层,维度分别为 600,400,300,200,80,2 ;历史行为序列的最大长度为 50 。结论:

    • Wide&Deep,PNNBaseModel 效果更好。
    • Amazon 数据集只有一种商品不同,阿里在线广告数据集同时包含多种类型的商品,因此基于注意力的方法可以像 DIN 一样大幅提升性能。
    • DIEN 捕获了目标商品相关的兴趣演化过程,效果最好。

    十三、DIEN - 图91

  3. 不同兴趣演化方式的比较如下所示。评估指标为离线 AUC ,每个实验重复 5 次并取均值和标准差。结论:

    • BaseModel 相比Two layer GRU Attention获得了改进,但是它缺乏对兴趣演化进行建模。
    • AIGRU 直接对兴趣演化建模。尽管它效果得到提升,但是注意力和演化过程之间的分裂使得建模过程中丢失了注意力的信息。
    • AGRU 进一步试图融合注意力和演化过程,但是它没有充分利用更新门针对多个维度更新的优势。
    • AUGRU 效果最好,它理想的融合了注意力机制和序列学习,有效捕捉了目标商品相关兴趣的演化过程。

    十三、DIEN - 图92

  4. 在使用 AUGRU 的基础上我们进一步评估辅助损失的效果。

    • 公共数据集中,用于辅助损失的负样本都是从当前评论商品之外的商品集中随机抽样的。
    • 工业数据集中,用于辅助损失的负样本是所有已曝光但是未点击的商品。

    从损失函数的趋势可见:整体损失函数 十三、DIEN - 图93 和辅助损失 十三、DIEN - 图94 都保持相似的下降趋势。这意味着 CTR 预测过程中,整体损失和辅助损失对于兴趣表达都起作用。

    十三、DIEN - 图95

    最终效果如下表所示:

    • 辅助损失对于两个公共数据集都带来了很大改进。它反应了监督信息对于学习兴趣序列和 embedding 表示的重要性。

    • 辅助损失对于工业数据集的改进不如公共数据集明显,区别在于以下几点:

      • 工业数据集具有大量的样本来学习 embedding 层,这使得它从辅助损失中获得的收益更少。

      • 不同于公共数据集的商品全部属于同一个类别,工业数据集包含阿里所有场景的所有类别商品。

        辅助损失的目标是预测单场景,因此这和工业数据集不匹配。这导致辅助损失对于工业数据集的效果较小。此时 AUGRU 的效果得到得到增强。

      十三、DIEN - 图96

  5. AUGRU 中隐状态的动态变化可以反映出兴趣演化过程,我们可以将这些隐状态可视化从而探索不同目标商品对于兴趣演化的影响。

    我们通过 PCAAUGRU 的隐状态投影到二维空间中,投影对应的隐状态按照行为发生的顺序连接。其中历史行为来自于以下类别:电脑音箱、耳机、汽车 GPSSD 卡、micro SD 卡、外置硬盘、手机套。

    • a 给出了不同目标商品的隐状态移动路径。

      • 无目标商品的黄色曲线表示原始兴趣序列(所有注意力得分都相等),它表示不受目标商品影响的兴趣演化。
      • 蓝色曲线表示目标商品为屏幕保护类别商品激活的隐状态,目标商品与所有历史行为相关性较小,因此表现出类似黄色曲线的路径。
      • 红色曲线表示目标商品为手机套类别商品激活的隐状态,目标商品和历史行为密切相关,因此导致较长的路径。
    • b 中,和目标商品相关的历史行为获得了更大的注意力得分。

    十三、DIEN - 图97

13.2.2 在线实验

  1. 论文在淘宝的展示广告系统进行在线 A/B testing ,测试时间从 2018-06-07 ~ 2018-07-02 ,测试结果如下。

    BaseModel 相比,DIENCTR 提升 20.7%eCPM 提升 17.1%pay per click:PPC 降低 3%

    目前 DIEN 已经在线部署并服务于主要流量。

    十三、DIEN - 图98

  2. DIEN 的在线服务 online serving 是一个巨大挑战。在线系统流量非常高,峰值可超过 100 万用户/秒。为保证低延迟和高吞吐量,论文采用了几种重要技术来提高 serving 性能:

    • element parallel GRU 以及 kernel fusion:融合尽可能多的独立 kernel 计算,同时 GRU 隐状态的每个元素并行计算(元素级并行)。
    • Batching:不同用户的相邻请求合并为一个 batch,从而充分利用 GPU 的并行计算能力。
    • 模型压缩:通过 Rocket Launching 方法来压缩模型从而训练一个更轻量级的网络,该网络尺寸更小但是性能接近原始大模型。

    通过这些技术,DIEN serving 的延迟可以从 38.2ms 降低到 6.6ms ,每个 workerquery per second:QPS 可以达到 360