返回介绍

数学基础

统计学习

深度学习

工具

Scala

十三、DIEN [2019]

发布于 2023-07-17 23:38:25 字数 25755 浏览 0 评论 0 收藏 0

  1. 点击付费cost per click: CPC 是广告系统中最常见的计费形式之一,广告主需要为广告的每次点击付费。在 CPC 广告系统中,点击率 click-through rate: CTR 预估的表现不仅会影响到整个平台的最终收入,还会影响到用户体验 user experience 和满意度 satisfaction 。点击率预估建模越来越受到学术界和工业界的关注。

    在大多数 non-searching 的电商场景中,用户不会主动表达当前的意图。设计模型以捕获用户的兴趣及其兴趣的动态dynamics是提高点击率预估性能的关键。最近,很多 CTR 模型从传统方法转变到深度 CTR 模型。大多数深度 CTR 模型聚焦于捕获来自不同 fields 的特征之间的交互,而不太关注用户兴趣 representationDIN 强调用户兴趣是多样的,并使用 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 进行建模。恰当的兴趣 representationDIEN 模型的基石。

    • 在兴趣提取层 interest extractor layerDIEN 选择 GRU 来建模行为之间的依赖关系。遵循兴趣直接导致连续行为的原则,论文提出了辅助损失,它使用下一个行为 next behavior 来监督当前隐状态hidden state 的学习。论文将这些具有额外监督信息的隐状态称作兴趣状态 interest state 。这些额外的监督信息有助于为兴趣 representation 捕获更多的语义信息,并推动 GRU 的隐状态有效地表达兴趣。

    • 更进一步,用户的兴趣是多样化的,这导致了兴趣漂移 interest drifting 现象:用户在相邻访问中的意图可能非常不同,并且用户的一种行为可能依赖于很久以前的行为。每个兴趣都有自己的演变轨迹 evolution track 。同时,一个用户对不同目标 item 的点击行为受到不同兴趣部分的影响。

      在兴趣演变层 interest evolving layer ,论文对于目标 item 相关的兴趣演变轨迹进行建模。基于从兴趣提取层获得的兴趣序列,论文设计了具有注意力更新门的 GRU ,即 GRU with attentional update gate: AUGRUAUGRU 利用兴趣状态和目标 item 计算相关性,增强了相关兴趣 relative interests 对于兴趣演变的影响,同时削弱了因为兴趣漂移导致的非相关兴趣的影响。通过在更新门中引入注意力机制,AUGRU 可以导致针对不同目标 item 的、特定的兴趣演变过程。

    DIEN 的主要贡献如下:

    • 论文聚焦电商系统中的兴趣演变现象,并提出了一种新的网络结构来建模兴趣演变过程。建模兴趣演变导致更具表达性的兴趣 representation 和更精确的点击率预估。
  • 不同于直接将行为作为兴趣,论文专门设计了兴趣提取层。针对 GRU 的隐状态较少地针对 target for 兴趣 representation 的问题,论文提出了一种辅助损失。该辅助损失使用连续行为 consecutive behavior 来监督每个 step 隐状态的学习。这使得隐状态足以代表潜在的兴趣。

    • 论文创新地设计了兴趣演变层,其中带有注意力更新门的 GRU 加强了目标 item 相关的兴趣的影响,并克服了兴趣漂移问题。

    在公共数据集和工业数据集的实验中,DIEN 显著优于 state-of-the-art 的解决方案。值得注意的是,DIEN 已经部署在淘宝展示广告系统中,并在各种指标下获得了显著的提升( 20.7% 的点击率提升)。

  1. 相关工作:凭借深度学习在特征 representation 和特征组合方面强大的能力,最近的 CTR 模型从传统的线性模型或非线性模型转变到深度模型。大多数深度模型遵循 Embedding & MLP 的结构。基于这种范式,越来越多的模型关注特征之间的交互interaction

    • Wide & DeepDeepFM 都结合了低阶特征交互和高阶特征交互来提高表达能力。
    • PNN 提出了一个 product layer 来捕获跨 field 特征之间的交互模式。

    然而,这些方法并不能清晰地反映数据背后的用户兴趣。DIN 引入了注意力机制来激活局部的、与目标 item 相关的历史行为,并成功地捕获到用户兴趣的多样性特点 diversity characteristic 。然而,DIN 在捕获序列行为 sequential behaviors 之间的依赖关系方面很弱。

    在很多 application 领域中,可以随时间记录 user-item 交互。最近的一些研究表明,这些交互信息可用于构建更丰富的单个用户模型 individual user model 并挖掘 discover 额外的行为模式 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 embeddingRNN 网络的 attentional output 来改进原始的 CTR 预估性能。
    • ATRank 使用基于注意力的序列框架 attention based sequential framework 来建模异质行为 heterogeneous behavior

    和序列无关的方法相比,这些方法可以显著提高预测准确性。然而,这些传统的基于 RNN 的模型存在一些问题。

    • 一方面,它们大多将序列结构的隐状态直接视为潜在兴趣,而这些隐状态缺乏对兴趣 representation 的、专门的监督。
    • 另一方面,大多数现有的基于 RNN 的模型依次地、平等地处理相邻行为之间的所有依赖关系。众所周知,并非所有的用户行为都严格依赖于相邻的行为。每个用户都有多样化的兴趣,每个兴趣都有自己的演变轨迹,因此这些模型可能会受到兴趣漂移的干扰。

    为了推动序列结构的隐状态有效地代表潜在兴趣,应该引入对隐状态的额外监督。DARNN 使用 click-level 的序列预测,它在每次向用户展示每个广告时,对点击动作进行建模。除了点击动作,还可以进一步引入 ranking 信息。在推荐系统中,ranking loss 已经被广泛用于排序任务。与这些 ranking loss 类似,我们提出了兴趣学习的辅助损失。在每个step ,辅助损失使用 next clicked itemnon-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 的演变过程。

13.1 模型

  1. 这里我们详细介绍 DIEN。首先我们简单回顾一下名为 BaseModel 的、基础的 Deep CTR 模型。然后我们展示了 DIEN 的整体结构,并介绍了用于捕获兴趣和建模兴趣演变过程的技术。

13.1.1 BaseModel

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

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

    每类特征中每个field 的特征都编码为 one-hot 向量。例如用户画像中的 female 特征编码为 [0,1] 。假设用户画像、用户行为、广告、上下文这四类特征中不同 fieldone-hot 向量拼接之后分别为 $ \mathbf{ x}_p,\mathbf{ x}_b,\mathbf{ x}_a,\mathbf{ x}_c $ 。

    在序列的 CTR 模型中,值得注意的是,用户行为特征包含一个行为列表,每个行为对应一个 one-hot 向量,可以表示为:

    $ \mathbf{x}_b = \left[\mathbf{\vec b}_1;\cdots;\mathbf{\vec b}_T\right] \in \mathbb R^{K\times T}, \mathbf{\vec b}_t\in \{0,1\}^K $

    其中 $ T $ 为用户行为序列的长度, $ K $ 为所有商品的数量, $ \mathbf{\vec b}_t $ 是第 $ t $ 个行为的 one-hot 向量。

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

    • Embedding 部分:embedding 是将大规模稀疏特征转换为低维稠密特征的常用操作。在 embedding layer,每个特征 field 对应一个 embedding 矩阵。例如,visited goodsembedding 矩阵可以表示为:
    $ \mathbf E_\text{goods} = \left[\mathbf{\vec m}_1;\mathbf{\vec m}_2;\cdots;\mathbf{\vec m}_K\right] \in \mathbb R^{n_E\times K} $

    其中: $ \mathbf{\vec m}_j\in \mathbb R^{n_E} $ 代表第 $ j $ 个商品的 embedding 向量, $ n_E $ 为 embedding 向量维度, $ K $ 为商品数量。

    对于行为特征的one-hot 向量 $ \mathbf{\vec b}_t $ ,如果 $ b_t[j_t] = 1 $ ,则对应于 embedding 向量 $ \mathbf{\vec m}_{j_t} $ ,那么用户行为特征的有序 embedding 向量列表可以表示为: $ \mathbf e_b= \left[\mathbf{\vec m}_{j_1};\cdots;\mathbf{\vec m}_{j_T}\right] $ ,其中 $ j_t $ 表示第 $ t $ 个行为作用的商品。

    • MLP 部分:将来自同一类特征的所有 embedding 向量馈入一个池化层,得到一个固定长度的向量。然后将来自不同类特征的固定长度向量拼接在一起,馈入 MLP 网络中得到最终预测结果。
  3. 损失函数:深度 CTR 模型中广泛使用的损失函数为负的对数似然,它使用目标 itemlabel 来监督整体预测结果。即:

    $ \mathcal L_\text{target} = -\frac 1N \sum_{(\mathbf{ x},y)\in \mathbb D}^N \left(y\times \log p(\mathbf x) + (1-y) \times \log (1-p(\mathbf x))\right) $

    其中:

    • $ \mathbf x = [\mathbf{ x}_p,\mathbf{ x}_b,\mathbf{ x}_a,\mathbf{ x}_c] \in \mathbb D $ , $ \mathbb D $ 为训练集, $ N $ 为训练集大小。
    • $ y\in \{0,1\} $ 表示用户是否点击目标 item
    • $ p(\mathbf x) $ 为模型预测用户点击目标 item 的概率。

13.1.2 DIEN

  1. 与赞助搜索 sponsored search 不同,在很多电商平台中,用户并没有清晰地表达他们的意图,因此捕获用户兴趣及其动态 dynamics 对于 CTR 预估很重要。DIEN 致力于捕获用户兴趣并建模兴趣演变过程。

    如下图所示,DIEN 由几个部分组成。

    • 首先,所有离散特征都通过 embedding layer 进行转换。

    • 接下来,DIEN 采取两个步骤来捕获兴趣演变:

      • 兴趣提取层 interest extractor layer 根据行为序列提取兴趣序列。
      • 兴趣演变层 interest evolving layer 建模与目标 item 相关的兴趣演变过程。
    • 然后,将最终兴趣的 representation、广告 embedding 向量、用户画像 embedding 向量、上下文 embedding 向量拼接起来。拼接的向量馈入 MLP 以进行最终的预测。

a. Interest Extractor Layer

  1. 在电商系统中,用户行为是用户潜在兴趣的载体,用户执行一次行为之后兴趣可能就会发生变化。在兴趣提取器层,我们从连续的用户行为中提取一系列的兴趣状态。

    电商系统中用户的点击行为非常丰富,即使在很短时间内(如两周),用户历史行为序列的长度也很长。为了在效率和性能之间平衡,我们采用 GRU 建模行为之间的依赖关系,其中 GRU 的输入是按发生时间排序的行为。GRU 克服了 RNN 的梯度消失问题,比 LSTM 更快,适用于电商系统。GRU 形式化为:

    $ \mathbf{\vec u}_t = \sigma\left(\mathbf W^u \mathbf{\vec i}_t + \mathbf U^u\mathbf{\vec h}_{t-1} + \mathbf{\vec b}^u\right)\\ \mathbf{\vec r}_t = \sigma\left(\mathbf W^r \mathbf{\vec i}_t + \mathbf U^r\mathbf{\vec h}_{t-1} + \mathbf{\vec b}^r\right)\\ \tilde{\mathbf{\vec h}}_t = \tanh\left(\mathbf W^h\mathbf{\vec i}_t + \mathbf{\vec r}_t\odot \mathbf U^h\mathbf{\vec h}_{t-1}+ \mathbf{\vec b}^h\right)\\ \mathbf{\vec h}_t = \left(1-\mathbf{\vec u}_t\right)\odot \mathbf{\vec h}_{t-1} + \mathbf{\vec u}_t\odot \tilde{\mathbf{\vec h}}_t $

    其中:

    • $ \sigma $ 为 sigmoid 激活函数, $ \odot $ 为逐元素积。
    • $ \mathbf W^u,\mathbf W^r,\mathbf W^h\in \mathbb R^{ n_H \times n_I}, \mathbf U^z,\mathbf U^r,\mathbf U^h\in \mathbb R^{n_H\times n_H} $ 为参数矩阵, $ \mathbf{\vec b}^u,\mathbf{\vec b}^r,\mathbf{\vec b}^h\in \mathbb R^{n_H} $ 为偏置向量。其中 $ n_H $ 为隐向量维度, $ n_I $ 为输入维度。
    • $ \mathbf{\vec i}_t = \mathbf{ e}_b[t] $ 为用户行为序列中的第 $ t $ 个行为的 embedding,它作为 GRU 的输入。 $ \mathbf{\vec h}_t $ 为第 $ t $ 个隐状态。
  2. 然而,仅捕获行为之间依赖关系的隐状态 $ \mathbf{\vec h}_t $ 无法有效的表达用户兴趣。由于目标 item 的点击行为是由最终兴趣触发的,因此损失函数 $ \mathcal L_\text{target} $ 中使用的 label 仅仅监督了最后一个兴趣状态 $ \mathbf{\vec h}_{T} $ ,历史兴趣状态 $ \mathbf{\vec h}_{t},t\lt T $ 没有得到合适的监督。

    众所周知,用户每一步的兴趣状态都将导致连续的行为,因此我们提出辅助损失,从而利用第 $ t+1 $ 步的输入(即行为 $ \mathbf{\vec b}_{t+1} $ )来监督第 $ t $ 步的兴趣状态 $ \mathbf{\vec h}_t $ 的学习。除了采用真实的 next behavior作为正样本之外,我们还从正样本之外采样了一些 item 作为负样本。因此得到 $ N $ 对行为embedding 序列:

    $ \left\{\mathbf{ e}_b^i,\hat{\mathbf{ e}}_b^i\right\}\in \mathbb D_\mathcal B,i=1,2,\cdots,N $

    其中:

    • $ i $ 为训练样本编号, $ N $ 为训练样本总数。

    • $ \mathbf{ e}_b^i\in \mathbb R^{T\times n_E} $ 表示用户的历史行为序列embedding , $ T $ 为用户历史行为序列长度, $ n_E $ 为行为 embedding 维度。

      $ \mathbf e_b^i[t]\in \mathbb G $ 表示用户 $ i $ 历史行为序列的第 $ t $ 个itemembedding 向量, $ \mathbb G $ 表示全部 itemembedding 集合。

    • $ \hat{\mathbf{ e}}_b^i\in \mathbb R^{T\times n_E} $ 表示负样本采样序列。 $ \hat {\mathbf e}_b^i[t] \in \left(\mathbb G- \mathbf e_b^i[t]\right) $ 表示从用户 $ i $ 历史行为序列第 $ t $ 个item 以外的所有item 中采样得到的item embedding

    辅助损失函数为:

    $ \mathcal L_\text{aux} = -\frac 1N\sum_{i=1}^N\sum_{t}\left[\log \sigma\left(\mathbf{\vec h}_t^i,\mathbf e_b^i[t+1]\right)+ \log\left(1-\sigma\left(\mathbf{\vec h}_t^i,\mathbf {\hat e}_b^i[t+1]\right)\right)\right] $

    其中:

    • $ \sigma(\mathbf{\vec x}_1,\mathbf{\vec x}_2) = \frac{1}{1+\exp(- \mathbf{\vec x}_1\cdot \mathbf{\vec x}_2)} $ 为 sigmoid 激活函数。
    • $ \mathbf{\vec h}_t^i $ 表示用户 $ i $ 的第 $ t $ 个隐状态。
    • $ \mathbf e_b^i[t+1] $ 为第 $ t+1 $ 个点击 itemembedding 向量,它作为第 $ t $ 步的、postive 的监督信息; $ \hat {\mathbf e}_b^i[t+1] $ 为第 $ t+1 $ 个负采样 itemembedding 向量,它作为第 $ t $ 步的 negative 的监督信息。

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

    $ \mathcal L = \mathcal L_\text{target} + \alpha \times \mathcal L_\text{aux} $

    其中: $ \mathcal L_\text{target} $ 为模型的主损失函数, $ \alpha $ 为超参数用于平衡兴趣表达和CTR 预测。

  3. 通过引入辅助函数,每个隐状态 $ \mathbf{\vec h}_t $ 就具有足够的表达能力来表达行为 $ \mathbf{ e}_b[t] $ 背后的兴趣。所有 $ T $ 个兴趣状态 $ [\mathbf{\vec h}_1,\mathbf{\vec h}_2,\cdots,\mathbf{\vec h}_T] $ 一起构成了兴趣序列,从而作为兴趣演化层的输入。

    总体而言,引入辅助函数具有多个优点:

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

b. Interest Evolving Layer

  1. 随着外部环境和用户自身认知的共同作用,用户的各种兴趣随着时间的推移也在不断演变。以用户对衣服的兴趣为例,随着人口趋势和用户品味的变化,用户对衣服的偏好也在改变。这种兴趣演变过程直接决定了候选衣服商品的点击率预测。对这种兴趣演变过程进行建模有以下优点:

    • 兴趣演变模块interest evolving module 可以提供具有更多相关历史信息的最终兴趣的 representation
    • 可以更好地跟随兴趣演变趋势来预测目标item 的点击率。

    值得注意的是,在演变过程中兴趣表现出两个特点:

    • 由于兴趣的多样性,兴趣可能会发生漂移drift 。兴趣漂移对用户行为产生的影响是:用户可能在某个时间段对各种书籍感兴趣,但是另一个时间段可能对各种衣服感兴趣。
    • 尽管兴趣之间会相互影响,但是每种兴趣都有自己的演变过程。如:书籍和衣服的兴趣演变过程几乎是独立的。我们只关注和目标 item 相关的兴趣演变过程。
  2. 在第一阶段辅助损失的帮助下,我们获得了兴趣序列的 representation。通过分析兴趣演变的特点,我们结合注意力机制的局部激活能力以及GRU 的序列学习能力来建模兴趣演变过程。在 GRU 的每个 step ,局部激活都可以强化相关兴趣的影响,并减弱无关兴趣(兴趣漂移)的干扰,有助于建模目标item 相关的兴趣演变过程。

    令 $ \mathbf{\vec i}_t^\prime,\mathbf{\vec h}_t^\prime $ 为兴趣演变模块的输入向量和隐向量。其中:兴趣演变模块的输入就是兴趣抽取模块的隐向量 $ \mathbf{\vec i}_t^\prime = \mathbf{\vec h}_t $ ,兴趣演变模块最后一个隐向量 $ \mathbf{\vec h}_T^\prime $ 就是最终的兴趣状态。

    我们在兴趣演变模块中使用的attention score函数定义为:

    $ a_t = \frac{\exp\left(\mathbf{\vec h}_t \mathbf W \mathbf{\vec e}_a\right)}{\sum_{j=1}^T \exp\left(\mathbf{\vec h}_j\mathbf W \mathbf{\vec e}_a\right)} $

    其中:

    • $ \mathbf{\vec e}_a \in \mathbb R^{n_A} $ 是广告 afieldembedding 向量的拼接向量, $ n_A $ 为拼接向量维度。
    • $ \mathbf W\in \mathbb R^{n_H\times n_A} $ 为参数矩阵, $ n_H $ 为隐向量维度。

    attention score反映了广告 a 和输入的潜在兴趣 $ \mathbf{\vec h}_t $ 之间的关系,关系越紧密则得分越高。

  3. 接下来,我们将介绍几种结合注意力机制和 GRU 对兴趣演变过程进行建模的方法。

    • GRU with attentional input: AIGRU :为了在兴趣演变过程中激活相关的兴趣,我们提出了一种简单的方法,称作带注意力输入的 GRU GRU with attentional input: AIGRUAIGRU 使用attention score来影响兴趣演变层的输入:

      $ \mathbf{\vec i}_t^\prime = \mathbf{\vec h}_t\times a_t $

      其中: $ \mathbf{\vec h}_t $ 是兴趣提取层的第 $ t $ 个隐状态; $ \mathbf{\vec i}_t^\prime $ 是第二个 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 的更新门,并直接修改隐状态:

      $ \tilde {\mathbf{\vec u}}_t^\prime = a_t \times \mathbf{\vec u}_t^\prime\\ \mathbf{\vec h}_t^\prime = (1-\tilde {\mathbf{\vec u}}_t^\prime)\odot \mathbf{\vec h}_{t-1}^\prime + \tilde {\mathbf{\vec u}}_t^\prime\odot \tilde {\mathbf{\vec h}}_t^\prime $

      其中: $ \mathbf{\vec h}_t^\prime,\mathbf{\vec h}_{t-1}^\prime,\tilde {\mathbf{\vec h}}_t^\prime $ 是 AGRU 的隐状态。

      在兴趣演变的场景中,AGRU 利用attention score 直接控制隐状态的更新。AGRU 在兴趣演变过程中削弱了目标 item 相关性较低兴趣的影响。将注意力嵌入到 GRU 中提高了注意力机制的影响,帮助 AGRU 克服了 AIGRU 的缺陷。

    • GRU with attentional update gate: AUGRU:虽然 AGRU 可以直接使用attention score来控制隐状态的更新,但是它使用了标量(attention score $ a_t $ )代替向量(更新门 $ \mathbf{\vec u}_t $ ) ,忽略了不同维度之间重要性的差异。我们提出了带注意力更新门的 GRU GRU with attentional update gate: AUGRU 来无缝结合注意力机制和 GRU

      $ \tilde {\mathbf{\vec u}}t^\prime = a_t \times \mathbf{\vec u}t^\prime\ \mathbf{\vec h}t^\prime = (1-\tilde {\mathbf{\vec u}}t^\prime)\odot \mathbf{\vec h}{t-1}^\prime + \tilde {\mathbf{\vec u}}t^\prime\odot \tilde {\mathbf{\vec h}}t^\prime $

      其中: $ \mathbf{\vec u} t^\prime $ 为原始更新门, $ \tilde {\mathbf{\vec u}}_t^\prime $ 是我们为 AUGRU 设计的注意力更新门; $ \mathbf{\vec h}_t^\prime,\mathbf{\vec h}_{t-1}^\prime,\tilde {\mathbf{\vec h}}_t^\prime $ 是 AUGRU 的隐状态。

      AUGRU 中,我们保留更新门的原始维度信息,它决定了每个维度的重要性。我们使用attention score $ a_t $ 来缩放更新门的所有维度,这导致目标 item 更少相关性的兴趣对隐状态的影响越小。AUGRU 更有效地避免了兴趣漂移带来的影响,并推动目标item 相关的兴趣平稳演变。

13.2 实验

  1. 这里我们在公共数据集、工业数据集上将 DIENstate of the art 技术进行比较。此外,我们设计了实验来分别验证辅助损失和 AUGRU 的影响。为了观察兴趣演变的过程,我们展示了兴趣隐状态的可视化结果。最后,我们分享了在线 serving 的技术和结果。

  2. 数据集:

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

      在这些数据集中我们将评论视为行为,并按照时间对用户的评论排序。假设用户 $ u $ 有 $ T $ 个行为,我们的目标是使用前 $ T-1 $ 个行为来预测用户 $ u $ 是否会点评第 $ T $ 个评论中的商品。

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

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

    这些数据集的统计信息如下表所示。

  3. baseline 方法:我们将 DIEN 和一些主流的 CTR 预估模型进行比较。

    • BaseModelBaseModel 采用与 DIEN 相同的 embedding settingMLP setting,但是BaseModel 使用 sum pooling 来聚合用户的所有行为embedding
    • Wide & DeepWide & Deep由两部分组成,其 deep partBaseModel 相同、wide part 为线性模型。
    • PNNPNN 使用 product layer 来捕获跨 field 之间的特征交互模式 interactive pattern
    • DINDIN 使用注意力机制来激活目标 item 相关的用户行为。
    • Two layer GRU Attention :通过双层 GRU 来建模用户行为序列,并采用注意力机制来关注目标item 相关的行为。
  4. 公共数据集的结果:在公共数据集中每个实验重复 5 次,取离线 AUC 的均值和标准差,实验结果如下表所示。可以看到:

    • 人工设计特征的 Wide & Deep 性能不佳,而自动特征交叉的 PNN 效果相对较好。

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

      • DIN 激活了相对于目标广告的用户兴趣,Two Layer GRU Attention 进一步有效的捕获了兴趣序列中目标广告的相关兴趣。所有这些探索都获得了积极的效果。
      • DIEN 不仅可以有效捕获兴趣序列,还可以对与目标item 相关的兴趣演变过程建模。兴趣演变模型可以帮助 DIEN 获取更好的兴趣representation ,并准确捕获兴趣动态,从而大幅提升性能。

  5. 工业数据集的结果:我们进一步对真实展示广告的数据集进行实验。在工业数据集中,我们在 MLP 使用 6FCN layer,维度分别为 600, 400, 300, 200, 80, 2,历史行为序列的最大长度为 50。实验结果如下表所示。可以看到:

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

  6. 消融研究:这里我们展示 AUGRU 和辅助损失的效果。

    • AUGRU 的效果:下表给出了不同兴趣演变方法的结果。

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

    • 辅助损失的效果:使用 AUGRU 的基础上我们进一步评估辅助损失的效果。公共数据集中,用于辅助损失的负样本都是从当前评论商品之外的item 集合中随机抽样的。工业数据集中,用于辅助损失的负样本是所有已曝光但是未点击的广告。

      如下图所示,整体损失函数 $ \mathcal L $ 和辅助损失 $ \mathcal L_\text{aux} $ 都保持相似的下降趋势,这意味着兴趣 representation 生效,其中 $ \alpha = 1 $ 。

      如下表所示,辅助损失为两个公共数据集都带来了很大的改进(最后一行 vs 倒数第二行),它反应了监督信息对于学习兴趣序列和 embedding 表示的重要性。

      如下表所示,辅助损失为工业数据集也带来了性能提高(最后一行 vs 倒数第二行),但是我们可以看到改进并不像公共数据集那样明显。这种差异来源于几个方面:

      • 首先,工业数据集具有大量的样本来学习 embedding 层,这使得它从辅助损失中获得的收益更少。
      • 其次,不同于公共数据集的item 全部属于同一个类目,工业数据集包含阿里所有场景的所有类目 item 。我们的目标是在一个场景中预测广告的点击率。辅助损失的监督信息可能与目标 item 是异质的heterogeneous ,所以辅助损失对工业数据集的影响可能相比公共数据集要小,而 AUGRU 的影响则被放大了。

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

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

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

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

  8. 在线 A/B test:我们在淘宝的展示广告系统进行在线 A/B testing ,测试时间从 2018-06-07 ~ 2018-07-02 ,测试结果如下。与 BaseModel 相比,DIENCTR 提升 20.7%eCPM 提升 17.1%pay per click: PPC 降低 3%

    目前 DIEN 已经在线部署并服务于主要流量,业务收入显著增长。

  9. 在线 servingDIEN 的在线服务 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 ,每个 workerquery per second: QPS 可以达到 360

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文