这篇综述发表于ACM Computing Surveys上,主要介绍深度学习在推荐系统中的应用,主要工作包括三个方面:
(1)系统评价基于深度学习的推荐算法模型,并对算法进行分类;
(2)提供了(发表论文时)推荐领域state-of-the-art技术的概述和总结;
(3)讨论了推荐系统领域存在的挑战和一些开放性问题,并分析了该领域的新趋势和未来方向。
1 推荐系统和深度学习概述
1.1 推荐系统
推荐系统模型主要分为三类:
- 协同过滤:通过学习user和item之间的历史交互,包含显式反馈(用户评分记录)和隐式反馈(用户浏览历史);
- 基于内容:主要通过分析比较user和item的辅助信息,这些辅助信息以文本、图像或视频等不同形式存在;
- 混合推荐:整合两种或两种以上推荐策略构建模型。
1.2 深度学习
深度学习是机器学习的子领域。通常认为深度学习的本质是学习多层次的数据表示和抽象。从实践角度来讲,深度学习是指具有神经元的可微分结构通过梯度下降方法(如随机梯度下降SGD或其变体)对可微目标函数进行优化。常用的网络结构包括:
多层感知机MLP,自编码器AE,卷积神经网络CNN,循环神经网络RNN,受限玻尔兹曼机RBM,神经自回归分布估计NADE,对抗网络Adversarial Network,注意力模型Attentional Models,以及深度强化学习DRL等。
1.3 深度神经网络用于推荐的原因
DNN在推荐系统中的应用与具体的任务,领域和推荐场景密切相关。神经网络结构具有end-to-end端到端可微的特性,并且能够针对输入数据的类型提供合适的inductive biases(归纳偏置,即一种关于学习算法目标函数的假设,可参考链接)。深度神经网络有多个模块复合成一个高复杂度可微分函数,支持端到端训练。这一特性在基于内容推荐的场景下有明显优势。对于user和item之间交互的多模态数据(例如图像、语音等)而言,传统方法针对特定模态数据设计特征导致推荐系统无法进行端到端训练,深度神经网络能够利用一种集成式结构对图像、文字和交互关系进行表示,颠覆性地解决了这一问题。此外,在高复杂度或者训练数据量非常大的场景下,使用深度神经网络可以获得良好的性能。传统的推荐算法如BPR,MF,CML在user与item交互数据上使用基于动量的梯度下降算法也取得了不错的效果。由于一些传统模型利用了Adam,Dropout或者Batch Normalization等深度学习中的高级方法,能够利用tensorflow等框架在gpu的支持下高效训练,实际上也可以将其看作是神经网络或者可微分结构。
DNN在推荐系统中实际应用时应注意的四个重要因素:
- 非线性变换
大部分传统模型为线性结构,对数据的表征能力很大程度上被限制。而结构合理的深度神经网络能够以任意精度拟合任意函数,能够发掘user和item之间复杂的交互模式,准确反映用户偏好 。
- 表示学习
DNN能够从输入数据中高效学习潜在的解释性因素以及有用的表示(数据表征),从原始数据中自动学习特征,减少了手工设计特征的工作量。同时,DNN的应用使推荐模型中能够包含不同类型的数据,例如图像、文本、音频、视频等。DNN已经在多媒体数据处理方面取得突破,并在利用多源异构数据学习特征表示方面有着非常大的潜力。
- 序列建模
推荐系统模型中,对序列信号进行建模在挖掘user行为和item演进的变化机制非常重要。DNN非常适合处理这类序列建模型任务,目前已经在在机器翻译、自然语言理解、语音识别、聊天机器人等多项任务上取得了良好的效果。
- 灵活性
深度学习技术的应用具有高度的灵活性。业界出现了tensorflow/pytorch/caffe等开源深度学习框架时,这些框架以模块化的形式开发,有着活跃的开发者社区和专业支持,极大地提高了深度学习开发和应用的效率。
1.4 潜在的限制因素
- 可解释性
尽管深度学习取得了巨大成功,但是难以对其进行解释,大多数情况下像黑箱一样被使用。随着理论研究的深入,针对隐藏层权重和激活参数有了更为深入的理论分析和解释,而对于神经网络中神经元个体进行解释仍旧困难。目前的最佳模型能够实现部分可解释,实现可解释的推荐。
- 数据样本的要求
深度学习属于数据驱动型技术,需要海量训练数据来拟合网络结构中的大量参数。然而,相比CV或NLP等带标注数据非常稀少的领域,推荐系统中获得海量符合要求的训练数据是非常容易的事情。百万甚至于十亿量级的数据集在工业结和学术界都很常见。
- 大量超参数需要调节
超参数调节不是深度学习独有的问题,在传统机器学习算法中也很常见。但相比之下,深度学习模型在某些情况下确实引入了大量额外的超参数。