精通推荐算法3:精排特征交叉架构(体系化总结,面试必备)
作者简介:
腾讯T11算法研究员。硕士毕业于中国科学院大学。在阿里和腾讯工作多年,拥有丰富的搜索和推荐算法经验。CSDN博客专家,原创文章100篇。发表专利15个,其中已授权6个。
1 总体架构
精排模型历经多年发展,如今已基本从线性模型时代,进入到深度学习时代。自从2012年AlexNet[1]在ImageNet大规模视觉识别比赛中一举夺魁后,深度学习就席卷了各大业务领域。深度学习模型具有拟合能力强、泛化能力好、可端到端学习等特点,在推荐算法中很快得到了应用。并在电商、广告、社交、信息流等业务领域,取得了较好的业务效果。近几年来,推荐算法深度模型更新换代很快,各种方法层出不穷,呈现百家争鸣的状态,一片欣欣向荣。
精排模型可分为特征交叉、用户行为序列建模、Embedding表征学习和多任务学习四大重点方向。本文主要介绍特征交叉,其余方向后续分别讲解。特征交叉可以帮助生成新的特征,提高模型准确度。利用深度学习进行特征交叉,可以解决手动特征交叉门槛高、工作任务重、无法穷举等缺点,大大提升了模型表达能力。深度学习特征交叉主要有DNN模型、异构模型和序列模型三大类。
本文主要介绍特征交叉的意义、基本范式和主要难点。后续先分别介绍三个经典深度学习模型:Deep Crossing、FNN和PNN。然后再分别介绍五个经典异构模型:Wide & Deep、DeepFM、DCN、NFM和xDeepFM。序列模型则在用户行为序列建模中介绍。特征交叉的知识框架如图1所示。
图1 特征交叉知识框架
2?特征交叉的意义
特征交叉的意义十分重大,一直以来都是推荐系统核心优化方向。它具备提高模型准确度、泛化能力和非线性能力的作用。组合特征信号很强,比如一个18岁的男性用户,喜欢射击类游戏的概率很高,而女性用户和大龄男性用户则相对较低。特征交叉有利于捕获特征间的共现关系,从而提升模型准确度。同时,通过特征交叉可以生成新的特征,甚至未知的特征组合,有利于提升模型泛化能力。最后,现实世界是高度非线性的,通过内积和外积等特征交叉方式,可以提升模型非线性能力。
深度学习应用到特征交叉领域后,极大的提升了推荐系统的性能。与手动构造交叉特征和FM二阶自动特征交叉相比,其优点主要有:
- 自动特征交叉:通过深度神经网络(Deep Neural Network,DNN),可以自动进行任意特征间的交叉,从而将人力从繁重的手动交叉中解放出来。但需要注意的是,对于信号很强的特征组合,目前仍然会手动构造交叉特征,避免自动交叉效果欠佳。
- 高阶特征交叉:FM只能进行二阶特征交叉,三阶甚至更高阶会导致计算量爆炸。深度学习通过多层神经网络,具有拟合能力强的优点,可以实现高阶特征交叉。但需要注意的是,神经网络的全连接本质上只是线性计算,难以构造出内积等显式交叉操作,因此普通深度模型的高阶特征交叉是隐式的。xDeepFM通过独特的设计,实现了显式高阶特征交叉。
- 挖掘特征间隐藏信息和未知信息:通过领域专家挖掘有效的特征组合,容易忽视很多隐藏信息,比如“啤酒和尿布”。另外手动交叉难以挖掘未曾出现过的特征组合。深度学习特征交叉则可以避免这些问题。
- 交叉范围广:手动交叉需要大量人力,不可能对所有特征组合进行穷举。FM虽然能自动交叉,但局限在二阶,只能同时对两个特征进行交叉。而深度学习特征交叉,理论上可以实现任意特征的任意阶交叉,其上限更高。
- 交叉方式多样:通过异构网络,可以使深度学习模型同时具备显式低阶、隐式高阶和显式高阶等特征交叉能力。xDeepFM模型的FM分支可以实现显式低阶交叉,DNN分支可以实现隐式高阶交叉,而CIN分支则可以实现显式高阶交叉。通过多样化的交叉方式,可以提升模型表达能力和效果。
3?特征交叉基本范式
特征交叉分为手动交叉和自动交叉两大类。在逻辑回归等早期推荐系统时代,利用专家经验,手动构造大规模交叉特征十分重要。手动交叉可解释性强,在人力充足的情况下,可以实现二阶甚至三阶特征交叉。通常需要有较强的业务背景知识和数据分析能力,从而挖掘出有效的特征组合。目前对于信号较强的特征组合,仍然会提前构造交叉特征,再输入到深度模型中。
自动交叉分为以FM为代表的二阶特征交叉和深度学习交叉两大类。FM利用内积操作,实现了二阶特征显式交叉。但想扩散到三阶及以上,则面临着计算量爆炸的问题。深度学习则利用多层全连接网络,可以实现高阶特征交叉,但由于缺少内积和外积等显式交叉操作,其交叉是隐式的。
深度学习交叉有三种典型架构:DNN类、异构模型类和序列模型类。DNN类将多层神经网络引入到了推荐系统,成功实现了工业界自动高阶特征交叉。其实现比较简单,直接利用多层全连接网络即可。异构模型类通常有多个分支,比如DeepFM一个分支为FM,另一个分支为DNN,最后通过一层线性连接融合各分支。异构模型兼顾了线性模型和深度模型各自优点,从而同时具备低阶交叉和高阶交叉能力,以及记忆和泛化能力。序列模型则主要用来建模用户行为序列特征,并实现历史行为和候选物品的交叉。主要有注意力池化、GRU序列模型和Transformer模型等方法,在下一章中具体讲解。
特征交叉操作符,可以分为全连接和内积(或外积)两大类。全连接操作通过加法操作,拟合的是特征间“或”的关系,因此被认为是隐式交叉。内积和外积则通过乘法操作,能够拟合特征间“且”的关系,可以认为是显式交叉。一般来说,“且”的关系更有利于捕获到强信号,价值更高。DeepFM和IPNN采用了内积交叉,而OPNN、DCN和xDeepFM则采用了外积交叉。
4?特征交叉的难点
特征交叉具备提高模型准确度、泛化能力和非线性能力的作用,意义十分重大。其难点主要有:
- 维度灾难:特征数量过多,交叉阶数过高,会带来计算量的大幅增加,导致训练时间和存储成本增加。交叉阶数线性增加时,其特征组合空间以阶乘的形式大幅增加,导致计算量大幅增加。因此维度灾难一直是制约特征交叉规模的一大问题。
- 显式高阶特征交叉:FM以内积操作的方式,可以实现显式特征交叉,但因为维度灾难问题,仅能停留在二阶。DNN通过多层全连接网络,可以实现高阶特征交叉,但其交叉是隐式的。如何才能获取显式高阶特征交叉能力,一直以来都是一大难题。xDeepFM通过独特的CIN网络单元设计,并利用外积操作,真正实现了这一能力。但同样受限于维度灾难问题,其特征交叉一般仅能到4阶。另外由于计算量比较大,其模型训练和部署上线均有一定挑战。
5 参考文献
[1] Krizhevsky, A., Sutskever, I., Hinton, G.E.: Imagenet classification with deep convolutional neural networks. In: Advances in neural information processing systems, pp. 1097–1105 (2012)
系列文章,欢迎关注。
谢杨易:精通推荐算法1:为什么需要推荐系统(系列文章,建议关注)6 赞同 · 6 评论文章?编辑https://zhuanlan.zhihu.com/p/675300656
谢杨易:推荐算法架构1:召回(系列连载,建议关注)28 赞同 · 5 评论文章?编辑https://zhuanlan.zhihu.com/p/672909266
谢杨易:推荐算法架构2:粗排(体系化总结)20 赞同 · 6 评论文章?编辑https://zhuanlan.zhihu.com/p/673414952
谢杨易:推荐算法架构3:精排(万字长文)36 赞同 · 6 评论文章?编辑https://zhuanlan.zhihu.com/p/673932082
谢杨易:推荐算法架构4:重排(面试必备)43 赞同 · 7 评论文章?编辑https://zhuanlan.zhihu.com/p/674870882
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!