一种基于能量模型的神经网络架构受限玻尔兹曼机

电子说

1.3w人已加入

描述

受限玻尔兹曼机是一种基于能量模型的神经网络架构,虽然不像通常的卷积神经网络一样被人熟知,但近年来在推荐系统中受到了越来越多的关注,在协同过滤推荐等领域表现出越来越重要的作用。在这篇文章中,我们将从基础理论和基本结构方面梳理受限玻尔兹曼机的原理,以便对受限玻尔兹曼机(RBM: Restricted Boltzmann Machine)有更深的了解。

最典型的受限玻尔兹曼机如下图所示,在两层简单的结构中分布式的输入的可见层(visible layer)和隐含层结构。

和通常的前馈神经网络不同的是,受限玻尔兹曼机可以通过可见层的状态预测对应隐含层的状态,相反亦可以由隐含层预测可见层对应单元的状态。同时,它与玻尔兹曼机不同在于同一层内的单元之间没有相互连接。

能量模型

为了更好地理解RBM是如何工作的,我们需要引入基于能量的模型来进行解释。在重力场中,不同高度的物体具有不同的重力势能,我们可以利用能量来描述物体所具有潜在做功的能力。基于这样的启发,科学家们将这一观点应用到深度学习中,来度量模型质量。

深度学习模型的目的之一便是对变量之间的依赖关系进行编码,将变量组合与一个标量能量联系起来,而这一能量就作为模型能力的度量。通常情况下,较小的能量意味着更加合理的变量组合。所以基于能量的模型在训练过程中会不断最小化事先定义好的能量函数从而实现变量间的最优组合,RBM的能量函数定义为如下的形式:

可以看到能量函数与可见层、隐含层的状态以及对应的权重和偏置都有关系。RBM的训练过程就是最小化这一能量函数的过程。

概率模型

RBM同时也是一种典型的概率模型,模型中的状态通过概率来表示。在每一个时间点上受限玻尔兹曼机的状态由可见层和隐含层单元决定,其可被观测到的状态可由以下联合概率分布来表示:

其中p为可见层和隐藏层的联合概率分布函数,Z为配分函数,用于表示系统所有可能的状态。这一联合概率分布在物理上就是著名的玻尔兹曼分布——在给定能量E上粒子在某个状态上被观测到的概率。但由于Z中h和v的组合情况十分庞大,使得这一联合概率分布难以计算,但幸运的是对于对于给定隐含层或者可见层状态下的概率却是更加容易计算的:

需要注意的是在RBM中每一个单元都是0/1的二值状态,实际使用中通常会计算出每个单元处于1,也就是被激活的概率。在给定可见层v的条件下,隐含层单元j被激活的概率可以写成下图的表示,同样给定隐含层的状态下,可见层单元i的概率也可以被写成下面的表示形式。

上式通过前述的条件概率推导得到,求得的值为对应单元取1激活的概率。其中σ是Sigmoid函数。

训练

RBM的训练与通常神经网络的训练有很大的区别,研究人员们使用了吉布斯采样(Gibbs Sampling)和对比散度(Contrastive Divergence,CD)两个数学手段来对训练过程进行处理。简单来说吉布斯采样利用了上述的条件概率公式,通过输入v可以计算得到隐含层的条件概率h,随后根据这一h反过来预测输入层的值v,经过k次迭代后的输出vk分布将会收敛于v0的分布,从而得到了可见层的联合概率。

为了更新权重,还需要计算出每次训练过后误差,这时候就需要使用对比散度来进行计算:

基于RBM的协同过滤系统

在推荐系统中RBM常常被用于识别数据的隐含因素。例如在电影推荐系统中,人们常常将不同的电影按照不同的潜在变量进行分析,例如速度与激情会被归并到动作片里,而玩具总动员和瓦力则会更多的包含皮克斯的因素。模型通过对用户打分数据进行学习,在多个循环后将得出用户的个性化偏好以及用户群体的整体偏好。

在电影推荐的例子中,受限玻尔兹曼机面对的数据是二进制的0/1而不是连续的打分数据。这意味着用于对于电影的评价要么是喜欢(1)要么是不喜欢(0)。这些评价值作为输入层/可见层被送入模型。在给定的数据下,RBM会发掘数据中能解释用户偏好的隐含因素,并在隐含层中用不同的单元表示出来。

图中是一个用户对于几部电影评分的简单例子,其中霍比特人由于用户没有评分,数据中使用-1来标注,由于电影的数量庞大,某个用户只对小部分电影进行了评价,需要告诉模型哪些是没有用户评价的输入从而可以忽略这些因素的影响。

上图就对应了给定可见层状态,求出隐含层单元激活概率的情况。图中可以看出只有Fantasy类型是被激活的,在给定用户评分的情况下,RBM正确地识别出这一用户喜欢的类型更多的偏向于科幻电影。

在另一种情况下,在知道了用户的偏好后(hidden),如果要为用户推荐电影(visible)就可以利用已知隐含层求得可见层单元被激活的条件概率,从而为用户推荐偏好类型的电影。

上图中可以看到,RBM计算出被激活的电影除了输入数据中指环王和哈利波特,还为用户推荐了原来没有看过的霍比特人。模型认为喜欢科幻的用户很有可能也喜欢霍比特人。

总结来看,在推荐系统中使用RBM主要分为以下几个步骤:

1.在所有用户数据上训练模型;

2.使用特定用户的数据来进行预测;

3.得到隐含层的激活情况;

4.基于隐含层的激活来计算输出层的激活情况;

5.可见层的新激活单元表示了用户对未看过的电影/节目/音乐的评价,并选取其中大概率的激活单元向用户推荐。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分