078|基于深度学习的推荐模型之三:利用深度学习来扩展推荐系统
2018-04-13洪亮劼来自北京
《AI技术内参》
这周,我们主要讨论如何利用深度学习来提升推荐系统的精度。我们分别介绍了使用RBM
(RestrictedBoltzmannMachines,受限波兹曼机)来对推荐系统建模,和RNN
(RecurrentNeuralNetwork,递归神经网络)在推荐系统中的应用。
今天,我们最后再来看一看,还有哪些深度学习的思潮在影响着推荐系统。这些思想都是一些
值得关注和学习的方向,虽然这些方法能否在短时间内成为主流还有待检验。
多层神经网络
深度学习开始从计算机视觉这一人工智能子领域慢慢向其他领域扩展,在这个大背景下,很多
学者和实践者总结出了深度学习获得成功的一大法宝,那就是能够从众多的信息中学习到高维
度的特性(Feature)。比如,在计算机视觉里,通过多层神经网络建立的深度学习模型往往
能够识别出类似“边”、“角”、“形状”等视觉概念。于是,大家就形成了这样一个普遍认
识:多层神经网络是一种提取特性的利器。
和很多其他领域的思路一样,在推荐领域的学者也开始尝试利用多层神经网络对用户和物品的
信息进行提取。这里面比较经典的思路是:直接利用多层神经网络,来尝试我们之前已经讲过
的基于矩阵分解的推荐模型。
在矩阵分解的例子里,我们学习到的是用户的隐变量和物品的隐变量。这两者的点积成为评分
的预测结果。在这个模型框架里可以认为,用户的隐变量和物品的隐变量是我们从数据中提取
的特性信息。只不过,这种特性的提取是一种线性变换,而深度学习模型寻求的是多层次的非
线性变换。
利用多层神经网络提取用户和物品特性的基本思路是这样的。
首先,我们的输入信息是用户的ID以及物品的ID。这里我们可以认为ID是高维的离散输
入。那么,根据这个输入信息,我们分别对用户和物品构建多层神经网络。这里比较常见的是
至少有一层的神经网络,可以把离散的输入转换成为连续的数据层。
通常我们把这一层叫作“嵌入层”(Embedding)。嵌入层的基本思想是希望能够把离散信
息转换成为连续信息,并且这些连续信息携带着“语义”(Semantic)上面的相似。什么意
思呢?就是说如果两个用户是相似的,或者两个物品是相似的,那么我们就会寄希望于他们的
嵌入层在数值上相近,这样嵌入层就能够很好地捕捉到用户和物品的相似度。
当用户和物品两边分别得到了嵌入层以后,输入信息已经完全变成了连续数据信息,通常的做
法是把两边的嵌入层拼接在一起(也有把两个嵌入层取加权平均的做法),形成一个大的嵌入
层。这个新的拼接层就成为连结了用户信息和物品信息的输入。
然后,接下来要做的,就是对这个新的输入进行多层的神经网络变换,最后输出我们对评分的
预测。
总而言之,直接利用多层神经网络对用户和物品的建模可以简单归纳为两步:首先,把离散的
ID信息转换成为连续的信息,形成嵌入层;然后,利用多层神经网络对嵌入层进行变换,并
最后输出预测结果。
虽然利用多层神经网络在推荐系统上可以算是非常直观,然而在实际的效果中,我们其实并没
有发现利用多层神经网络比矩阵分解要更好。如何能够更加有效地利用多层神经网络目前还是
一个研究方向。
其他深度学习模型
除了直接利用多层神经网络来对推荐系统进行建模以外,最近也有不少把深度学习中其他思潮
应用到推荐系统中的尝试。这里我也简单提及一些。
首先,在深度学习领域有一个技术叫作“自动编码器”(Autoencoder)。这个方法的核心
思想就是希望能够无监督化地学习到某种信号的编码后的信息,并且编码后的信息能够再次通
过解码尽可能地还原最初的信号。如果我们能够找到这样完美的过程,那么,在这个方法的假
设里,我们就获取了更有价值的特性信息。
于是,把自动编码器思想应用到推荐系统的尝试,主要就是对用户以及物品进行编码。需要指
出的是,我们刚才提到的直接使用多层神经网络的方法,其实也是某种意义上的编码,但我们
这里提到的自动编码器的思想,还强调能够从学习到的隐含信息中还原最初的信息,也就是尽
可能保持学习到的隐含变量的可还原性。这一点是多层神经网络所不具备的。
另外一个就是CNN(卷积神经网络)的应用,学者和工程人员希望借助CNN来对用户和物
品进行建模,从而扩展推荐系统的表现力。目前CNN在计算机视觉领域占据着举足轻重的地
位,因此,很多人都希望能够直接把CNN的成功借鉴到推荐系统中。
和刚才我们介绍的直接使用多层神经网络建模的思路非常类似。一种常见的做法也是直接利用
CNN来提取用户和物品