[paper阅读] 点击率预测中的深度兴趣网络-2

上周介绍了DIN (Deep Interest Network) 的简介及背景部分, 这周咱们继续相关工作以及模型的具体细节.

相关工作

点击率预测模型的结构已经从浅层模型慢慢进化到了深层次模型. 同时, 点击率模型中使用的样本数和特征的维度数也变得越来越庞大. 为了更好地提取出特征的关系以提高性能, 不少的工作也开始聚焦于模型结构的设计.

在之前的工作中, 为了避免语言模型中的维度问题, NNLM[1] 学习每个词语的分布表示. 该方法一般被称为嵌入, 推动了许多需要处理大型稀疏输入的自然语言模型和点击率预测模型.

LS-PLM [2] 和FM [3] 模型可以看作是只有一个隐层的网络分类, 先在稀疏的输入上使用嵌入层, 然后获得针对目标训练 (获取特征之间的组合关系) 而特别设计的转换函数.

Deep Crossing[4] /Wide&Deep学习[5] 以及YouTube推荐点击率模型[6] 通过使用复杂的多层感知机网络替换转换函数对LS-PLMFM进行了拓展, 极大地提高了模型的能力. PNN[7] 尝试在嵌入层之后加入一个乘积层来获得高阶的特征交互. DeepFM[8] 引入了一个因子分解机作为 Wide&Deep [5] 中的 Wide 模块, 而不需要进行特征工程. 整体说来, 这些方法都有着相似的模型结构: 一个嵌入层 (用于学习稀疏特征的紧密表示) 和 多层感知机 (用于自动学习特征之间的组合关系) 的组合. 这一类的点击率预测模型极大地减少了人工的特征工程工作. 本文中的基础模型遵循了这种模型结构. 但是, 在有着丰富用户行为的应用中, 特征一般包含变长的id列表: 例如: 在YouTube [6] 推荐系统中检索的条目或者观看的视频. 这些模型通常会通过求和/均值池化策略将嵌入向量对应的列表转化到定长的向量中, 可能会造成信息的丢失. 而DIN 则通过自适应地学习给定广告相关的表示向量 来提高模型的表达能力.

注意力机制源于NMT (Neural Machine Translation, 神经机器翻译) 领域 [9]. NMT 获得所有标注的加权和来获得预期的标注, 只关注于与下一个目标词语生成相关的信息. 近期, Deep-Intent [11] 将注意力运用到了搜索广告的上下文中. 与NMT类似, 作者们使用 RNN 对文本进行建模, 然后学习到一个全局的隐含变量来帮助关注于每个查询中的关键词语. 结果表明: 注意力的使用可以帮助获取查询或者广告的主要意图. DIN 设计了一个局部的激活单元来 soft 检索到相关的用户行为, 然后采用了一个加权求和池化来获得用户针对给定广告的 用户兴趣的自适应表示. 与DeepIntent 不同 (广告和用户之间没有交互), 用户表示向量会随着不同的广告而变化.

Zhou等人公开了源码, 并且进一步展示了如何通过提出能够用于训练数以亿计参数的大型深度网络技术, 将DIN成功运用到世界上最大的广告系统之一.

背景

在电商网站, 例如, 阿里巴巴中, 广告是非常自然的产品. 下文中, 如果没有特殊说明, 将会用广告替代产品. 图1中简单展示了阿里巴巴广告展示系统的运作流程, 主要由两个步骤组成:

  • 匹配阶段- 基于协同过滤之类的方法生成与访问用户相关的候选广告列表
  • 排序阶段- 预测每个给定广告的点击率, 然后选在排在前面的广告


图1: 阿里巴巴中广告展示系统的运作流程, 用户行为数据发挥着重要作用

每一天, 数以亿计的用户访问电商网站, 提供了大量的用户行为, 可以在构建匹配和排序模型中发挥非常重要的作用. 值得注意的是: 有着丰富历史行为的用户兴趣非常多样. 例如, 一位年轻的近期可能会浏览: 羊毛衫/T恤/耳环/手提包/羽毛手袋以及孩子的袄子等. 这些行为数据为我们提供了她购物兴趣的信息. 当她访问电商网站时, 系统会给她展示一个合适的广告, 例如, 新的手袋. 很明显, 展示的广告只匹配或激活了这个目前的部分兴趣.

总结一下: 有着丰富行为的用户的兴趣是 多样的 , 而给定特定的广告会 局部激活 某些兴趣. 后面会展示 利用这些特征对于构建点击率预测模型来说发挥着重要的作用.

深度兴趣网络

与自发的搜索不同, 在广告展示系统中, 用户并没有显式表达意图. 在构建点击率预测模型时, 需要高效的方法来从丰富的历史行为提取出用户兴趣. 描述用户和广告的特征都是广告系统的点击率模型中非常基础的元素. 合理地利用这些特征, 从这些特征中挖掘信息也是至关重要的.

特征表示

产业中的点击率预测任务中的数据大部分都是一个多个组范畴的形式, 例如: [时间=周五, 性别=女,访问过的分类={包, 书籍}, 广告分类={书籍}], 一般会通过编码转化为一个高维/稀疏的二进制特征 [4, 5, 11] . 数学上说来, 第i个特征组的编码向量可以形式化为: $t_i \in R^{K_i}$ . $K_i$ 表示特征组 i 的维度数, 也就是说: 特征组 i 包含 $K_i$ 个唯一的id. $t_i[j]$ 是 $t_i$ 的第j个元素, 并且 $t_i[j]\in {0,1}$, $\sum_{j=1}^{K_i}t_i[j] = k$. $k=1$ 的向量 $t_i$ 指的是 one-hot 编码, 而 $k\gt 1$ 指的是multi-hot 编码. 然后一个实例可以以成组的方式表示为: $x=[t_1^T, t_2^T, …, t_M^T]^T$, 其中 $M$ 是特征组的数目. $\sum_{i=1}^M K_i = K$, $K$ 为整个特征空间的维度. 通过这种方式, 上面提到的4个特征组的实例可以表示为:

$\underbrace{[0,0,0,0,1,0,0,0]}{时间=周五} \qquad \underbrace{[0,1]}{性别=女} \qquad \underbrace{[0,..,1,..,1,…0]}{访问过的分类={包, 书籍}} \qquad \underbrace{[0,..,1,..,0]}{广告分类={书籍}}$

系统中使用到的完整特征集合见表1. 主要由四个类别构成, 其中用户行为特征是非常典型的multi-hot编码向量, 包含用户兴趣的丰富信息. 注意: 在本文的设定中, 没有组合特征, 通过深度神经网络来得到特征之间的交互.

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

类别 特征组 维度 类型 每个实例非0id
用户画像特征 性别 2 one-hot 1
年龄段 大约10 one-hot 1
... ... ... ...
用户行为特征 访问过的商品id 大约$10^9$ multi-hot 大约$10^3$
访问过的店铺id 大约$10^7$ multi-hot 大约$10^3$
访问过的分类id 大约$10^4$ multi-hot 大约$10^2$
广告特征 商品id 大约$10^7$ one-hot 1
店铺id 大约$10^5$ one-hot 1
分类id 大约$10^4$ one-hot 1
... ... ... ...
上下文特征 pid 大约10 one-hot 1
时间 大约10 one-hot 1
... ... ... ...

基础模型(嵌入&多层感知机)

目前大部分比较流行的模型结构都有着相似的嵌入&多层感知机范式, 在这里, 称之为基础模型, 如图2的左边所示. 它由以下几个部分构成:

  • 嵌入层: 由于输入都是一些高维的二进制向量, 需要使用嵌入层将它们转化为低维的紧密表示. 对于第i个特征组 $t_i$ , 使用 $W^i=[w_i^i,…,w_j^i, …, w_{K_i}^i] \in \mathcal{R} ^{D\times K_i}$ 表示第 i 个嵌入字典, 其中 $w_j^i\in R^D$ 是一个维度为 $D$ 的嵌入向量. 嵌入操作遵循表的查询机制, 如图2所示.
    • 如果 $t_i$ 是第 j个元素 $t_i[j]=1$ 的one-hot向量, $t_i$ 的嵌入表示为一个单一的嵌入向量: $e_i = w_j^i$
    • 如果 $t_i$ 是一个 $t_i[j] = 1 \quad j\in {i_1, i_2, …. i_k}$ 的multi-hot向量, $t_i$ 的嵌入表示为一个嵌入向量的列表: ${e_{i_1}, e_{i_2}, … e_{i_k}}={w_{i_1}^i, w_{i_2}^u, … w_{i_k}^i}$

小米的理解: 特征组 $t_i$ 指的是 性别/年龄这些维度, $K_i$ 表示的维度数(2/10), 而 $D$ 则表示嵌入向量 $w_i^j$ 的维度数.

  • 池化层和连接层: 注意不同用户有数目不同的行为. 因此, 每个实例中multi-hot的行为特征向量 $t_i$ 中非0值的数目也会有所不同, 导致嵌入向量对应的列表长度也不相同. 而全连接的网络只能处理定长的输入, 因此通常的操作 [5, 6] 是通过一个池化层将嵌入向量列表转化到一个定长的向量:
    $e_i = pooling(e_{i_1}, e_{i_2}, …e_{i_k})$ 公式1

    两个最常用的池化层为: 求和池化和均值池化, 对嵌入向量列表使用元素级别的求和/求均值操作.
    嵌入和池化层都以成组的方式进行, 将原始稀疏的特征映射到多个定长的表示向量中. 然后将所有向量联结在一起获得该实例的完整表示向量.


2: 网络结构. 左边部分展示了基础模型 (嵌入&多层感知机) 的网络. 分类id/店铺id以及商品id都属于某个商品, 因此被联结到一起来表示用户行为中访问过的一个商品. 而右边部分则是DIN模型. 引入了一个局部的激活单元, 可以根据给定候选广告的不同自适应地调整用户兴趣的表示.

  • 多层感知机: 给定连接好的紧密特征向量, 使用全连接层自动学习特征之间的组合. 最近也有一些研究[5,7,8]关注于设计多层感知机的结构方便更好地进行信息提取.
  • 损失函数: 基础模型中使用的目标函数为负对数似然函数, 定义如下:
    $L=-\frac{1}{N}\sum_{(x,y)\in S}(y\log p(x) + (1-y)\log(1-p(x)))$ 公式2

其中, $S$ 为大小为 $N$ 的训练集, 而 $x$为网络的输入, $y\in {0,1}$ 为标签, $p(x)$ 为softmax层之后的网络输入, 表示示例 $x$ 被点击的预测概率.

深度兴趣网络的结构

1中的所有特征中, 用户行为特征是非常重要的, 并且在电商应用场景下对用户兴趣的建模发挥着重要作用.

基础模型通过对用户行为特征组的所有嵌入向量进行池化得到用户兴趣的定长向量表示, 如公式1所示. 对于给定用户而言, 无论候选广告是啥, 表示向量都是一致的. 在这种方法中, 有限维度的用户表示向量将会成为表达用户多样兴趣的瓶颈. 为了突破这个瓶颈, 一个简单的方法是拓展嵌入向量的维度, 而这将会极大地增加学习参数的大小. 而且在有限的训练数据下可能会出现过拟合现象, 并且也会增加计算和存储的负担, 而这在产业在线系统中可能是无法容忍的.

那么是否有一个优雅的方式 在有限的维度下 使用一个 向量 来表示用户多样的兴趣呢? 用户兴趣的局部激活特征给Zhou等人提供了灵感来设计一个名为深度兴趣网络(DIN) 的新颖模型. 回顾一下前面提到的, 访问电商网站的年轻妈妈, 她觉得展示的新手包非常可爱, 然后进行了点击. 让我们来看一下点击行为的驱动力: 展示的广告 命中了 通过soft检索出来的历史行为 所反映出来的兴趣, 发现她最近浏览了相似的手提包和羽毛手包. 换句话说, 与展示广告相关的行为对点击行为有极大的推动作用. DIN通过关注 给定广告激活的局部性趣表示 来模拟这个流程. 没有使用 相同向量表示用户所有多样兴趣, DIN通过考虑与候选广告相关的历史行为来自适应地计算用户兴趣的向量表示. 随着广告的不同, 表示向量也会有所不同.

2的右边部分展示了DIN的架构. 与基础模型相比, 在保持其它结构相同的前提下, DIN引入了一个新颖的/局部激活单元. 具体地, 激活单元会运用于用户的行为特征上, 给定一个候选广告 A时, 用作一个加权求和的池化策略来自适应地计算用户表示 $v_U$, 计算方式如下:

$v_U(A)=f(v_A, e_1, e_2, .., e_H) = \sum_{j=1}^H a(e_j, v_A)e_j = \sum_{j=1}^H w_je_j$ 公式3

其中, ${e_1,e_2,…,e_H}$ 为用户 $U$ 长度为 $H$ 的行为嵌入向量, $v_A$ 为广告 A 的嵌入向量. 通过这种方式, $v_U(A)$ 会根据不同的广告进行变化, $a(\cdot)$ 是一个前馈网络, 输出为激活权重, 具体如图2所示. 除了两个输入嵌入向量, $a(\cdot)$ 会增加了它们的外积输入到之后的网络中, 可以帮助提高相关性建模.

公式3中的局部激活单元与NMT任务[9]中提出的注意力方法有着相似的动机. 然而, 与传统的注意力方法不一样, 为了保留用户兴趣的强度, 公式3放松了 $\sum_i w_i = 1$ 的限制. 也就是说: 不再对 $a(\cdot)$ 的输出进行 softmax 的标准化. 相反, 在一定程度上, $\sum_i$ 的值被看作是激活的用户兴趣的强度估计. 例如, 如果一个用户的历史行为包含 90% 的服装 和 10% 的电子产品. 给定 T恤 和 收集, T恤 会激活属于服装的大部分历史行为, 相比较于收集而言, 可能会获得更大的 $v_U$ 值(更高的兴趣强度). **由于对 $a(\cdot)$ 输出的标准化, 传统的注意力方法会丢失 $v_U$ 数值范围的信息.

之前Zhou等人也尝试过使用LSTM以序列的方式对用户的历史行为数据进行建模, 但是结果并没有提高. 与NLP任务中 文本有语法限制不同, 用户历史行为的序列可能包含着多个同步的兴趣. 在这些兴趣上的快速跳过和突然结束都可能会造成用户行为序列数据看起来包含噪音. 一个可能的方案是: 设计特殊的结构 以序列的方式 对这些数据进行建模. 这个可以之后再讨论.

训练方法

在阿里巴巴的广告系统中, 商品和用户的数目都是数以亿计的. 在实践中, 使用大型稀疏的输入特征训练产业深度网络是非常具有挑战的. 在论文中, Zhou等人介绍了两个重要的方法 (在实践中已经被证明是有效的).

mini-batch 相关的正则化

在训练产业网络的过程中, 过拟合是一个至关重要的挑战. 举个例子, 增加了 细粒度的特征 , 例如, 大概6亿维度的商品id特征 (和表1中描述的一样, 包括用户访问过的商品id 以及 广告的 商品 id), 在没有正则化的训练过程中, 第一轮迭代之后 模型的性能会急剧下降,如图 4 中深绿色的线所示. 直接在 有着稀疏输入 和 数以亿计 参数 的训练网络中 使用传统 正则化方法 (例如 $l_1$ 和 $l_2$ 正则) 是不现实的. 以 $l_2$ 正则为例: 在不使用正则的情况下, 在 基于 SGD 优化方法的场景中, 只需要更新那些在每个 mini-batch 中出现的非 0 稀疏特征 的参数. 但是, 在加入了 $l_2$ 正则之后, 需要基于每个 mini-batch 对整个参数计算 $L2$ 范数, 这将导致极其严重的计算压力, 并且当参数扩展到数以亿计时, 这些计算都是无法接受的.

在论文中, Zhou等人引入了一个高效的 mini-batch相关的正则项, 只会计算 出现在每个 mini-batch 中稀疏特征 参数的 $L2$ 范数, 使得计算变得可能. 实际上, 是嵌入词典组成了大部分点击率网络中的参数, 从而引发了繁重计算的问题. 假设 $W \in \mathcal{R} ^{D\times K}$ 表示整个嵌入字典的参数, 而 $D$ 为嵌入向量的维度, $K$ 为特征空间的维度. 基于样本对 $W$ 进行 $l_2$ 正则拓展如下:

$L_2(W) = {||W||}2^2 = \sum{j=1}^K {||w_j||}^2_2 = \sum_{(x,y)\in S}\sum_{j=1}^K \frac{I(x_j \ne 0)}{n_j} {||w_j||}^2_2$ 公式 4

其中, $w_j \in \mathcal{R}^D$ 为都 $j$ 个嵌入向量, $I(x_j \ne 0)$ 表示实例x 是否有特征id j, 而 $n_j$ 表示特征id j 出现在所有样本中的次数. 在mini-batch 相关的方式下, 公式4 可以转化为:

$L_2(W) = \sum_{j=1}^K \sum_{m=1}^B \sum_{(x,y)\in B_m} \frac{I(x_j \ne 0)}{n_j} {||w_j||}^2_2$ 公式 5

其中, $B$ 表示 mini-batch的数目, $B_m$ 表示第mmini-batch. 使得 $\alpha_{mj}=\max_{(x,y)\in B_m} I(x_j \ne 0)$ 表示在mini-batch $B_m$ 中至少有一个实例有特征id j. 公式5可以表示为:
$L_2(W)\approx \sum_{j=1}^K\sum_{m=1}^B\frac{\alpha_{mj}}{n_j} {||w_j||}^2_2$ 公式6

通过这种方式, 可以得到一个mini-batch相关的 $l_2$ 正则的近似版本. 对于第mmini-batch, 针对特征 j嵌入权重的梯度为:

$w_j\leftarrow w_j – \eta [\frac{1}{|B_m|}\sum_{(x,y)\in B_m} \frac{\delta L(p(x),y)}{\delta w_j} + \lambda \frac{\alpha_{mj}}{n_j}w_j]$ 公式7

其中, 只有在第mmini-batch中出现的特征参数才会出参与到正则化的计算中.

数据自适应激活函数


3 PReLUDice的控制函数

一般会使用PReLU作为激活函数[12]:

公式8

其中, $s$ 是激活函数 $f(\cdot) $ 输入的一个维度, $p(s)=I(s\gt 0)$ 是一个控制 $f(s)$ 在 $f(s)=s$ 和 $f(s)=\alpha s$ 两个选项之间切换的标识函数. 第二个选项中的 $\alpha$ 是一个学习参数. 在这里, 我们将 $p(s)$ 成为控制函数. 图3的左边部分标识了 PReLU的控制函数. PReLU0值有着严格的修正点. 而当每一层的输入符合不同的分布时, 这可能是不适用的. 考虑到这个, Zhou等人设计了一个新颖的数据自适应激活函数 Dice:

$f(s)=p(s)\cdot s + (1-p(s))\cdot \alpha s, p(s)=\frac{1}{1+e^{-\frac{s-E[s]}{\sqrt{Var[s]+\epsilon}}}}$ 公式9

该控制函数的图如图3的右侧所示. 在训练阶段, $E[s]$ 和 $Var[s]$ 为每个mini-batch中输入的均值和方差. 而在测试阶段, 则通过在数据之上计算平均的 $E[s]$ 和 $Var[s]$ 得到最终的 $E[s]$ 和 $Var[s]$. $\epsilon$ 为一个非常小的常数, 在论文中被设置为 $10^-8$.

Dice可以被看作是PReLU的泛化. Dice的关键思想是根据输入数据的分布来自适应地调整修正值, 而修正值为输入的均值. 此外, Dice 可以平滑地控制两个选项之间的切换. 当 $E{s}=0$ 和 $Var[s]=0$ 时, Dice就会细化为 PReLU.

本周主要介绍了DIN的相关工作, 背景以及模型的细节部分/训练方法等. 下周将会讲解下代码和实验部分.

参考文献

[1] Ducharme Réjean Bengio Yoshua et al. 2003. A neural probabilistic language model. Journal of Machine Learning Research (2003),1137–1155.
[2] Kun Gai, Xiaoqiang Zhu, et al. 2017 . Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction. arXiv preprint arXiv:1704.05194 (2017).
[3] Steffen Rendle. 2010. Factorization machines. In Proceedings of the 10th International Conference on Data Mining.IEEE,995–1000.
[4] Ying Shan,T Ryan Hoens, Jian Jiao, Haijing Wang, Dong Yu, and JC Mao. Deep Crossing: Web-scale modeling without manually crafted combinatorial features.
[5] Cheng H. et al. 2016. Wide&deep learning for recommender systems. In Proceedings of the 1st Workshop on Deep Learning for Recommender Systems.ACM.
[6] Paul Covington, Jay Adams, and Emre Sargin. 2016. Deep neural networks for youtube recommendations. In Proceedings of the 10th ACM Conference on Recommender Systems.ACM,191–198.
[7] Qu Y. et al. 2016. Product-Based Neural Networks for User Response Prediction. In Proceedings of the 16th International Conference on Data Mining.
[8] Huifeng Guo, Ruiming Tang,et al. 2017. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction. In Proceedings of the 26th International Joint Conference on Artificial Intelligence.1725–1731.
[9] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. 2015. Neural Machine Translation by Jointly Learning to Alignand Translate. In Proceedings of the 3rd International Conference on Learning Representations.
[10] Shuangfei Zhai, Keng-hao Chang, Ruofei Zhang, and Zhongfei Mark Zhang. 2016. Deep intent: Learning attentions for online advertising with recurrent neural networks.InProceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.ACM,1295–1304.
[11] H. Brendan Mcmahan, H. Brendan Holt, et al. 2014. Ad Click Prediction: a View from the Trenches. In Proceedings of the 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.1222–1230.
[12] Kaiming He, Xiangyu Zhang,Shaoqing Ren, and Jian Sun. 2015. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In Proceedings of the IEEE International Conference on Computer Vision. 1026–1034.

打赏

mickey

记录生活,写给几十年后的自己。

发表评论

电子邮件地址不会被公开。 必填项已用*标注