比你更懂你 — 神经网络与推荐系统的深度结合
摘要
推荐系统的主要任务是推荐用户感兴趣的内容,通过揣摩人心来预测用户未来的行为。显然,一个好的推荐系统所能带来的价值是无比巨大的。特别是在近几年,它所带来的商业价值是显而易见的。我们将介绍近期深度学习在推荐系统领域上的发展以及它们的主要原理。在此文中我们将着重关注特征交叉,因为这是所有推荐系统能否成功预测用户行为的关键。
推荐系统在互联网领域例如广告或视频推荐、线上购物等业务中拥有着巨大的商业价值。一个好的推荐系统能根据用户、商品等相关的特征精准快速地预判用户的下一步行为,从而提供最相关联的商品或服务,进而带来更多的收益。点击率是其中一个衡量收益的关键,其定义为(CTR=点击次数/商品出现次数×100%),它是衡量一个商品(例如一则广告页面)与某个用户的关联度指标,且通常还会乘以该商品所带来的收益/费用得到点击成本(CPC),因此推荐系统的终极目标是达成CTR或者CPC的最大化。
在深度学习崛起的早期,主流的推荐系统仍是相对简单的模型,例如基于logistic regression (LR),extreme gradient boost (XGBoost)或两者融合的方法等。然而这一类模型的缺点也比较明显:首先,它们往往需要人工提取特征来进行建模。这样不仅增加了时间成本,还会不可避免地丢失一些关键特征。其次,这类模型的表达能力也不够丰富,缺乏对一些复杂场景的捕捉能力,从而限制了模型的预测准确度。随着深度学习与相关硬件的发展,基于神经网络的推荐系统也逐渐取代传统的推荐算法。本文将从深度学习的角度出发,着重介绍几个重要的推荐系统网络结构。
在介绍具体的深度推荐网络之前,我们先介绍一下在所有推荐系统中一个最重要的概念,即特征交叉。可以认为这是特征之间的交互作用,或着是种高阶特征。举个简单的例子,在网络购物的场景下,年龄与性别是两个重要的特征,我们可以从一阶(线性)的角度来单独地分别处理这两个特征。然而很显然,年龄与性别拥有着较大的交互作用:年纪相仿的男女与中老年人在商品种类的兴趣上有着很大的差异,因此两者的交叉特征所给予的额外信息对于预测用户的购物习惯有着很大的意义。当然了,更多的特征也可以被加入已有的特征组之中,例如曾浏览过的商品等,形成更高阶的特征交叉,然而这样往往会给网络训练与推理带来额外的负担并造成计算延迟。
虽然全连接神经网络理论上完全可以提取一定程度的高阶特征交叉信息,然而神经网络通过激活函数达到的非线性表征具有一般性的意义,并不只针对特征交叉,因此提取的特征交互信息往往都相对较弱。为应对这一问题,目前主流的深度推荐系统都在某些层面上采用了针对性地提取特征交叉的算法。其中最为经典的方法莫过于因子分解器(Factorization Machine:FM)[1]。
特征的一阶线性关系可以用一个简单的线性回归模型来表示:
我们可以加入一个二阶项来提升模型的表达能力:
虽然该模型拥有了捕捉特征交叉的能力,但是在推荐任务中,许多分类特征(categorical features)都是以稀疏的形式存在,这会导致许多 项为零,因此缺乏样本对许多二阶参数 的训练,使得模型的训练不够充分。因子分解器(FM)则因此而诞生。一个二阶的FM可以被表达成:
在数学中,内积是可以被列为一种有着对称属性的双线性项表示:
首先,在经典的深度推荐系统网络结构莫过于 Wide & Deep[4]了。这是一个简单且易理解的网络结构。其精髓便是,它是由一个线性层(Wide部分)与多层Relu激活的MLP(Deep部分)所组成的结构(图1),最后将Wide与Deep的结果加起来并通过一个sigmoid激活得到最终结果[4]。
另外,我们简单介绍一下embedding层,这是一个在几乎所有推荐系统都会出现的部件。它的作用是与其将分类特征索引转换成one-hot向量与全连接层权重矩阵乘,不如直接用索引提取权重矩阵的值来大大缩小计算量,所以embedding矩阵也往往被称之为lookup table。这样做大大提高了网络效率,因为分类特征的维度往往都无比巨大,导致绝大部分的网络参数都来源于embedding层(大小是根据有多少独特的特征)。
回到Wide & Deep,深度学习在推荐系统的场景下面临的两个主要问题。首先是如何记忆重要的特征交叉以避免神经网络自己去挖掘,以及如何泛化模型来对未见过的数据做出精准预测。Wide & Deep的核心思想是使用Wide的部分来记忆预设的特征交叉来预测许多常见的场景,用Deep的部分来泛化从而做出Wide部分没记忆过的推理。
我们会发现大部分主流深度推荐模型都有最适应的业务场景。例如Wide & Deep是针对手机端App的预测,因此交叉的特征为用户已安装的App和推荐的App(图2)。Wide部分的网络会通过用户已安装的App来决定是否该给用户推荐当前App(这两个特征的选择是基于工程经验),而Deep部分则会根据所有特征信息(包括已安装App和给用户展现的App)用全连接网络来提取非线性信息从而提高整体预测效果。
这里的特征交叉虽没采用FM方法而是使用了交叉转换(cross product transformation)来实现,但是核心的思想仍是为了提取高阶特征之间交互作用的信息(具体实现请看[4])。Wide & Deep的网络结构对之后的深度推荐系统都有着巨大影响,以至于大部分之后产生的网络都延续了Wide & Deep的结构。
Deep & Wide的网络结构固然经典,不过它的一个最大缺点就是需要在Wide部分的输入为人工筛选的特征,导致无法被简单的扩展到其他场景中。DeepFM[5]则是一个经典的无需人工特征处理的Wide & Deep衍生网络。在结构上,DeepFM延续了Wide & Deep的整体结构(由两个分支组成)。不过Wide部分的线性层被一个能自动提取高阶特征交叉的FM层所替代(图3)。
图3:DeepFM的网络结构 [5]
同样类似的网络还有Deep & Cross(DCN)[6],该网络使用了交叉层(cross network)来取代Wide的部分。DCN的交叉层有着比FM更高的表达力,因此在理论上更适合提取高阶特征交叉的信息。不过需要注意的一点是,我们其实无法对两者在实际应用中的效果做出判断,这些都与应用场景和数据集相关。
图4:Deep & Cross的网络结构 [6]
其他深度推荐系统网络
在DeepFM,DCN之后,还诞生了许多其他推荐系统网络,改进了之前的一些机制。例如xDeepFm[7]和DCN-V2[8]都对DCN里的交叉层进一步改进了特征交叉的处理方法,得到了更好的高阶信息提取效果,然而在计算效率中做出了些牺牲。
另外,针对线上购物的DIN[9]在embedding层与MLP之间加入了注意力(attention)机制,根据用户以往的习惯,放大或缩小甚至抛弃与用户历史行为相关的权重,来更好预测用户将来的兴趣。这之后还相继诞生了DIEN[10]和DSIN[11],都为该网络的升级版。
其他主流网络还有DLRM[12]在输入的方法做出了些改动,稀疏(分类特征)与稠密(连续特征)输入的分别对应到了不同的网络输入口(分别是embedding层与MLP),并且只使用了二阶特征交叉在速度与准确度中做了平衡。
最后,近期推出了DeepLight[13]网络,是一个针对输入向量和不同层的神经单元和交叉矩阵执行了剪枝(pruning)操作,大大减少了内存需求以及提高了模型的推理速度,同时还保持了与之前主流网络相近的预测效果。
在深度推荐系统领域中,虽然存在着许多不同的网络,但是我们可以看出大部分改进与创新都是为了更好地提取特征交叉。以此可见,特征之间的交互作用对于推荐任务来说无疑是一个最重要的模块。虽然一个复杂的特征交叉提取模块能更好地提取高阶信息,但是复杂性通常会带来更高的内存需求和推理时间,从而导致线上推理的延迟,影响最终收益。
需要注意的是,在模型选择中一定要配合场景,任务与数据。在不同情况下,模型的准确率有可能差距会很大。在实际应用中,往往需要测试多个模型,才能达到比较好的效果。此外,有些模型是在比较具体的业务场景下诞生的,例如Wide & Deep是针对手机端App的推荐任务,而DIN,DIEN和DSIN对应的则是线上购物的业务。因此,最适合的模型往往是通过经验筛选而出。
深度推荐系统所带来的商业价值是显而易见的,特别是最近几年里,我们也很期待在未来会出现一些创新来颠覆以往的推荐模型。
[1] Austin Derrow-Pinion, Jennifer She, David Wong, et al. ETA Predictionwith Graph Neural Networks in Google Maps. 2021
[1] S. Rendle, Factorization Machines, in: 2010 IEEE International Conference on Data Mining, IEEE, 2010: pp. 995–1000. https://doi.org/10.1109/ICDM.2010.127.
[2] W. Zhang, T. Du, J. Wang, Deep Learning over Multi-field Categorical Data, in: 2016: pp. 45–57. https://doi.org/10.1007/978-3-319-30671-1_4.
[3] Y. Qu, H. Cai, K. Ren, W. Zhang, Y. Yu, Y. Wen, J. Wang, Product-based Neural Networks for User Response Prediction, (2016).
[4] H.-T. Cheng, L. Koc, J. Harmsen, T. Shaked, T. Chandra, H. Aradhye, G. Anderson, G. Corrado, W. Chai, M. Ispir, R. Anil, Z. Haque, L. Hong, V. Jain, X. Liu, H. Shah, Wide & Deep Learning for Recommender Systems, (2016).
[5] H. Guo, R. Tang, Y. Ye, Z. Li, X. He, DeepFM: A Factorization-Machine based Neural Network for CTR Prediction, (2017).
[6] R. Wang, B. Fu, G. Fu, M. Wang, Deep & Cross Network for Ad Click Predictions, (2017).
[7] J. Lian, X. Zhou, F. Zhang, Z. Chen, X. Xie, G. Sun, xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems, (2018). https://doi.org/10.1145/3219819.3220023.
[8] R. Wang, R. Shivanna, D.Z. Cheng, S. Jain, D. Lin, L. Hong, E.H. Chi, DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems, (2020). https://doi.org/10.1145/3442381.3450078.
[9] G. Zhou, C. Song, X. Zhu, Y. Fan, H. Zhu, X. Ma, Y. Yan, J. Jin, H. Li, K. Gai, Deep Interest Network for Click-Through Rate Prediction, (2017).
[10] G. Zhou, N. Mou, Y. Fan, Q. Pi, W. Bian, C. Zhou, X. Zhu, K. Gai, Deep Interest Evolution Network for Click-Through Rate Prediction, (2018).
[11] Y. Feng, F. Lv, W. Shen, M. Wang, F. Sun, Y. Zhu, K. Yang, Deep Session Interest Network for Click-Through Rate Prediction, (2019).
[12] M. Naumov, D. Mudigere, H.-J.M. Shi, J. Huang, N. Sundaraman, J. Park, X. Wang, U. Gupta, C.-J. Wu, A.G. Azzolini, D. Dzhulgakov, A. Mallevich, I. Cherniavskii, Y. Lu, R. Krishnamoorthi, A. Yu, V. Kondratenko, S. Pereira, X. Chen, W. Chen, V. Rao, B. Jia, L. Xiong, M. Smelyanskiy, Deep Learning Recommendation Model for Personalization and Recommendation Systems, (2019).
[13] W. Deng, J. Pan, T. Zhou, D. Kong, A. Flores, G. Lin, DeepLight: Deep Lightweight Feature Interactions for Accelerating CTR Predictions in Ad Serving, (2020).
往期推荐
2、融合图像文字输入的Transformer:ViT-BERT
壁仞科技研究院作为壁仞科技的前沿研究部门,旨在研究新型智能计算系统的关键技术,重点关注新型架构,先进编译技术和设计方法学,并将逐渐拓展研究方向,探索未来智能系统的各种可能。壁仞科技研究院秉持开放的原则,将积极投入各类产学研合作并参与开源社区的建设,为相关领域的技术进步做出自己的贡献。