[KDD'18] DIN: Deep Interest Network for Click-Through Rate Prediction 论文精读

DIN 是阿里兴趣建模系列的起点,也是推荐领域第一个把注意力机制引入的工作.

传统 Embedding&MLP 模型把用户所有历史行为压成一个固定长度向量 —— 但用户兴趣是多样的,一个定长向量在有限维度下表达力受限。DIN 的洞察是: 面对不同候选广告,用户被激活的兴趣是不同的 (买键盘看的是电子类历史,买衣服看的是服饰类历史)。于是用 local activation unit 对历史行为做 target-aware 的加权求和,让用户表示随候选广告动态变化.

配套两个工程技巧: Mini-batch Aware 正则 (让亿级稀疏特征的 L2 正则算得起) 和 Dice 激活函数 (自适应整流点的 PReLU)。阿里展示广告线上 CTR +10.0%、RPM +3.8%.

#0. 摘要

CTR 预估的深度模型大多遵循 Embedding & MLP 范式: 大规模稀疏特征先映射成低维 embedding,再 group-wise 地变换成固定长度向量,最后拼接喂入 MLP。这种方式把一个用户的多样兴趣压成同一个定长向量,成为瓶颈。

本文提出 Deep Interest Network (DIN),设计一个 local activation unit,针对某个广告,自适应地从历史行为中学习用户兴趣的表示 —— 这个表示向量随不同广告而变化,大幅提升了模型在有限维度下的表达力。此外提出两个训练技巧: mini-batch aware 正则数据自适应激活函数 Dice。DIN 已部署于阿里在线展示广告系统,服务主要流量.

#1. 引言

在 CPC (Cost-Per-Click, 点击付费) 广告中,广告按照 eCPM (effective Cost Per Mille,每千次点击成本) 来排名。 eCPM 是 bid (出价) 和 CTR (点击率) 的乘积,其中 CTR 是由系统预估得到的。目前的深度 CTR 模型遵循 Embedding & MLP 范式:首先将大规模稀疏输入特征映射到低维嵌入向量,然后以分组方式转换为固定长度的向量,最后将它们连接起来输入到全连接层(也称为多层感知器,MLP)以学习特征之间的非线性关系。与传统的 LR 模型相比,这些深度学习方法可以大大减少特征工程工作,并显著增强模型能力。

但有个根本问题:用户兴趣是多样化的。 Embedding & MLP 把所有历史行为聚合成一个固定长度的向量,该向量位于所有用户的表示向量所在的欧几里得空间中。换句话说,用户的多样化兴趣被压缩到一个固定长度的向量中,这限制了 Embedding&MLP 方法的表达能力。强行扩大维度又会带来参数爆炸与过拟合,增加了计算和存储的负担,工业系统难以承受.

DIN 的灵感来自一个观察 —— 用户兴趣具有局部激活 (local activation) 特性: 当判断一个用户会不会点击某广告时,起作用的只是其历史行为中与该广告相关的一部分。因此不必把全部兴趣塞进定长向量,而是针对候选广告软搜索 (soft-search) 相关行为,做加权求和得到自适应的用户表示.

本文的主要贡献:

  • 提出深度兴趣网络 DIN,引入局部激活单元对历史行为做 target-aware 加权,用户表示随广告自适应变化,极大提升表达力.
  • 提出两个针对大规模深度网络的训练技巧: ① mini-batch aware 正则,省去对亿级稀疏特征做正则的巨大开销; ② Dice 激活函数,考虑输入分布泛化 PReLU.
  • 在公开与工业数据集上验证有效性,并已部署于全球最大广告系统之一.

#2. 相关工作

  • NNLM
  • LS-PLM 和 FM
  • Deep Crossing 和 Wide & Deep
  • DeepFM

#3. 背景

阿里巴巴广告系统的运行流程:

  1. 匹配阶段:用户输入查询,系统根据查询和用户历史行为,匹配出候选广告。
  2. 排序阶段:系统根据候选广告的 CTR 预估,对候选广告进行排序。

#4. DIN 模型

广告系统和搜索的区别在于,用户不会明确表达自己的意图。需要有效的策略来从丰富的历史行为中提取用户兴趣。描述用户和广告的特征是广告系统中点击率建模的基本要素。合理利用这些特征并从中挖掘信息至关重要。

#4.1 特征表示

工业 CTR 数据大多是多分组的类别形式,例如 [星期=五, 性别=女, 看过的类别={Bag,Book}, 广告类别=Book],通常经编码转成高维稀疏二值特征。第ii 个特征组的编码向量记为tiRKi\mathbf{t}_i \in \mathbb{R}^{K_i}KiK_i 是该组的维度 (即该组含KiK_i 个唯一 id),ti[j]{0,1}\mathbf{t}_i[j] \in \{0,1\}j=1Kiti[j]=k\sum_{j=1}^{K_i} \mathbf{t}_i[j] = k:

  • k=1k = 1one-hot 编码 (如性别);
  • k>1k > 1multi-hot 编码 (如看过类别,用户访问过的多个类目)。

一个样本按组拼接表示为x=[t1,t2,,tM]\mathbf{x} = [\mathbf{t}_1^{\top}, \mathbf{t}_2^{\top}, \ldots, \mathbf{t}_M^{\top}]^{\top}MM 是特征组数,i=1MKi=K\sum_{i=1}^{M} K_i = K 是整个特征空间维度。特征通常分四大类: 用户画像特征、用户行为特征 (访问过的 goods_id 列表)、广告特征、上下文特征,其中用户行为特征是建模用户兴趣的关键,且不做人工的特征交叉组合 —— 交给模型自己学习。

表1. 阿里巴巴展示广告系统中使用的特征集统计。特征以分组方式由稀疏二进制向量组成。

类别特征组维度类型每个实例的非零 ID 数量
用户画像特征性别2one-hot1
年龄段∼10one-hot1
用户行为特征访问过的商品 ID∼10⁹multi-hot∼10³
访问过的店铺 ID∼10⁷multi-hot∼10³
访问的类别 ID∼10⁴multi-hot∼10²
广告特征商品 ID∼10⁷one-hot1
店铺 ID∼10⁵one-hot1
类别 ID∼10⁴one-hot1
上下文特征pid 用户 ID∼10one-hot1
时间∼10one-hot1

#4.2 Base Model (Embedding & MLP)

DIN 网络结构

图 2. 网络结构。左: base model (Embedding&MLP),行为 embedding 经 sum pooling 压成定长向量。右: DIN,引入 local activation unit,对每个历史行为算一个相对候选广告的 activation weight,做加权 sum pooling; 其余结构与 base model 相同。

多数主流深度 CTR 模型 (LR、Wide&Deep、PNN、DeepFM) 都共享同一个 base model 骨架,由 Embedding、Pooling & Concat、MLP 三层组成。

Embedding 层: 把高维稀疏的 one/multi-hot 向量ti\mathbf{t}_i 映射成低维稠密 embedding。one-hot 得到单个 embedding 向量,multi-hot 得到一组 embedding 向量的列表。

Pooling 层与 Concat 层: 不同用户的行为数不同,导致 multi-hot 行为特征对应的 embedding 列表长度可变,而全连接网络只能吃定长输入。于是用 pooling 把列表压成定长向量:

ei=pooling(ei1,ei2,,eik)\mathbf{e}_i = \text{pooling}(\mathbf{e}_{i_1}, \mathbf{e}_{i_2}, \ldots, \mathbf{e}_{i_k})

最常用的是 sum poolingaverage pooling (逐元素求和/平均)。各组 pooling 后的向量再 concat 成样本的整体表示。

MLP: 拼接后的稠密向量经全连接层自动学习特征组合。

Loss: 目标函数为负对数似然:

L=1N(x,y)S(ylogp(x)+(1y)log(1p(x)))L = -\frac{1}{N}\sum_{(\mathbf{x},y)\in S}\big( y\log p(\mathbf{x}) + (1-y)\log(1 - p(\mathbf{x})) \big)

其中SS 是大小为NN 的训练集,y{0,1}y \in \{0,1\} 是标签,p(x)p(\mathbf{x}) 是 softmax 后的点击概率。

base model 的瓶颈就在 pooling: 它对所有历史行为一视同仁、与候选广告无关,把用户全部兴趣压进同一个定长向量。

#4.3 DIN 的结构

在所有特征中,用户行为特征对电商场景下的兴趣建模至关重要。base model 用 pooling 把用户行为 embedding 压成一个固定的表示向量 —— 无论候选广告是什么,这个向量都不变,这正是表达力的瓶颈。

是否有一种优雅的方式,用有限维度的单个向量表达用户的多样兴趣?

DIN 用 local activation unit 替换 sum pooling。给定用户UU 的行为 embedding 列表{e1,e2,,eH}\{e_1, e_2, \ldots, e_H\} 和广告AA 的 embeddingvAv_A,用户表示为加权求和:

vU(A)=j=1Ha(ej,vA)ej=j=1Hwjejv_U(A) = \sum_{j=1}^{H} a(e_j, v_A)\, e_j = \sum_{j=1}^{H} w_j\, e_j

其中a()a(\cdot) 是一个前馈网络 (activation unit),输出激活权重wjw_j。除了两个输入 embedding,a()a(\cdot) 还把它们的外积 (out product) 喂入后续网络,作为帮助相关性建模的显式知识。这样vU(A)v_U(A)随不同广告而变化 —— 本质是一种 weighted sum pooling

关键区别: 不做 softmax 归一化。传统注意力要求iwi=1\sum_i w_i = 1,但 DIN 放弃了这个约束,目的是保留用户兴趣的强度 (intensity).

例如某用户历史行为 90% 是衣服、10% 是电子产品。面对 T 恤和手机两个候选: T 恤会激活大部分衣服类行为,得到更大的wi\sum w_i (更高的兴趣强度),从而vUv_U 数值更大。传统注意力归一化后会丢失vUv_U 数值尺度上的分辨率,抹平这种强度差异.

论文也尝试过用 LSTM 按序列方式建模历史行为,但没有提升 —— 因为用户行为可能包含多个并发兴趣,兴趣间的快速跳变让序列显得很 “噪声”。如何用序列结构建模这种数据留作未来工作 (即后续的 DIEN).

#4.4 训练技巧

DIN 配套提出两个面向大规模深度网络的训练技巧。

#4.4.1 Mini-batch Aware 正则

工业数据含亿级稀疏特征 (如 goods_id 维度 6 亿)。不加正则时,用细粒度 goods_id 特征训练第一个 epoch 后就严重过拟合,AUC 快速下降。但直接上传统 L2 正则不现实 —— 每个 mini-batch 要对整个 embedding 字典 (绝大部分参数) 做更新,计算不可接受。

Mini-batch Aware (MBA) 正则: 只对每个 mini-batch 中出现的稀疏特征参数计算 L2 范数,让正则计算变得可行。实验 (表 4) 中 MBA 显著优于 Dropout / 频率过滤 / DiFacto 正则。

#4.4.2 Dice 激活函数

常用的 PReLU 以固定的 0 作为整流点 (rectified point):

f(s)=p(s)s+(1p(s))αs,p(s)=1(s>0)f(s) = p(s)\cdot s + (1 - p(s))\cdot \alpha s, \quad p(s) = \mathbb{1}(s > 0)

但当各层输入服从不同分布时,固定 0 整流点不合适。Dice (Data Adaptive Activation Function) 把整流点自适应地设为输入的均值,并平滑切换两个通道:

f(s)=p(s)s+(1p(s))αs,p(s)=11+esE[s]Var[s]+ϵf(s) = p(s)\cdot s + (1 - p(s))\cdot \alpha s, \quad p(s) = \frac{1}{1 + e^{-\frac{s - E[s]}{\sqrt{\text{Var}[s] + \epsilon}}}}

训练时E[s]E[s]Var[s]\text{Var}[s] 是 mini-batch 的均值/方差; 测试时用滑动平均;ϵ=108\epsilon = 10^{-8}。当E[s]=0E[s]=0Var[s]=0\text{Var}[s]=0 时 Dice 退化为 PReLU,故 Dice 是 PReLU 的泛化。

#3。实验

#3.1 评价指标: GAUC 与 RelaImpr

工业场景用用户加权 AUC (论文里仍简称 AUC,即 GAUC),衡量用户内 (intra-user) 排序好坏,与线上表现更相关:

AUC=i=1n#impressioni×AUCii=1n#impressioni\text{AUC} = \frac{\sum_{i=1}^{n} \#\text{impression}_i \times \text{AUC}_i}{\sum_{i=1}^{n} \#\text{impression}_i}

并用 RelaImpr 衡量相对提升 (随机猜 AUC=0.5):

RelaImpr=(AUC(measured)0.5AUC(base)0.51)×100%\text{RelaImpr} = \left( \frac{\text{AUC}(\text{measured}) - 0.5}{\text{AUC}(\text{base}) - 0.5} - 1 \right) \times 100\%

#3.2 公开数据集结果

表 3。Amazon(Electronics) / MovieLens AUC (重复 5 次,base 为 BaseModel):

ModelMovieLens AUCRelaImprAmazon AUCRelaImpr
LR0.7263−1.61%0.7742−24.34%
BaseModel0.73000.00%0.86240.00%
Wide&Deep0.7304+0.17%0.8637+0.36%
PNN0.7321+0.91%0.8679+1.52%
DeepFM0.7324+1.04%0.8683+1.63%
DIN0.7337+1.61%0.8818+5.35%
DIN with Dice0.7348+2.09%0.8871+6.82%

深度模型全面碾压 LR; 在用户行为丰富的 Amazon 上 DIN 优势尤其明显 —— 归功于 local activation unit 对相关兴趣的 soft-search; Dice 进一步提升.

#3.3 工业数据集结果

表 5。阿里数据集全特征 AUC (base 为 BaseModel):

ModelAUCRelaImpr
LR0.5738−23.92%
BaseModel0.59700.00%
Wide&Deep0.5977+0.72%
PNN0.5983+1.34%
DeepFM0.5993+2.37%
DIN0.6029+6.08%
DIN with MBA Reg。0.6060+9.28%
DIN with Dice0.6044+7.63%
DIN with MBA Reg。and Dice0.6083+11.65%

同样激活函数与正则下,DIN 较 BaseModel 有 +0.0059 绝对 AUC / +6.08% RelaImpr; 叠加 MBA 正则与 Dice 后达 +11.65%.

#3.4 正则消融 (表 4,Alibaba)

用 goods_id 细粒度特征时,无正则第一个 epoch 后即严重过拟合。各正则中 MBA 最优 (RelaImpr +9.68%),优于 Dropout (+3.19%)、Filter (+4.57%)、DiFacto (+1.49%)。且带 goods_id 的模型整体 AUC 更高 —— 细粒度特征信息更丰富.

#3.5 在线 A/B (2017-05 ~ 2017-06,阿里展示广告)

指标CTRRPM
提升+10.0%+3.8%

近一个月的线上 A/B 中,带 MBA 正则与 Dice 的 DIN 较上一版模型 CTR +10.0%、RPM +3.8%,现已全量上线。为加速在线服务还部署了若干工程技巧 (GPU 加速、请求批处理等).

#4。总结

DIN 奠定了 “target-aware 注意力建模用户兴趣” 的范式:

  • local activation unit: 对历史行为做与候选广告相关的加权求和,用户表示随广告动态变化,突破定长向量瓶颈; 且不做 softmax 归一化以保留兴趣强度.
  • 两个工程技巧: MBA 正则让亿级稀疏特征的正则可行; Dice 自适应整流点泛化 PReLU.

DIN 是这条兴趣建模主线的源头,后续工作沿不同方向延伸:

论文在 DIN 基础上解决的问题
DIN (KDD’18)target-aware 注意力,突破定长向量
DIEN (AAAI’19)行为≠兴趣、兴趣随时间演化 (GRU + AUGRU)
SIM (CIKM’20)终身超长序列 (检索式 GSU+ESU)

#参考资料

  • Deep Interest Network for Click-Through Rate Prediction (arXiv:1706.06978,KDD’18)
  • DIEN: Deep Interest Evolution Network (AAAI’19)
  • SIM: Search-based Interest Model (CIKM’20)