2.Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features论文核心解读以及代码实现

一、背景

微软于2016年提出的Deep Crossing可以说是深度学习CTR模型的最典型和基础性的模型。它涵盖了深度CTR模型最典型的要素,即通过加入embedding层将稀疏特征转化为低维稠密特征,用stacking layer,或者叫做concat layer将分段的特征向量连接起来,再通过多层神经网络完成特征的组合、转换,最终用scoring layer完成CTR的计算。跟经典DNN有所不同的是,Deep crossing采用的multilayer perceptron是由残差网络组成的,这无疑得益于MSRA著名研究员何恺明提出的著名的152层ResNet。

特征工程是绕不开的话题,巧妙的特征组合也许能够为模型带来质的提升。但同时,特征工程耗费的资源也是相当可观的,对于后期模型特征的维护、模型线上部署不太友好。2016年,微软提出Deep Crossing模型,旨在解决特征工程中特征组合的难题,降低人力特征组合的时间开销,通过模型自动学习特征的组合方式,也能达到不错的效果,且在各种任务中表现出较好的稳定性。

论文:[Deep Crossing] Deep Crossing - Web-Scale Modeling without Manually Crafted Combinatorial Features (Microsoft 2016)

二、应用场景

Deep Crossing模型的应用场景是微软的搜索引擎Bing中的搜索广告的推荐场景,即文章提到的Sponsored search(赞助搜索)。当用户在搜索引擎中输入搜索词时,除了返回对应的搜索结果,还会有与搜索词相关的广告。这与之前单纯的电商场景不同,因为有搜索的关键词,那么推送给用户的广告将更为精确。如何提高广告的点击率以及转化率,这是Deep Crossing模型的优化目标。

三、特征模型

针对特定的应用背景,微软使用的特征如下:

Query(搜索):用户搜索的关键词;
Keyword(广告关键词):广告商对自己的产品广告打的标签,用于匹配用户的搜索词;
Title(标题):广告的标题;
Landing Page(落地网页):点击广告后跳转的网页;
Match Type(匹配类型):广告商可选择的关键字与用户查询的匹配程度,通常有四种:精确匹配、短语匹配、宽泛匹配和上下文相关匹配;
Campaign(广告计划):广告商投放的计划;
Imression(曝光样例):记录了该广告实际曝光场景的相关信息;
Click(点击样例):记录了该广告实际点击场景的相关信息;
Click Through Rate(点击率):广告的历史点击率
click prediction(预估点击率):另一个CTR模型的预估值;

文章给出了如下一个单独特征类型以及维度的例子:

在这里插入图片描述

对于搜索词、关键词、文本则是一个文本信息,关于维度信息,在2013年微软提出DSSM模型的论文有所提及。MatchType对应着四个匹配的类型,为分类输入特征。CampaignID使用one-hot编码进行表示。CampaignIDCount是数值特征(计数型特征),存储每个活动的统计数据,如点击率、预估点击率等。所有引入的特征都是稀疏特征,除了计数特征。

四、DeepCrossing模型结构

在这里插入图片描述
整个模型包含四种结构:Embedding,Stacking,Residual Unit,Scoring Layer。
本文中的模型用于CTR预估,因此Scoring Layer用sigmoid,使用了log loss,但在实际中也能定义为 softmax 或其他函数(比如对于多分类,Scoring Layer用softmax,loss用交叉熵)。论文中的目标函数为(Pi是 Scoring 层一个节点的输出):
在这里插入图片描述
4.1 Embedding and Stacking Layers
在这里插入图片描述
Embedding的主要目的是将高维稀疏特征转化为低维稠密特征,定义公式如上所示,其中 XIj 代表输入的第 j 个特征Field,并且已经过one-hot编码表示,Wb 分别表示对应的模型参数。与别的论文中介绍的Embedding过程不同的是,DeepCrossing加上了偏置项 b 。公式中的 max 操作等价于使用 relu 激活函数。

尽管可以通过分Field的操作,减少Embedding层的参数量,但是由于某些 高基数特征 的存在,如paper中提到的CampaignID,其对应的 Wj 仍然十分庞大。为此作者提出,针对这些高基数特征构造衍生特征,具体操作如下。根据CampaignID的历史点击率从高到低选择Top1000个,编号从0到999,将剩余的ID统一编号为1000。同时构建其衍生特征,将所有ID对应的历史点击率组合成1001维的稠密矩阵,各个元素分别为对应ID的历史CTR,最后一个元素为剩余ID的平均CTR。通过降维引入衍生特征的方式,可以有效的减少高基数特征带来的参数量剧增问题。

经过Embedding之后,在stacking层中,直接对所有的 XOj 进行拼接,把所有特征堆叠成一个向量,即为如下向量:
在这里插入图片描述

作者将特征embedding为256维,但是对于本身维度低于256的特征Field,无需进行Embedding,直接送入Stacking层,如上图中的 Feature#2 所示。

4.2 Residual Unit(残差网络结构如下)
残差层由残差单元(the Residual Unit)构成,残差单元如下,(没有使用卷积层,文中提到这是第一次残差单元被用于图像识别之外)。多个残差单元层是MLP的具体实现,该层通过多个残差单元,对特征向量各个维度进行交叉组合,使模型获得了更多的非线性特征和组合特征信息,进而提高了模型的表达能力。

在这里插入图片描述
在这里插入图片描述
将 XI 移项到等式左侧,可以看出 F 函数拟合的是输入与输出之间的残差。对输入进行全连接变换之后,经过 relu 激活函数送入第二个全连接层,将输出结果与原始输入进行 element-wise add 操作,再经过 relu 激活输出。有分析说明,残差结构能更敏感的捕获输入输出之间的信息差。

作者通过各种类型各种大小的实验发现,DeepCrossing具有很好的鲁棒性,推测可能是因为残差结构能起到类似于正则的效果,但是具体原因是如何的并未明确指出

五、Early Crossing vs. Late Crossing

在paper中,作者针对特征交叉的时间点先后的问题进行试验对比。在DeepCrossing中,特征是在Embedding之后就开始进行交叉,但是有一些模型如DSSM,是在各类特征单独处理完成之后再进行交叉计算,这类模型的结构如下所示:

在这里插入图片描述
文中提到,DSSM更擅长文本处理,设计文本处理相关实验,DeepCrossing比DSSM表现更优异。作者认为,DeepCrossing表现优异主要来源于:1)残差结构;2)及早的特征交叉处理;

六、性能分析

6.1 文本输入
在这里插入图片描述
6.2 其他对比
1)衍生特征Counting Feature的重要性比较

在前面讨论过,为了对高基数特征进行降维处理,引入了统计类衍生特征(称之为Counting Feature)。对比此类特征对于模型的影响,从实验结果可以看出衍生特征能够带来较大提升
在这里插入图片描述
2)与生产环境模型Production进行比较
使用Production训练特征的子集,使用22亿条数据进行训练。最终DeepCrossing表现超过了Production。
在这里插入图片描述

七、代码实现(出自某位大佬)

github地址:https://github.com/ZiyaoGeng/Recommender-System-with-TF2.0

八、总结

文章发布到现在已有4年,提出的模型对现在来说已经不大新奇,但是从历史的角度该模型的出现是有深刻意义的。Deep Crossing模型可以通过调整神经网络的深度进行特征之间的“深度交叉”。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值