AI内参_81_078_基于深度学习的推荐模型之三利用深度学习来扩展推荐系统
你好,我是洪亮杰。
今天我和你分析的主题是基于深度学习的推荐模型之三,利用深度学习来扩展推荐系统。
这周我们主要讨论如何利用深度学习来提升推荐系统的精度。
我们分别介绍了使用RBM受限波斯曼机来对推荐系统建模和RNN递归神经网络在推荐系统中的应用。
今天我们最后来看一看,还有哪些深度学习的思潮在影响着推荐系统,这些思想都是一些值得关注和学习的方向。
虽然这些方法能否在短时间内成为主流,还有待检宝。
我先来介绍。
多层神经网络深度学习,开始从计算机视觉这一人工智能子领域慢慢向其他领域扩展。
在这个大背景下,很多学者和实践者总结出了深度学习获得成功的一大法宝,那就是能够从众多的信息中学习到高维度的特性。
比如,在计算机视觉里,通过多层神经网络建立的深度学习模型,往往能够识别出类似边角形状的视觉概念。
于是大家就形成了这样一个普遍认识。
多层神经网络是一种提取特性的利器,和很多其他领域的思路一样,在推荐领域的学者也开始尝试利用多层神经网络对用户和物品的信息进行提取。
这里面比较经典的思路是直接利用多层神经网络来尝试。
我们之前已经讲过的基于矩阵分解的推荐模型。
在矩阵分解的例子里,我们学习到的是用户的隐变量和物品的隐变量。
这两者的点击成为评分的预测结果。
在这个模型框架里,可以认为用户的隐变量和物品的隐变量是我们从数据中提取的特性信息。
只不过,这种特性的提取是一种线性变换,而深度学习模型寻求的是多层次的非线性变换。
通常多层神经网络提取用户和物品特性的基本思路是这样的。
首先我们的输入信息是用户的ID以及物品的ID.这里我们可以认为ID是高维的离散输入。
那么根据这个输入信息,我们分别对用户和物品构建多层神经网络。
这里比较常见的是至少有一层的神经网络,可以把离散的输入转换成为连续的数据层。
通常我们把这一层叫做嵌入层,嵌入层的基本信息是希望能够把离散信息转换成为连续信息,并且这些连续信息携带着语义上面的相似。
什么意思呢?就是说如果两个用户是相似的,或者两个物品是相似的,那么我们就会寄希望于他们的嵌入层在数值上相近,这样嵌入层就能够很好的捕捉到用户和物品的相似度。
当用户和物品两边分别得到了嵌入层以后,输入信息已经完全变成了连续数据信息。
通常的做法是把两边的嵌入层拼接在一起,也有把两个嵌入层取加权平均的做法,形成一个大的嵌入层。
这个新的拼接层就成为连接了用户信息和物品信息的输入。
然后接下来要做的就是对这个新的输入进行多层的神经网络变换,最后输出我们对评分的预测。
总而言之,直接利用多层神经网络对用户和物品的建模,可以简单归纳为两步。
首先把离散的ID信息转换成为连续的信息,形成嵌入层,然后利用多层神经网络对嵌入层进行变换,并最后输出预测结果。
虽然利用多层神经网络在推荐系统上可以算是非常直观,然而在实际的效果中,我们其实并没有发现。
利用多层神经网络比矩阵分解要更好,如何能够更加有效的利用多层神经网络,目前还是一个研究方向。
除了直接利用多层神经网络来对推荐系统进行建模以外,最近也有不少把深度学习中其他思潮应用到推荐系统中的尝试。
我们在这里也简单提及一些。
首先,在深度学习领域,有一个技术叫做自动编码器。
这个方法的核心思想就是希望能够无监督化的学习到某种信号的编码后的信息。
并且编码后的信息能够再次通过解码,尽可能的还原最初的信号。
如果我们能够找到这样完美的过程,那么在这个方法的假设里,我们就获取了更有价值的特性信息。
于是,把自动编码器思想应用到推荐系统的尝试,主要就是对用户以及物品进行编码。
需要指出的是,我们刚才提到的直接使用多层神经网络的方法,其实也是某种意义上的编码。
但我们这里提到的自动编码器的思想,还强调能够从学习到的隐含信息中还原最初的信息,也就是尽可能保持学习到的隐含变量的可还原性,这一点是多层神经网络所不具备的。
关于自动编码器的基础细节,文末我列出了一篇推荐阅读文章,是王天一教授人工智能基础课专栏里的一篇讲的比较详细。
如果你感兴趣,可以打开文稿,阅读回到深度学习模型。
另外一个就是CNN卷积神经网络的应用学者和工程人员,希望借助CNN来对用户和物品进行建模,从而扩展推荐系统的表现力。
目前,CNN在计算机视觉领域占据着举足轻重的地位,因此很多人都希望能够直接把CNN的成功借鉴到推荐系统中和。
刚才我们介绍的直接使用多层神经网络建模的思路非常类似,一种常见的做法也是直接利用CNN来提取用户和物品的信息。
通常的做法就是在我们刚才所说的嵌入层之后,不直接使用多层神经网络了,而是使用CNN来对嵌入层之后的信息进行变换。
这里其实并没有太多创新的地方,基本上就是把视觉里面的模型拿来直接使用。
关于其他深度学习模型,我们就说到这里不做太多的介绍。
原因是从总体上来看,深度学习在推荐系统上的应用还是技术大于实际效果,目前并没有在太多的应用上有真正令人说服的成功案例。
大多数情况是技术人员希望尝鲜,然后把一些成功的模型照搬到推荐任务上,包然效果也不差,但从大的贡献来说,并没有太大的创新。
今天,我们继续讨论了如何利用深度学习模型来对推荐系统进行建模。
我们聊了如何把深度学习的思路嫁接到推荐系统的开发中来,一起来回顾一下要点。
第一,我们聊了一种最简单的应用,就是直接利用多层神经网络来对推荐系统进行扩展。
第二,我们聊了一些其他的深度学习的思路,包括自动编码器和CNN.简单讨论了如何把这些深度学习模型应用到推荐系统中,随后给你留一个思考题,深度学习模型在推荐领域应用的最大效果或者说最大挑战是什么呢?欢迎你给我留言,和我一起讨论。