DIEN 是阿里妈妈在9月份公开的一个点击率预估模型。论文中提到的技术点十分值得去研究和尝试一下。之前做了一个slides,今天抽时间将它整理出来~
主要从以下几个角度介绍。
1. 研究背景
2. 相关工作及其不足
3. 解决方案
4. 实验设置与分析
5. 总结与思考
研究背景
【目标 - CTR预估】
论文主要介绍了一种应用于CTR预估的模型。CTR预估是广告系统、推荐系统的核心任务之一。简单来说,就是对每次广告或商品的点击情况进行预估,预测用户点击与否?
【关键 - 对用户兴趣及其演变建模】
- 隐式兴趣(latent interest):用户与系统交互的行为是表达兴趣的载体。
- 兴趣演变(Interest evolving):受外在环境与内在认知变化的影响,用户的兴趣往往会随时间不断变化。以购买衣服为例,用户对兴趣的喜好,会随季节、时尚风潮以及个人品味的变化而变化。
因此,想要做好点击率预估,必须在挖掘用户兴趣的同时,抓住用户兴趣的变化过程!
相关工作及其不足
准确的CTR预估需要精细化权衡用户、广告主、平台三方利益。经过多年的技术更新迭代与发展,CTR预估技术经历了从 LR/FM 到 融合模型(RF/GBDT/XGBoost) 到 深度CTR预估模型(FNN/PNN/WDL/DeepFM/DIN)的过程,而贯穿其中的主线是如何让模型自动地进行组合特征的挖掘?
近几年,由于神经网络在图像领域表现出强有力的特征表现及组合能力,深度CTR模型层出不穷,但大多遵从 Embedding + MLP这一基础网络架构。
自底向上观测 Base Model 的工作机制。
- 第一模块:特征表示,可将特征大致分为四类:user profile、user behavior、ad 以及 context 部分。每一类特征包含多个field,如性别、星期几都属于不同的field。逐个对field进行 multi-hot 编码。注意黑色框部分,与 one-hot 编码不同,multi-hot 编码中,一个向量可能存在多个 1。
- 第二模块:嵌入层,学习特征的低维向量表示。每一个field都有一个独立的 embedding matrix。值得注意的是,由于每个用户的历史行为数据各不相同,因此 的列数是不确定的。相应地也就不能直接与其他field的嵌入向量首尾相接,作为MLP层的输入。
- 第三模块:pooling 层和链接层。对 进行sum pooling,解决维度不定的问题。并与其他 field 嵌入向量首尾拼接,作为 MLP 层的输入 。
- 第四模块:MLP 层,自动学习高阶的组合特征。
Base Model 存在两点不足:
- 忽略隐式特征的挖掘和表示。行为是兴趣的载体,能反映兴趣,但若直接用行为表示兴趣则略有不妥。因为,行为是序列化产生的,如果像大部分现有的模型那样直接采用行为即兴趣的做法,会忽略行为之间的依赖关系。此外,当前时刻的兴趣往往直接导致了下一行为的发生。
【本文观点:(1)在电商平台中,用户行为是兴趣的载体,且是以时间而产生的序列数据,其间存在的依赖、次序隐藏着用户喜好。(2)当前时刻的兴趣直接导致了下一行为的产生】 - 忽略兴趣的变化。如之前所讲,用户的兴趣是不断变化的。例如用户对衣服的喜好,会随季节、时尚风潮以及个人品味的变化而变化,呈现一种连续的变迁趋势。但在淘宝平台中,用户的兴趣是丰富多样的,且每个兴趣的演变基本互不影响。此外,影响最终行为的仅仅是与目标商品相关的兴趣。
【本文观点:(1)用户的兴趣呈现序列变迁的趋势,即随外在环境和内在认知的变化而变化。(2)DIN的启示[1]:淘宝平台中,用户的兴趣是丰富多样的,但能够影响用户行为的仅仅是与目标商品相关的兴趣(attention)。(3)AGRU的启示[2]:用带attention机制的GRU对序列行为建模。】
解决方案
基于现有模型存在的两点不足以及论文作者的发现,作者提出了以上网络架构。
- 输入层特征的表示,以及ad、context、user profile这三类特征的低维嵌入向量的学习与base model的处理相同。
- 网络设计的亮点在于用behavior layer、interest extractor layer 以及 interest evolving layer从用户历史行为中挖掘用户与目标商品相关的兴趣及演变。
- 优化的目标损失函数采用的是负对数似然(negative log-likelihood loss ),公式中的就是网络的输出。
解决方案-Interest Extractor Layer
在 interest extractor layer 用 GRU 结构的 RNN对依时间产生的序列行为建模,捕捉行为之间的依赖,生成的 interest state(
注意:GRU 能避免 RNN 中的梯度消失,且比 LSTM 快
解决方案 - Interest Evolving Layer
兴趣是不断变化的:
- 用户在某一段时间的喜好具有一定的集中性。比如用户可能在一段时间内不断买书,在另一段时间内不断买衣服。
- 每种兴趣都有自己的演变趋势,不同种类的兴趣之间很少相互影响,例如买书和买衣服的兴趣基本互不相关。
因此采用带attention机制的GRU(AUGRU)去捕捉与目标商品相关的兴趣及其演变。
黄色框中, 是 target ad 的低维嵌入表示。 衡量的是与的相关程度。
从数学公式中可以看出,AIGRU 激活局部兴趣和捕获兴趣演变的过程是相互独立的。仅仅是用 来影响GRU的输入,且即便输入为 0(无关的兴趣)也还是会对hidden state产生影响。
AGRU用 替代 GRU 的 update gate,直接控制 hidden state 的更新。将 attention 机制融入到了捕获兴趣演变的过程中,一定程度上弥补了 AIGRU 的不足。
但是,原先 GRU 中控制 hidden state 更新的是一个包含多个维度的向量,AGRU 用纯量替代略有不妥,因此这篇文章设计了 AUGRU,用 影响 ,再间接影响 hidden state的更新。
实验设置与分析
若黄色部分为目标商品,则发生在它前面的行为为历史行为(绿色部分)。而它后面一天的数据则用于测试(红色部分)。
下面实验着重回答如下问题:
- Q1: 性能是否能超越对比模型?
- Q2: AUGRU是否有效?
- Q3: auxiliary loss 是否有效?
- Q4: 对兴趣演变的定性分析?(可视化分析)
- Q5: A/B Test 效果?
红色框中为带attention机制的模型。
绿色框中为AIGRU、AGRU以及AUGRU之间的对比。
BaseModel+GRU+AUGRU 与 DIEN 区别在于是否使用了auxiliary loss。
将属于8个不同类( Computer Speakers, Headphones, Vehicle GPS, SD & SDHC Cards, Micro SD Cards, External Hard Drives, Headphones, Cases)的行为对应的AUGRU的hidden state 向量提取出来,并用PCA降维将这些向量降低至两个维度,最终得以在二维坐标系上表现出来。
- 黄色部分将 attention 的值设为同一值,即忽略目标商品对各个 hidden state 的影响。
- 蓝色部分选定的目标商品属于 Screen Protectors 类,与历史行为中的商品类不相关。其 attention score 变化不明显,且变化趋势与黄色部分大致相同。
- 红色部分选定的目标商品属于 Cases 类,与历史行为中的最后一个行为的交互的商品相关。因此,最后一个历史行为的 attention score 得分激增,hidden state 也被激活。
总结与思考
【亮点】
- 关注隐藏在用户行为背后的潜在兴趣特征的挖掘和表示(GRU + auxiliary loss)
- 淘宝平台上商品种类繁多,用户兴趣具有多样性。预测时,仅仅捕获与目标商品相关的兴趣及其演变(AUGRU)。
关注隐藏在用户行为背后的潜在兴趣特征的挖掘和表示(GRU + auxiliary loss)
淘宝平台上商品种类繁多,用户兴趣具有多样性。预测时,仅仅捕获与目标商品相关的兴趣及其演变(AUGRU)。
【思考】
- 从实验结果上来看,auxiliary loss 在工业数据集上作用不明显。主要原因是监督兴趣学习的行为可能与目标商品不一致,若在这一层也采用attention机制,是否能弥补不足?
参考文献
[1] Zhou et al. Deep interest network for click-through rate prediction. In KDD. 2018.
[2] He and McAuley. Ups and downs: Modeling the visual evolution of fashion trends with one-class collaborative filtering. In www. 2016.