作者简介:
腾讯T11算法研究员。硕士毕业于中国科学院大学。在阿里和腾讯工作多年,拥有丰富的搜索和推荐算法经验。CSDN博客专家,原创文章100篇。发表专利15个,其中已授权6个。
精排模型历经多年发展,如今已基本从线性模型时代,进入到深度学习时代。自从2012年AlexNet[1]在ImageNet大规模视觉识别比赛中一举夺魁后,深度学习就席卷了各大业务领域。深度学习模型具有拟合能力强、泛化能力好、可端到端学习等特点,在推荐算法中很快得到了应用。并在电商、广告、社交、信息流等业务领域,取得了较好的业务效果。近几年来,推荐算法深度模型更新换代很快,各种方法层出不穷,呈现百家争鸣的状态,一片欣欣向荣。
精排模型可分为特征交叉、用户行为序列建模、Embedding表征学习和多任务学习四大重点方向。本文主要介绍特征交叉,其余方向后续分别讲解。特征交叉可以帮助生成新的特征,提高模型准确度。利用深度学习进行特征交叉,可以解决手动特征交叉门槛高、工作任务重、无法穷举等缺点,大大提升了模型表达能力。深度学习特征交叉主要有DNN模型、异构模型和序列模型三大类。
本文主要介绍特征交叉的意义、基本范式和主要难点。后续先分别介绍三个经典深度学习模型:Deep Crossing、FNN和PNN。然后再分别介绍五个经典异构模型:Wide & Deep、DeepFM、DCN、NFM和xDeepFM。序列模型则在用户行为序列建模中介绍。特征交叉的知识框架如图1所示。
图1 特征交叉知识框架
特征交叉的意义十分重大,一直以来都是推荐系统核心优化方向。它具备提高模型准确度、泛化能力和非线性能力的作用。组合特征信号很强,比如一个18岁的男性用户,喜欢射击类游戏的概率很高,而女性用户和大龄男性用户则相对较低。特征交叉有利于捕获特征间的共现关系,从而提升模型准确度。同时,通过特征交叉可以生成新的特征,甚至未知的特征组合,有利于提升模型泛化能力。最后,现实世界是高度非线性的,通过内积和外积等特征交叉方式,可以提升模型非线性能力。
深度学习应用到特征交叉领域后,极大的提升了推荐系统的性能。与手动构造交叉特征和FM二阶自动特征交叉相比,其优点主要有:
特征交叉分为手动交叉和自动交叉两大类。在逻辑回归等早期推荐系统时代,利用专家经验,手动构造大规模交叉特征十分重要。手动交叉可解释性强,在人力充足的情况下,可以实现二阶甚至三阶特征交叉。通常需要有较强的业务背景知识和数据分析能力,从而挖掘出有效的特征组合。目前对于信号较强的特征组合,仍然会提前构造交叉特征,再输入到深度模型中。
自动交叉分为以FM为代表的二阶特征交叉和深度学习交叉两大类。FM利用内积操作,实现了二阶特征显式交叉。但想扩散到三阶及以上,则面临着计算量爆炸的问题。深度学习则利用多层全连接网络,可以实现高阶特征交叉,但由于缺少内积和外积等显式交叉操作,其交叉是隐式的。
深度学习交叉有三种典型架构:DNN类、异构模型类和序列模型类。DNN类将多层神经网络引入到了推荐系统,成功实现了工业界自动高阶特征交叉。其实现比较简单,直接利用多层全连接网络即可。异构模型类通常有多个分支,比如DeepFM一个分支为FM,另一个分支为DNN,最后通过一层线性连接融合各分支。异构模型兼顾了线性模型和深度模型各自优点,从而同时具备低阶交叉和高阶交叉能力,以及记忆和泛化能力。序列模型则主要用来建模用户行为序列特征,并实现历史行为和候选物品的交叉。主要有注意力池化、GRU序列模型和Transformer模型等方法,在下一章中具体讲解。
特征交叉操作符,可以分为全连接和内积(或外积)两大类。全连接操作通过加法操作,拟合的是特征间“或”的关系,因此被认为是隐式交叉。内积和外积则通过乘法操作,能够拟合特征间“且”的关系,可以认为是显式交叉。一般来说,“且”的关系更有利于捕获到强信号,价值更高。DeepFM和IPNN采用了内积交叉,而OPNN、DCN和xDeepFM则采用了外积交叉。
特征交叉具备提高模型准确度、泛化能力和非线性能力的作用,意义十分重大。其难点主要有:
[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