前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【CTR】DIEN:阿里深度兴趣演化模型

【CTR】DIEN:阿里深度兴趣演化模型

作者头像
阿泽 Crz
发布2020-07-21 11:40:27
1.3K0
发布2020-07-21 11:40:27
举报
文章被收录于专栏:阿泽的学习笔记

作者:阿泽

今天阅读的是阿里 2018 年的论文《Deep Interest Evolution Network for Click-Through Rate Prediction》,文章中提出的 DIEN 是之前我们介绍的 DIN 的改进版。

DIN 指出用户浏览商品时的兴趣是具备多样性的,所以在浏览商品时可能只与某一个兴趣有关,所以没有必要同时将用户的所有兴趣压缩到同一向量中。阿里的同学采用了 Attention 模型结构来激活用户的局部兴趣,从而丰富了用户的兴趣表达,并在线上 CTR 系统中提高了 10%。

而今天介绍的 DIEN 主要是用来优化的 DIN 模型中的 Attention 部分。具体来说,DIEN 设计了一个兴趣提取层和兴趣演化层分别用来捕捉用户行为背后的真实兴趣和用户兴趣的动态变化。

目前,DIEN 已部署于淘宝广告系统中,并获得了 20.7% 的 CTR 提升。

1.Introduction

在大部分非搜索类电商领域中,用户并不会主动表达自己的兴趣,所以如何设计出既能够捕捉用户兴趣又能捕捉用户动态的模型是提高 CTR 预测性能的关键。

目前诸多 CTR 模型都在由传统方法转向深度 CTR 模型,但是大多数深度 CTR 模型都只关注于捕捉不同领域特征的交互,而忽视用户的兴趣表示。深度兴趣网络(Deep Interest Netword,DIN)强调用户兴趣是多样化的,并使用了基于 Attention 的模型来捕获目标的相关性,把自适应的进行兴趣表示。然而 DIN 等模型的一大缺点在于直接将用户的行为视为用户的真实兴趣而没有去挖掘行为背后真正的兴趣。此外诸多模型也都没有考虑用户兴趣的动态变化,而捕捉用户的动态兴趣对用户兴趣表示非常重要。

针对目前工作的不足,作者提出了深度兴趣演化网络(Deep Interest Evolution Network,DIEN)来提高 CTR 的性能。DIEN 中有两个关键模块:一个是从用户行为中提取用户潜在的兴趣另一个是对兴趣演化过程进行建模。前者为兴趣提取层,DIEN 通过 GRU 来建模行为之间的依赖关系;后者称为兴趣演化层,作者设计了带有注意力更新门的 GRU(AUGRU),并基于从兴趣提取层中获得的兴趣序列和 item 进行关联计算,增强相对兴趣对兴趣演化的影响,弱化兴趣飘逸所产生的非相对兴趣效应。

接下来我们来看 DIEN 的具体架构。

2.DIEN

先放出 DIEN 的架构图:

从下往上看:

  • 首先,通过蓝色嵌入层对所有类别的特征进行变换;
  • 其次,DIEN 采取了两个步骤来捕获兴趣进化:橘色的兴趣提取层基于行为序列提取兴趣序列;红色的兴趣进化层是对与目标项目相关的兴趣进化过程进行建模;
  • 然后,将最终兴趣的表示和嵌入向量,如 ad、用户配置文件、上下文等进行连接;
  • 最后,将连接后的向量输入MLP进行最终预测。

2.1 Interest Extractor Layer

由于用户行为是用户兴趣的潜在载体,所以在兴趣提取层的目的从连续的用户行为中提取了一系列的兴趣状态。

由于用户的点击行为非常频繁,即使在短时间内其行为序列可能也会很长。为了平衡效率和性能,作者采用 GRU 来对建模用户行为之间的历来关系。其中,GRU 的输入是按行为发生的时间顺序进行排序的。GRU 相比 RNN 来说克服了梯度消失的问题,比 LSTM 速度更快。其计算公式如下:

\begin{aligned} u_t &= \sigma(W^ui_t + U^uh_{t-1}+b^{u}) \\ r_t &= \sigma(W^{r}i_t + U^rh_{h-1} +b^{r}) \\ \widetilde h_t &= tanh(W^hi_t + r_t \circ U^h_{t-1} + b^h) \\ h_t &= (1-u_t) \circ h_{t-1} + u_t \circ \widetilde h_t \\ \end{aligned} \\

其中,

\sigma

是 sigmoid 激活函数;

\circ

是元素点积(内积);

W^u,W^r,W^h \in R^{n_H\times n_I}

U^z,U^r,U^h \in n_H\times n_H

n_H

为隐藏层大小;

n_I

为输入层大小;

i_t

为 GRU 的输入,

i_t=e_b[t]

表示用户的第 t 个行为;

h_t

表示第 t 个隐藏层。

但是隐藏层

h_t

仅能捕获行为之间的依赖关系,并不能有效表示用户兴趣。损失函数(

L_{target}

)只反映了最终的用户兴趣(最终兴趣反映点击行为),而隐藏层的历史状态

h_t(t< T)

并不能得到有效的监督信息来指导学习。

而我们知道,每一步的兴趣状态都会直接导致连续的行为。所以作者提出了辅助损失(Auxiliary Loss),利用 t+1 时刻的用户行为

b_{t+1}

来作为隐藏层

h_t

的学习目标。

除了利用真实的下一个行为来作为正样本外,作者还对未点击的商品进行采样来作为负样本。此时便有了 N 对用户行为序列:

\{e_b^i,\hat e_b^i \} \in D_B, i\in 1,2,...,N

,其中

e_b^i \in \mathbb{R}^{T\times n_E}

表示用户点击行为的序列;

\hat e_b^i \in \mathbb{R}^{T\times n_E}

表示负样本序列;T 为用户历史行为的数量;

n_E

为 Embedding 向量的维度;

e_b^i[t]\in G

表示用户 i 点击的第 t 个商品的 Embedding 向量;G 为所有的商品集合;

\hat e_b^i[t]\in G - e_b^i[t]

表示用户 i 在第 t 时间步是没有点击商品的采样。

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]))) \\

其中,

\sigma(x_1,x_2)=\frac{1}{1+exp(-[x1,x_2])}

h_t^i

表示对于用户 i 来说 GRU 的第 t 个隐藏层状态。

最终损失函数为:

l=l_{target} + \alpha * L_{aux} \\

其中,

\alpha

为超参,用户控制 CTR 预测和用户兴趣的表征。

有了辅助损失,每一个隐藏层的状态

h_t

都会具有足够的表达力来反映用户行为

i_t

后的兴趣状态。而所有的兴趣点

[h_1,h_2,...,h_T]

也构成了兴趣演化层的输入。

总的来说,辅助损失有以下几个优点:

  1. 从学习兴趣的角度来说,辅助损失的引入有助于 GRU 的每个隐藏层状态都能更好的对兴趣进行表征;
  2. 从 GRU 的优化角度来说,辅助损失有助于降低 GRU 对长序列建模时的反向传播的难度;
  3. 从 Embedding 角度来说,辅助损失有助于 Embedding 层学习到更多的语义信息,从而得到更好的 Embedding 矩阵。

2.2 Interest Evolving Layer

我们知道用户的兴趣是动态的,会随着时间的推移而发生改变。所以我们需要对用户的兴趣演化过程进行建模,其优点在于:

  1. 兴趣演化模块可以为最终兴趣的表征提供更多的相关历史信息;
  2. 通过兴趣演化的趋势可以更好进行 CTR 预测。

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

  1. 兴趣漂移:用户兴趣是具有多样性的,可能在一段时间内对各种书籍感兴趣,而另一段时间内会对衣服感兴趣;
  2. 兴趣独立演化:尽管兴趣间会有相互影响,但每个兴趣都有自己的演变过程,比如说,书籍和衣服的演变过程几乎是独立的,所以只需要关注与目标 item 相关的兴趣演化过程,而无需关注所有的兴趣演化。

第一阶段借助辅助损失我们得到了每个时间步的兴趣序列的表示。通过分析兴趣演化的特点,作者将注意力机制的局部激活方法与 GRU 的顺序学习方式相结合,建立了兴趣演化模型。GRU 各阶段的局部激活可以增强相关兴趣的影响,同时降低兴趣漂移的干扰,有利于对兴趣演化过程进行建模。

GRU 的公式与上面的类似,其中注意力函数为:

a_t = \frac{exp(h_tWe_a)}{\sum_{j=1}^T exp(h_jWe_a)} \\

其中,

e_a

为商品的 Embedding 向量,

W\in \mathbb{R}^{n_H\times n_A}

n_H

为隐藏层为度,

n_A

为广告的 Embedding 向量大小。

注意力分数可以反应输入状态

h_t

与广告

e_a

之间的关系,相关性越强分数越高。

作者给出了多种注意力机制与 GRU 结合的方法:

AIGRU:全称 GRU with attentional input,其直接将注意力分数与输入相乘:

i_t^{'} = h_t * a_t \\

理想情况下,相关性小的兴趣表征相关性会非常小,然而 AIGRU 的效果不太好。其主要原因是即使是零输入也会改变 GRU 的隐藏层状态,所以即使是相关性小的兴趣也会影响兴趣演化的学习。

AGRU:全称 Attention based GRU,采用问答领域提出的 AGRU 方法,使用注意力分数来代替 GRU 的更新门,并直接改变了隐藏状态:

h_t^{'} = (1-a_t) * h_{t-1}^{'} + a_t * \widetilde h_t^{'} \\

在兴趣演化的过程中,AGRU 受相关兴趣的影响较弱,克服了 AIGRU 的缺点。虽然 AGRU 使用注意力分数来直接控制隐状态的更新,但其使用了一个标量(注意力分数

a_t

)来代替向量(更新门

u_t

,也就是忽略了维度之间的区别。

AUGRU:全称 GRU with attentional update gate,作者提出了带有注意力更新门的 GRU 结构来实现注意力机制和 GRU 的无缝结合:

\begin{aligned} \widetilde u_t^{'} &= a_t * u_t^{'} \\ h_t^{'} &= (1-\widetilde u_t^{'}) \circ h_{t-1}^{'} + \widetilde u_t^{'} \circ \widetilde h_t^{'} \\ \end{aligned} \\

AUGRU 保留了更新门的原始维度信息,并利用注意力得分来衡量更新门的各个维度。从结果中发现相关兴趣越少,对隐藏状态的影响越小,更有效的避免里兴趣飘逸的干扰。

3.Experiment

简单看下实验

首先是公共数据集上的 AUC:

分析下不同 GRU 的结果:

然后是阿里自己的工业数据集:

最后是线上 A/B 测试:

4.Conclusion

总结:作者针对 DIN 没有挖掘用户行为背后的潜在兴趣和没有捕捉用户动态兴趣这两大问题,提出了一个模型 DIEN,并利用兴趣提取层和兴趣演化层分别解决了 DIN 出现的两大问题。在兴趣提取层中,DIEN 利用辅助损失来为 GRU 的隐藏状态提供更多的监督信息;而在兴趣演化层,DIEN 利用 AUGRU 增强了相关兴趣对目标的影响,并克服了兴趣飘逸的问题。

5.Reference

  1. 《Deep Interest Evolution Network for Click-Through Rate Prediction》
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿泽的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Introduction
  • 2.DIEN
    • 2.1 Interest Extractor Layer
      • 2.2 Interest Evolving Layer
      • 3.Experiment
      • 4.Conclusion
      • 5.Reference
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档