利用深度学习做推荐的一般方法和思路
MLP、CNN、RNN、Autoencoder、AN这几类比较出名并且常见的神经网络模型都可以应用于推荐系统中。
本文我们来简单讲解一下可以从哪些角度将深度学习技术应用于推荐系统中。根据推荐系统的分类及深度学习模型的归类,我们大致可以从如下三个角度来思考怎么在推荐系统中整合深度学习技术。这些思考问题的角度可以帮助我们结合深度学习相关技术、推荐系统本身的特性以及公司具备的数据及业务特点选择合适自身业务和技能的深度学习技术,将深度学习技术更好地落地到推荐业务中。
1、从推荐算法中用到的深度学习技术角度来思考
常用的深度学习模型有MLP(多层感知机)、CNN(卷积神经网络)、RNN(循环神经网络)、Autoencoder(自编码器)、AN(Adversarial Network,对抗网络)、RBM(受限玻尔兹曼机)、NADE(Neural Autoregressive Distribution Estimation)、AM(Attentional Model,注意力模型)、DRL(深度强化学习)等,这些模型都可以跟推荐系统结合起来,并且学术界和产业界都有相关的论文发表。读者可以参见参考文献3,该文章是一篇非常全面实用的深度学习推荐系统综述文章,在这篇文章中作者就是按照不同深度学习模型来整理当前深度学习应用于推荐系统的有代表性的文章和方法的。
目前采用MLP网络来构建深度学习推荐算法是最常见的一种范式,如果需要整合附加信息(图像、文本、语音、视频等)会采用CNN、RNN模型来提取相关信息。
2、从推荐系统的预测目标来思考
从推荐系统作为机器学习任务的目标来看,推荐系统是为用户推荐用户可能感兴趣的标的物,一般可以分为预测评分、排序学习、分类等三类问题,下面分别介绍。
(1)推荐作为评分预测问题
我们可以通过构建机器学习模型来预测用户对未知标的物的评分,高的评分代表用户对标的物更有兴趣,最终根据评分高低来为用户推荐标的物。这时推荐算法就是一个回归问题,经典的协同过滤算法(如矩阵分解)、logistic回归推荐算法都是这类模型,以及基于经典协同过滤思路发展的深度学习算法也是这类模型。
由于在真实产品中用户对标的物评分数据非常有限,因此隐式反馈是比用户评分更容易获得的数据类型,所以采用评分预测问题来构建深度学习推荐系统的案例及文章会比较少。深度学习需要大量的数据来训练好的模型,因此也期望数据量足够大,所以利用隐式反馈数据是更合适的。
(2)推荐作为排序学习问题
可以将推荐问题看成排序学习(Learning to Ranking)问题,采用信息抽提领域经典的一些排序学习算法(point-wise、pair-wise、list-wise等)来进行建模。
(3)推荐作为分类问题
将推荐预测看成是分类问题是比较常见的一种形式,既可以看成二分类问题,也可以看成多分类问题。
对于隐式反馈,我们用0和1表示标的物是否被用户操作过,那么预测用户对新标的物的偏好就可以看成一个二分类问题,通过输出层的logistic激活函数来预测用户对标的物的点击概率。这种将推荐作为二分类问题,通过预测点击概率的方式是最常用的一种推荐系统建模方式。wide & deep模型就是采用这样的建模方式。
我们也可以将推荐预测问题看成一个多分类问题,每一个标的物就是一个类别,有多少个标的物就有多少类,一般标的物的数量是巨大的,所以这种思路就是一个海量标签(label)分类问题。我们可以通过输出层的softmax激活函数来预测用户对每个类别的“分量概率”,预测用户下一个要点击的标的物就是分量概率最大的一个标的物。下面要讲到的YouTube深度学习中的召回阶段采用的就是这种建模方式。
3、根据推荐算法的归类来思考
从推荐算法最传统的分类方式来看,推荐算法分为基于内容的推荐、协同过滤推荐、混合推荐等三大类。
(1)基于内容的推荐
基于内容的推荐,会用到用户或者标的物的metadata信息,基于该metadata信息来为用户做推荐,这些metadata信息主要有文本、图片、视频、音频等,一般会用CNN或者RNN从metadata中提取信息,并基于该信息做推荐。
(2)协同过滤推荐
协同过滤只依赖用户的行为数据,不依赖metadata数据,因此可以在更多更广泛的场景中使用,它也是最主流的推荐技术。绝大多数深度学习推荐系统都是基于协同过滤思路来推荐的,或者至少包含部分协同过滤的模块在其中。
(3)混合推荐
混合推荐就是混合使用多种模型进行推荐,可以混合使用基于内容的推荐和协同过滤推荐,或者混合多种内容推荐、混合多种协同过滤推荐等。wide & deep模型中wide部分可以整合metadata信息,deep部分类似协同的思路,因此也可以认为是一种混合模型。