精通推荐算法4:经典DNN框架特征交叉模型 Deep Crossing(面试必备)

微软2016年提出的Deep Crossing模型奠定了深度学习精排模型的基本架构,具有十分重要的意义。它采用“Embedding + MLP”的结构,成为目前推荐算法的基本范式。通过深度神经网络,实现大规模特征自动组合,大大减少了对人工构造交叉组合特征的依赖和开销。同时将残差网络第一次落地到推荐算法中,优化深度学习反向传播梯度弥散和过拟合等问题。并且完整解决了特征工程、Embedding稀疏向量稠密化等各种关键问题。虽然发表距今已有很多年,但仍然是一个非常重要的模型。

Deep Crossing论文地址,微软,2016年,KDDicon-default.png?t=N7T8https://dl.acm.org/doi/abs/10.1145/2939672.2939704

1 Deep Crossing业务背景和特征体系

Deep Crossing是微软于2016年在 “Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features”[1]一文中提出,应用于其Bing搜索引擎的广告推荐中。用户输入搜索词后,搜索引擎在展示常规搜索结果时,会同时插入与搜索词相关的广告。广告主为广告的曝光、点击和转化付费,平台从而获得收益。在搜索引擎中,用户通过搜索词给出了自己的主动意图,所以与搜索词相关的广告通常都可以有不错的转化。谷歌、百度等搜索引擎行业的头部公司,其搜索广告业务均占有其公司总收入的很大比重。因此提升搜索广告的点击和转化,显然是一件非常重要且有意义的事情。

在传统机器学习算法中,我们一般需要搜集尽可能多的输入特征,从而对新的实例进行预测和分类。只使用原始特征,一般较难取的好的效果。在工业界和学术界,我们通常都需要花费很大一部分精力,对原始特征进行处理。一种重要的处理方法是,对多个原始特征进行交叉组合,然后将产出的新特征输入到机器学习模型中。特征交叉可以很好的提升模型表达能力,但如何做交叉一直是一个难题。Deep Crossing出现以前,大多数情况下还是通过手工构造交叉特征。在特征量大的场景下(比如搜索、推荐、广告),手工构造交叉特征,搜索空间十分大,成本会急剧上升。Deep Crossing创造性的提出用深度神经网络进行自动特征交叉,并在工业化场景下端到端完成了原始特征输入、Embedding降维、深度神经网络进行特征交叉、自动拟合目标等整个过程。

搜索广告场景主要包括用户侧特征、广告侧特征和上下文特征。目标是在指定的搜索词下,将最符合用户意图的广告展示给用户,从而提升用户体验和平台各项指标。使用的特征主要有:

  1. 搜索词(Query):用户在搜索框中输入的一段文本

  2.  广告关键词(Keyword):广告主标记的广告关键词,用于匹配用户的搜索词

  3. 广告标题(Title):广告的标题,也是一段文本

  4. 广告落地页(Landing page):用户点击广告后的跳转页面,一般也是广告主来提供

  5. 匹配类型(Match Type):广告关键词和用户搜索词的匹配类型,主要有完全匹配、短语匹配、宽泛匹配和上下文匹配。

  6. 广告计划(Campaign):广告的配置信息,比如广告预算、目标位置等

  7. 广告曝光(Impression):广告展示给用户的一次曝光实例,一般在运行时,和其他信息一起被日志系统记录下来。 

  8. 广告点击(Click):用户对广告的一次点击实例,一般也是在运行时,和其他信息一起被日志系统记录下来。

  9. 点击率(Click through rate):广告的总点击数,除以广告的总曝光数。也就是广告被点击的后验概率。它能很大程度上反应广告未来被点击的概率,是搜索推荐广告系统中十分重要的后验统计数据。

  10. 点击预估(Click Prediction):另一个模型对广告CTR的预估值

上述特征主要分为两大类:类别型特征和数值型特征。

  1. 类别型特征:又叫ID型特征,它们一般是可枚举的。比如上述特征中的搜索词、广告关键词、广告标题、广告落地页、匹配类型、广告计划等,都属于类别型特征。类别型特征可以通过独热(one-hot)或者多热(multi-hot)进行编码。但如果特征枚举值比较多,比如上述中的广告计划,其枚举值是百万量级,会极大的增加模型体积。Deep Crossing怎么解决这一问题的呢?它将广告计划ID,按照历史点击数从高到底排序,取前10000个,编号从0到9999。剩下的共享同一个ID,编号为10000。通过这种长尾共享同一个ID的方式,可以优化枚举值过多,带来的模型体积剧增问题。这应该算是最早的Group Embedding方案吧。类别型特征枚举值过多,是我们经常会碰到的难题。它会导致模型体积过大、特征Embedding不收敛等问题。

  2. 数值型特征:文中又叫计数型特征(counting feature),它们一般是连续数值,不可枚举。比如上述特征中的点击率、点击预估等,都属于数值型特征。数值型特征一般分为两种处理方法。一种是直接将其特征值,拼接到堆叠层(Stacking Layer)的特征向量中。Deep Crossing等早期的模型一般采用这种方法。实现比较简单,但泛化能力不足,容易受异常值干扰。另一种是将数值型特征进行离散化,构建为可枚举的ID,然后再进行Embedding,最后和其他特征一起拼接到堆叠层中。这种方法实现复杂一些,但泛化能力强,抗噪能力也不错,还能为模型添加一定的非线性能力。目前大多数精排模型都采用这种方法。

2 Deep Crossing网络结构

今天回过头来看,Deep Crossing是一个相当普通的模型,它没有涉及到行为序列建模、记忆和泛化的处理、多任务建模等技术。但在当年却极为重要,它将深度学习应用到了搜索推荐场景,并展示了很多工业界完整落地的细节。当时主要难点有:

  1. 如何自动构建交叉特征。在Deep Crossing的年代,人们已经充分验证了交叉特征的重要性。但大多数情况下,特征交叉需要手工完成,会带来极大的成本。特别是搜索广告这种特征数量特别多的网络应用场景下,手工构建交叉特征几乎不可行。Deep Crossing使用深度神经网络,实现了自动构建交叉特征。

  2. 如何实现稀疏特征编码。通常情况下可以通过独热或者多热进行稀疏特征编码,然后再输入到模型中。但如果特征过于稀疏,枚举值过多,则会导致模型体积过大,无法有效训练和上线。Deep Crossing一方面采用Embedding降维的方式,实现了稀疏特征稠密化,并降低模型体积。另一方面对长尾ID进行聚合,同样大大降低了模型体积。

  3. 如何实现模型整个链路的端到端监督学习。Deep Crossing之前,虽然已经有论文在推荐场景中应用了深度学习,但工业界还没有模型可以整个链路端到端监督学习。Deep Crossing构建模型输出层和真实标签之间的损失,来充分拟合目标,从而实现端到端监督学习。

下面详细分析Deep Crossing的模型结构,从而理解这三个问题是如何得到解决的。Deep Crossing主要包括四层,从下到上,依次为Embedding层、Stacking层、Multiple Residual Units层和Scoring层。如下图所示。

2.1 Embedding层

Embedding层将高维稀疏的输入特征,转变为低维稠密的特征。推荐算法的Embedding层一般占了模型很大一部分体积。因此对于枚举值较多的特征,比如上述的广告计划(Campaign),Deep Crossing会让长尾者共享相同的ID,从而大幅降低特征枚举值,减小模型体积,保证可以顺利上线。对于搜索词和广告关键词等高维特征,Deep Crossing将他们的维度设置为256。维度低于256的特征,比如数值型特征,如图4-2中的特征2,则不需要进行Embedding,直接合并到Stacking层中。

Embedding层作为当前绝大多数推荐模型的第一层,包含了大部分的模型参数,其作用至关重要,相比于独热编码,优势主要有三点:

  1. 将高维稀疏的输入特征,转变为低维稠密的输出特征,实现降维和信息压缩。从而保证模型体积可控,最终可以顺利训练和上线。通常情况下,Embedding后的向量长度,要远小于独热编码向量长度。

  2. 特征语义化,提升模型泛化能力。同一特征组内,Embedding相似度较高的,其语义也是相近的,从而保证模型的泛化能力和鲁棒性。比如搜索词为“手机保护壳”和“手机套”时,广告结果应该大体相近。独热编码则没有这个能力。

  3. 可以与模型其他层参数一起,端到端训练更新。从而使得参数更加合理和准确。而独热编码的参数一般是不变的。

Embedding表征学习,作用大,难度高,是推荐算法精排模块中的重要研究方向。Embedding训练如何加快收敛,如何提升实时性?高维稀疏ID特征,向量维度大,枚举值多,如何降低参数量和模型体积?长尾ID特征样本不足,训练不充分,如何提升参数准确度?近年来,Graph Embedding、迁移学习等越来越多的方法不断涌现出来。

2.2 Stacking层

这一层比较简单,把Embedding层输出的特征向量,和没有经过Embedding处理的特征向量合并成一个长向量,然后输出给下一层。

2.3 Multiple Residual Units层

由多层残差单元(Residual Unit)堆叠而成。计算机视觉领域,由残差单元作为基本结构的ResNet[2]模型,一举夺得2015年ImageNet比赛冠军。它创造性的提出了残差单元,使得模型深度达到了惊人的152层,将深度学习推向了新的高度。Deep Crossing借鉴了ResNet的思想,在它的基础上做了一定修改,去掉了卷积网络。这是第一次将残差网络,应用到了计算机视觉之外的领域。

残差单元的结构如下图所示。原始输入特征经过两层全连接和ReLU激活变换后,得到输出特征。然后再将输出特征和原始输入特征相加,得到最终输出。

图片

Multiple Residual Units层,由多层残差单元堆叠而成。这一层通过深度神经网络,实现了特征自动交叉,从而大大降低了人工构造交叉特征带来的成本,并提升了模型表达能力,和预估准确率。作者在实验中发现,Deep Crossing相比其他网络,泛化能力更好。它可以应用到各种不同的任务中。这跟残差网络起到了一定的正则作用,从而保证模型稳定性和鲁棒性,有一定的关系。

文中还对特征交叉时间点先后的问题进行了研究。Deep Crossing在堆叠层特征合并之后,就进行了特征交叉。而DSSM双塔模型,则只在最后一层,通过余弦相似度计算,实现特征交叉,比Deep Crossing要晚很多。实验结果证明,特征交叉早的Deep Crossing模型,效果要优于DSSM。一方面是因为Deep Crossing特征交叉更为充分,其每一层全连接都在进行特征交叉。另一方面特征交叉晚,导致底层低阶特征没有实现交叉,只是在上层高阶特征上完成了交叉。所以特征交叉一定要尽可能的早,尽可能的充分。目前粗排模型受困于性能问题,很多场景仍然在使用DSSM,导致缺少了特征交叉。如何在粗排中实现充分的特征交叉,是目前一个重要的研究方向。

2.4 Multiple Residual Units层Scoring层

模型的输出层。点击率预估是个经典的二分类问题,输出层一般有两种实现:

  1. Sigmoid变换,此时上一层的输出是一个标量。将其归一化为0到1之间数值,代表点击的概率。Deep Crossing采用了这一方法。

  2. Softmax变换,此时上一层的输出是一个向量,向量长度为预估类别的数量。比如二分类问题,向量长度则为2。将输出向量归一化为0到1之间数值,向量中每个值代表每个类别的预估概率。

目标函数:Deep Crossing采用了LogLoss,但也可以采用Softmax等其他函数。

3 Deep Crossing总结

Deep Crossing是深度学习应用到推荐算法中的一个革命性模型。它通过深度神经网络,实现了特征自动交叉,并第一次将残差网络应用到了计算机视觉之外的领域,大大提升了模型表达能力。它通过Embedding向量编码,解决了高维稀疏特征的建模问题,一举奠定了“Embedding + MLP”的深度学习推荐系统范式。它是工业界第一次实现深度学习推荐模型端到端训练,并披露了很多其中的细节,为后来工业界大规模应用深度学习打下了坚实的基础。

4 伪代码

5 实验效果

6 参考文献

[1] Ying Shan, T Ryan Hoens, et al. 2016. Deep crossing: Web-scale modeling without manually crafted combinatorial features. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 255–262.

[2] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. arXiv preprint arXiv:1512.03385, 2015.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/307356.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(一)Spring Cloud 直击微服务作用、架构应用、hystrix降级

直击微服务作用 微服务架构: 遇到了什么问题? 将单体架构拆分成微服务架构后,如果保证多个服务(项目)正常运行? 哪个技术可以解决这个问题? 微服务技术 服务治理: 服务管理,维护服务与服务之间的关系 这个技术如何使用? netflix/网…

智能化输电线路定位技术:提升电网运行效率的未来发展方向

随着科技的不断发展,电力行业也在逐步引入智能化技术,以提高输电线路的运行效率和安全性。在这篇文章中,恒峰智慧科技将探讨一种新的输电线路定位技术——分布式行波测量技术,它如何帮助我们实现这一目标。 一、分布式故障定位及隐…

游泳耳机排行榜前四名,分享几款值得推荐的游泳耳机

游泳是一项全面锻炼身体的运动,然而,水的阻力有时让人感到运动的笨拙和单调。为了让游泳更具趣味性和挑战性,选择一款高品质的游泳耳机至关重要。以下是游泳耳机排行榜前四名,以及几款强烈推荐的游泳耳机,它们结合防水…

Python教程(22)——Python面向对象的属性和方法

在Python面向对象编程中,属性和方法是类及其对象的重要组成部分。如果说封装、继承和多态是面向对象编程中的思想,那么类的属性和方法就是骨架,因为有属性和方法,面向对象编程才变的有血有肉。 属性 属性是类或对象所拥有的数据&…

UWB 技术及应用

超宽带技术为工业自动化提供独特优势,是首要的室内定位技术。 UWB 因其相对于 RFID、BLE 或 WiFi 等同类技术的众多优势而被认为是室内定位技术的黄金标准。它是基于位置的自动化的理想解决方案。 UWB 结合了短光速脉冲,可在宽带宽上精确测量信号到达时…

linux离线安装docker20.10.7 版本(亲测有效)

目录 1 下载2 安装2.1 新建docker.service2.2 为什么要写docker.service2.3 启动docker2.5 安装docker-compose2.5.1 为什么安装2.5.2 安装 3 /usr/local/bin/ 和 /usr/bin 区别 1 下载 将这个上传到linux 服务器的 随便一个目录 2 安装 解压离线安装包 tar -zxvf docker-20.1…

面试算法105:最大的岛屿

题目 海洋岛屿地图可以用由0、1组成的二维数组表示,水平或竖直方向相连的一组1表示一个岛屿,请计算最大的岛屿的面积(即岛屿中1的数目)。例如,在下图中有4个岛屿,其中最大的岛屿的面积为5。 分析 将岛屿…

局域网实现文件自动同步

软件下载地址: https://dbrwe.blog.csdn.net/article/details/132331206?spm1001.2014.3001.5502 打开【自动上传与同步】配置 在下面 自动同步 自动回传打上钩就可以同步或者下载文件

生成式人工智能市场规模、趋势和统计数据(2024-2026)

生成式人工智能市场规模、趋势和统计数据(2024-2026) 目录 生成式人工智能市场规模、趋势和统计数据(2024-2026)一、生成式人工智能行业亮点二、生成式人工智能市场规模三、生成式人工智能市场增长预测四、生成式人工智能采用统计…

结构型设计模式——适配器模式

适配器模式 这个更加好理解,就是做适配功能的类,例如,现在手机没有了圆形耳机接口,只有Type-C接口,因此你如果还想要使用圆形耳机的话需要买个圆形接口转Type-C的转换器(适配器),这…

再不收藏就晚了,Axure RP Pro 各版本大集合

Axure RP Pro下载链接 https://pan.baidu.com/s/1hRJRY6t0ZONKhdwvykAc3g?pwd0531 1.鼠标右击【Axure RP Pro9.0】压缩包(win11及以上系统需先点击“显示更多选项”)选择【解压到 Axure RP Pro9.0】。 2.打开解压后的文件夹,鼠标右击【Axu…

基于ssm的一家运动鞋店的产品推广网站的设计论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本一家运动鞋店就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

整理的十大算法和十大排序,分别用汇编语言,C语言,C++,java,python编写实现

整理的十大算法和十大排序,分别用汇编语言,C语言,C,java,python编写实现十大算法,分别用分别用C语言,C,java,python编写实现 Floyd Warshall算法 http://www.net188.com/thread-616-1-1.html …

<软考高项备考>《论文专题 - 57 干系人管理(1) 》

1 论文基础 1.1 写作要点 过程定义、作用写作要点、思路识别干系人识别干系人是定期识别项目干系人,分析和记录他们的利益、参与度、相互依赖性、影响力和对项目成功的潜在影响的过程。作用:使项目团队能够建立对每个干系人或干系人群体的适度关注。本项目里有哪些…

Qt之有趣的数字钟

一.效果 基于网络代码修改,支持时、分、秒;支持滑动、翻页和旋转。 二.实现 #include <QtCore> #include <QPainter> #include <QAction> #include <QWidget> #include <QMainWindow> #include <QTimer> #include <QKeyEvent> #…

TDengine 签约西电电力

近年来&#xff0c;随着云计算和物联网技术的迅猛发展&#xff0c;传统电力行业正朝着数字化、信息化和智能化的大趋势迈进。在传统业务基础上&#xff0c;电力行业构建了信息网络、通信网络和能源网络&#xff0c;致力于实现发电、输电、变电、配电和用电的实时智能联动。在这…

gem5学习(10):创建一个简单的配置脚本——Creating a simple configuration script

目录 一、gem5 configuration scripts 1、An aside on SimObjects 二、Creating a config file 1、导入m5库和SimObjects 2、创建模拟系统 3、设置系统时钟 4、设置内存模拟方式 5、创建CPU 6、创建系统级内存总线 7、连接请求-响应端口 &#xff08;1&#xff09;A…

Word2007导出PDF的正确做法

客户让做个一程序&#xff0c;从Excel读出数据&#xff0c;经过统计、计算生成PDF文档。我的做法是中间安装模板生成Word文档&#xff0c;然后在导出为PDF。 程序完成后需要测试&#xff0c;客户的环境是Win10Office2007。我用虚拟机搭建了环境&#xff0c;发现Word2007竟然无…

使用Nonebot编写QQ机器人

使用 NoneBot 这个工具&#xff0c;来编写 QQ 机器人。 安装基础软件 一、安装 NoneBot 库 直接使用 pip 安装即可 pip install nonebot二、安装酷Q 软件和 HTTP API 插件 酷Q 软件可以直接到官网下载&#xff0c;https://cqp.cc/b/news&#xff0c;或者可以到网盘下载&am…

理解接雨水算法

一、IDEA注释显示图片 在做题时&#xff0c;需要对照这图片&#xff0c;才能更好的梳理思路。 首先&#xff0c;注释里添加<img/>标签 之后&#xff0c;将鼠标光标放置在需要以阅读模式预览注释的地方&#xff0c;然后按快捷键CtrlAltQ即可 二、接雨水算法 先看接雨水…