AI内参_79_076_基于深度学习的推荐模型之一受限波兹曼机
你好,我是洪亮杰。
今天我和你分享的主题是基于深度学习的推荐模型之一。
受限波兹曼机这几周我们进入专栏里一个比较大的模块,那就是推荐系统。
上周我们谈了现代推荐系统的架构体系,帮助你在宏观上对推荐系统的构建有一个更加完整的认识。
这周我们主要来看在推荐系统研究领域里一个比较前沿的话题,那就是如何利用深度学习来提升推荐系统的精度。
今天我们首先来看一篇经典的文章,受限波兹曼机进行协同过滤。
这篇文章尝试使用受限波兹曼机简称RBM来对推荐系统进行建模。
这应该是最早把深度学习应用到推荐建模的典范。
从严格意义上讲,RBM自身并不是深度模型。
在早期,对于RBM的使用上,也并没有将其累加到很多层,从而形成深度RBM.但是从建模思路上来说,有一层RBM到多层RB, BM的扩展其实是非常直接的。
因此,了解RBM的基本思路,对于后面理解推进系统中如何利用深度学习模型进行建模,是很有帮助的。
今天我们要介绍的文章发表于二零零七年的国际机器学习大会。
Icml上作者群是鲁斯兰,萨拉胡特蒂诺夫安德烈尼哈以及杰弗里辛顿辛顿在近日常常被称作深度学习之父。
他不仅算是波斯曼基的重要发明人和推动者之一,也和其学生一起把RBM应用到各类数据上,比如RBM在推荐领域的尝试。
二零零七年的时候,net felix大赛如火如荼。
很多学者都希望把各种模型和思路应用到这个比赛中。
而在这个大赛中有三个重要的思想脱颖而出,影响了后来推荐系统的研究发展。
这三个思想分别是,一基于矩阵分解的模型。
二基于RBM的模型。
三利用集成学习,把大量不同的模型整合起来。
由此可见,RBM对于推荐系统的尝试,在当时是非常有新意的。
第一,作者鲁斯兰,当时在多伦多大学攻读计算机博士,跟随星顿研究深度学习模型。
另外一篇他当时做的工作是把贝叶斯矩阵分解利用到neck felix大赛中和。
我们今天讨论的这篇论文一起,都是他在博士阶段对于推荐系统这个领域所做的重要贡献。
目前鲁斯兰在卡内基梅隆大学任教,并兼任苹果公司的人工智能总监一职。
那什么是RBM呢?简单说来,RBM就是由一层隐单元和一层显单元组成的神经网络结构。
通常情况下,显单元和隐单元这两层之间是完全连通的。
也就是说,对于每一个显单元来说,它都和所有的隐单元连接到一起。
每个隐单元和显单元自身都有一个权重,并且在每对隐单元和显单元之间的链接上还有一个权重,所有这些权重都是需要通过训练学习的未知参数。
举例来说,如果我们有三个显单元五引单元,那么我们就有三个权重对应三个显单元,有五个权重对应五个引单元,然后有十五个连接权重。
这样算下来,一共是二十三个权重,RBM可以针对高斯信号,也就是实数信息以及伯努利或者二项分布信号,也就是离散信息进行建模。
当我们对RBM有了一个基本的了解之后,我们来看RBM是怎么应用到推荐系统上的。
为了讲解方便,我们这里使用netfillix的例子,也就是对用户为电影打分进行建模。
首先对于每一个用户,我们使用一个单独的RBM来对这个用户进行建模。
只不过每一个RBM都有一样的影单元数量。
在建模的时候,每一个RBM仅仅对当前这个用户曾经打过分的数据进行建模。
也就是说,每一个RBM需要建模的数据是不一样的。
有的用户对三个电影打过分,有的对十个电影打过分。
你可以设想一下,在这样的情况下,整个模型是什么意思?每个用户有一个独立的RBM,这个RBM负责对这个用户的电影集合进行建模。
很显然这些RBM互相没有关联。
那怎么把每个用户的RBM给联系起来呢?作者们做了这样的假设,也显然每个RBM的影单元是不一样的。
这其实可以代表学习到的用户的偏好。
但是如果两个用户对同一个电影打过分,那么针对这个电影两个不同的IBM会共享一样的权重,这就是联系两个IBM的核心思想。
也就是说,利用IBM对用户电影推荐的核心是共享相同电影的权重。
具体说来,每一个显单元都是用户对于某个电影的评价。
这里每个显单元都是一个k维的数组,其中只有一个元素是一,其他都是零。
这种二元的数组表达帮助模型,来对用户对于有k种可能的输出进行建模。
引单元在这篇论文中也是二元的。
只不过我们实先并不知道引单元的取值和刚才介绍的一样。
在这样的模型里需要学习的参数,包括显单元的权重,引单元的权重,以及他们之间关系的权重。
同一个电影的权重是共享的,每个用户都有一个单独的RBM,并且我们在RBM里只对已经评过分的电影进行建模。
因此,这个模型并不能直接对未知的电影评分进行预测。
需要预测的时候,我们其实是先拿到这个电影的权重。
然后看我们把这个k维的评分数组设置成哪种情况的时候,产生的概率是最大的。
也就是说,我们尝试把对于未知的电影评分设置成不同情况,取出现可可能性最大的那种评分作为预测结果。
很明显,这样做的计算效率并不高。
文章中也介绍了如何加速,我们这里就不复述了。
Rbm对于推荐系统的建模看上去很简单,但是难点却是如何学习这些未知的权重。
总体说来,RBM无法直接使用类似最大似然法或者递归下降的方法来对参数进行学习。
这其实也是阻碍这类方法广泛使用的一个重要障碍。
在最初的论文里,作者们提出了一个重d方法。
这种方法其实是一种简化的MCMC方法,用于对RBM进行采样,CD方法具体是如何实现的。
我们这里就不展开了。
在net pillix的数据集上,RBM展现了惊人的效果。
不仅能够很轻松的击败net pillix的自身算法基线,还比当时提出的单纯的矩阵分解方法。
要更加优秀,基于此后来就有了很多RBM的扩展工作。
这周我来为你讲解,利用推荐系统的一个重要的问题,就是如何利用深度学习模型来对推荐系统进行建模。
今天我们聊了一个最基本的深度学习模型,受限布斯曼机讨论了如何将其应用在推荐系统中一起来回顾一下要点。
第一,我们介绍了什么是受限布斯曼机。
第二,我们讨论了如何把受限布斯曼机应用到推荐场景中,最后给你留一个思考题。
如果希望在受限布斯曼机里增加其他信息,比如各种用户信息或者电影信息,我们该如何做呢?欢迎你给我留言,和我一起讨论。