深度兴趣模型DIN在点击率预估中的应用

深度兴趣模型DIN在点击率预估中的应用

Guorui Zhou, Chengru Song, Xiaoqiang Zhu
Xiao Ma, Yanghui Yan, Xingya Dai
Han Zhu, Junqi Jin, Han Li
Kun Gai
Alibaba Inc.
{guorui.xgr, chengru.scr, xiaoqiang.zxq}@alibaba-inc.com
{maxiao.ma, yanghui.yyh, xingya.dxy}@alibaba-inc.com
{zhuhan.zh, junqi.jjq, lihan.hl}@alibaba-inc.com
[email protected]
June 26, 2017

摘要

在电商领域,通过从丰富的行为数据当中更好地挖掘用户的兴趣,对在线广告系统建立点击预估(CTR)模型非常重要。用户的行为数据有两个关键的特点:i)多样性(diversity)。在浏览电商网站的时候,用户会对不同种类的商品感兴趣。ii)局部激活性(local activation)。一个用户是否点击一个商品,只依赖于他一部分的历史行为。然而,大部分传统的CTR模型都缺乏捕捉行为数据中的这两种结构特点。在本论文中,我们提出一个新模型,深度兴趣网络(Deep Interest Network, DIN),这个新模型在阿里巴巴的广告系统中发展出来,并部署在系统中。DIN模型通过一个兴趣分布体现出用户多样化的兴趣,同时设计一个attention-like的网络结构,能根据不同的候选广告,去局部激活跟这些候选相关的兴趣点。这个模型的效果显著超过了传统的模型。业界的大规模稀疏样本在训练深度网络的时候往往会遇到过拟合的问题。我们认真地研究了这个问题并且提出了有用的自适应正则化技术。

1 介绍

广告业务每年给阿里巴巴带来数十亿美元收入。在CPC(cost-per-click,每点击成本)广告系统中,广告是按照eCPM(efective cost per mille)来排序的,这是竞价广告和CTR的结果。因此,点击率预估模型的效果直接影响到最终的收入,所以对广告系统来说很关键。深度学习在图像识别,计算机视觉,和自然语言处理等领域取了成功,受此影响,许多基于深度学习的方法也被提出来用于提高点击率预估的准确度。这些方法通常的做法是,首先在输入层之上用一个embedding层,把原始的大规模稀疏的id特征映射到distributed representations,然后加上全连接层(也就是多层感知机,MLPs),用这样的网络结果去自动学习出特征之间的非线性关系。相对逻辑回归模型来说,MLPs 可以减少很多业界里耗时耗力的特征工程。MLPs现在也成为了点击预估问题中的流行的模型结构。然而,面对丰富的互联网级别的用户行为数据,比如电商的广告和推荐系统的行为数据,这些MLPs模型往往缺乏深度理解和挖掘行为数据当中的特定
的结构,所以留下了提升空间。

对阿里巴巴的广告系统中的用户行为数据结构,可以总结为两点:

  • 多样性。用户在电商网站通常会对多种商品感兴趣。比如一个年轻的妈妈,她会同时对T恤,皮包,鞋,耳环和儿童外套感兴趣。
  • 局部激活。正是由于用户兴趣的多样性,每一次的点击只与用户过去的一部分历史有关系。例如,一个游泳爱好者点击了推荐给她的护目镜,主要是由于她购买过潜水服,而不是由于她上周买的一些书籍。

在本论文中,我们提出一个新模型,深度兴趣网络(Deep Interest Network, DIN),是在阿里巴巴的广告推荐系统中研发并使用的模型。受机器翻译模型中的attention机制的启发,DIN也是用兴趣权重来表示用户兴趣的多样性,并设计了一个attention-like的神经网络根据候选广告去激活相关的兴趣。我们在section 6.1 中展示了这个过程。跟候选广告有更强相关性的行为会获得更高的attention值,从而更显著地影响预测结果。在阿里巴巴海量数据的CTR预测数据的实验中,证明了DIN模型的效果显著好于MLP,GAUC指标显著好于MLP.

对于大规模的稀疏输入数据,训练深度神经网络经常会出现过拟合问题。我们还用细粒度的用户行为特征(good_id)做了一个实验,去演示深度神经网络会很容易陷入过拟合并引起效果快速下降.在本论文中,我们仔细地研究了这个问题,并提出了一个很有用的自适应正则化技术,在我们的应用场景中能有效地提高网络收敛。

DIN是运行在多GPU分布式训练平台X-deep(XDL)上的,XDL支持模型并行和数据并行。为了能使用行为数据的兴趣结构特征,我们用了在[8]提到的一个普遍使用的特征技巧,去降低储存和计算成本。因为有了高性能和高适应性的XDL平台,我们的训练过程加快了10倍,并且提高了自动化调参的效率。

这篇文章的贡献可以总结为以下几点:

  • 我们研究和总结了在电商领域中互联网级别的用户行为数据中的两个关键的接管特点: 多样性和局部激活。
  • 我们提出了深度兴趣网络(DIN),它可以更好地捕捉到行为数据中特定的结构,从而提高模型的性能。
  • 我们提出了自适应正则化技术去克服用大规模稀疏输入数据训练深度神经网络中的过拟合问题,并且可以推广到业界类似的应用场景中。
  • 我们开发了一个多GPU分布式训练的平台XDL,它是一个可扩缩的高适应性的平台,能支持我们各种实验。

在本论文中,我们聚焦在电商领域的广告CTR预测。这里提到的方法都可以应用到类似的有大规模用户行为数据的场景中去,比如电商的个性化推荐,社交网络的信息流排序等。

本论文后面的内容安排如下,我们在Section2部分讨论相关的研究。Section3 回顾以下我们的广告展示系统,包括用户行为数据和特征表示。Section 4 讲述DIN模型的设计和自适应正则化技术。Section 5 简介我们成熟的XDL平台。Setion 6 展示实验结果和分析。最后,我们在Section 7 总结我们这篇论文。

2 相关研究

随着特征和样本的数量变得越来越大,CTR预估模型的结构也经历了从前到深的进化。随着特征表示的挖掘,模型结构的设计也越来越深入。

作为先驱之作,NNLM[9]提出学习文本词的distributed representation, 以避免语言模型中的维度灾难。 这个思想,我们称之为embedding, 启发了许多需要处理大规模稀疏输入的语言模型和CTR预估模型。

LS-PLM[8]和FM[10]模型可以看成是一种只有一层隐藏层的神经网络,首先对稀疏输入做embedding层,然后为输出加一个特定的转化函数,这样来捕捉特征之间的交叉关系。

Deep Crossing [1], Wide&Deep Learning [4] 和 the YouTube Recommendation CTR model [2],都是对LS-PLM和FM扩展,用复杂的MLP网络替代了转化函数。极大地提高了模型的性能。它们都采用了类似的网络结构,结构了embedding层(学习稀疏id特征的distributed representation)和MLPs(自动学习特征的交叉关系)。它们都采用了类似的模型结构,把embedding层(为了学习稀疏id特征的distributed representation)和MLPs(为了自动学习特征交叉关系)组合在一起。这一类的CTR预估模型很大程度上取代了人工的特征组合。我们的基础模型也是这一类的模型结构。然而,值得一提的是,在CTR预估里面,我们的行为数据中,特征往往包含multi-hot的稀疏id,比如YouTube推荐系统中的搜索条目和视频浏览历史。这些模型经常在embedding层之后加一层pooling层,用求和或者求平均的操作来获得一个固定维度的embedding向量。这就会导致信息的损失,不能完全体现用户行为数据的内在结构。

最开始用在神经机器翻译领域的Atention机制给了我们启发。在双向RNN机器翻译中,NMT对所有注释的加权求和来获得期望的注释,并且在产生下一个目标词的时候只关注跟这个目标词相关的信息。这启发了我们可以用attention-like的结构去更好地模型化用户的历史多样的兴趣。最近提出的DeepIntent [3]也是用了attention的技术去更好地模型化数据的内部结构,在竞价排名搜索中,学习到attention权重赋予不同的词,以此来获得更好的句子表达。然而,在query和document间并没有相互作用,也就是说,给定了模型,query和document表示是固定的。这个场景跟我们不一样,因为在广告展示系统中,DIN学习到的用户表示是随着不同的候选广告自适应地变化的。也就是说,DeepIntent虽然捕捉到数据的多样性结构,但是没有捕捉到数据的局部激活的属性,而DIN模型两者都捕捉到了。

3 系统回顾

深度兴趣模型DIN在点击率预估中的应用_第1张图片
DIN图1.PNG

图1展示了广告展示系统的大致场景。可以看到,在电商网页中,广告就是自然展示的商品。因此,在没有特别声明的时候,在后续文章中,我们提及商品的时候就是指广告。

当一个用户方位一个电商网页时,系统会 i)查询他的历史行为数据 ii)通过匹配模块产生候选广告 iii)通过排序模块预测每个广告的点击概率并选择可能吸引用户注意(点击)的合适广告 iiii) 展示广告之后记录用户的反应。 这是一个消费和用户行为数据产生的闭环。在阿里巴巴,电商网页每天有数以亿万计的用户访问,给我留下大量的真实数据。

深度兴趣模型DIN在点击率预估中的应用_第2张图片
DIN图2.PNG

3.1 用户行为数据的特性

表 1 是从我们线上采集回来的用户行为的一些例子。在我们的系统中的用户行为数据有两个显著的特点:

  • 多样性。用户喜欢不同类型的商品。
  • 局部激活。只有用户的一部分行为跟候选广告有关。

3.2 特征表示

我们的特征集是由稀疏id组成的,是传统的业界表示方法,像[1, 4, 5]这样。我们把它们分为四组,如表2所示。注意到我们的特征里面是没有交叉组合特征的。我们用深度网络去捕捉特征之间的交叉关系。

3.3 评估方法

AUC[12]是CTR预估领域经常用到的评估指标。在实践中,我们设计了一个新的评估指标,叫GAUC,是AUC的一个推广。GAUC是先对每个用户的样本子集计算AUC,然后取加权平均。这个权重可以是曝光量或者点击量。基于曝光量的GAUC按照以下计算:

实践证明,GAUC在广告展示场景更能反映算法的效果。广告展示场景中,CTR模型被用于为每个用户对候选广告进行排序,其效果是用排序列表的质量来衡量。就是说,一个用户特有的AUC。因此,这个方法可以去除用户偏差的影响,可以更准确地评估整体用户模型的表现。在我们生产系统的多年实践中,GAUC指标相对AUC来说更稳定可靠。

4 模型结构

不同于竞价搜索,广告展示系统的大部分用户都没有明确的目标。因此,我们的系统需要一个有效的流程从用户的历史行为数据中建立一个点击预估模型来提取用户的兴趣。

深度兴趣模型DIN在点击率预估中的应用_第3张图片
DIN图3.PNG

4.1 基础模型

沿用在 [1, 4, 2] 中介绍的流行的模型结构, 我们的基础模型按照以下两个步骤来构建:

  1. 把每个稀疏id特征转化成embedded向量
  2. 用MLPs拟合输出

注意到输入包括用户行为序列id, 所以,每个人的序列长度是不一致的。所以,我们加了一个pooling层(就是求和操作)来汇总行为序列,得到一个固定长度的向量。在图2中, 基础模型在实践中表现良好,作为在线广告展示系统的主策略模型。

然而,深究其中的pooling操作, 我们就会发现里面损失了很多信息。就是简单的pooling操作破坏了用户行为数据的内部结构。这启发了我们设计了更好的模型。

4.2 深度兴趣网络设计 DIN

在我们的广告展示场景中,我们希望我们的模型能基于用户的历史行为来真正揭示用户和候选广告之间的关系。

如上所讨论, 行为数据包括两个结构:多样性和局部激活。行为数据的多样性反映了用户的不同兴趣点。用户点击某个广告往往只来自于他的部分兴趣点。这跟attention的机制很像。在NMT任务中,假定每个词在一个句子中解码过程中的重要性是不同的。attention网络[7] (可以看作是一个特殊设计的pooling层) 学出赋给每个词的attention分值。换而言之,保留了数据的多样性结构。然而,在外面的应用场景中,又不能直接用一个attention层。用户兴趣的embedding向量对于不同的候选广告来说应该不一样,也就是说,它要有局部激活的结构。来看看如果没有局部激活结构会发生什么。我们现在已经有用户和广告的分布表示(distributed representation).对于同一个用户,是一个embedding空间中固定的一个点。这跟广告embedding 向量是一样的。假如我们用内积来计算用户和广告之间的关系,。如果 和都很高,那么用户跟 和都很相关。在这种计算方法下,任何一个位于 和的点的相关得分都会高。这就对学习用户和广告的分布表示向量(distributed representation vector)带来很强的约束。虽然可以通过提高向量空间的embedding的维度来满足约束,也许会奏效,但也会大幅度地增加模型的参数。

在这篇文章中,我们引入了一个新设计的网络, 叫DIN,它有数据的两种结构。 DIN 在图2中解释。 在数学中,用户的embedding向量是广告的embedding的向量的一个函数。也就是:

其中, 是行为id 的embedding, 比如商品id, 商店id,等等。是这些行为id的加权求和。表示,在候选广告是的情况下,行为id对用户整体兴趣embedding向量的贡献的attention分值。在我们的场景中, 是激活单元的输出(用g来表示),激活单元的输入是 和。

总之, DIN设计了激活单元来描述局部激活结构,用加权求和pooling来描述多样性结构。据我们所知, 在CTR预估领域中,DIN是第一个同时描述着两种结构的模型。

4.3 依赖数据的激活函数

PReLu[13] 是一个常用的激活函数,我们开始的时候是用它来做激活函数的。定义如下:

PReLu 在 很小的时候,作为Leak ReLU 去避免零梯度[14]。之前有研究表明,PReLU 在增加一点过拟合的风险下可以提高准确度。

然而, 在我们的实践中,在大规模稀疏输入id的情况下,学习这样工业规模的网络依然面临很多挑战。为了进一步改进收敛速率和模型的效果,我们设计了依赖数据的激活函数,我们叫它Dice:

在训练过程中的和是直接从每一个mini batch的数据中算出来的。

你可能感兴趣的:(深度兴趣模型DIN在点击率预估中的应用)