能量模型(EBM)、限制波尔兹曼机(RBM)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chlele0105/article/details/17309491

在介绍EBM(Energy Based Model)和BM(Boltzmann Machines)之前,我们先来了解一下产生式模型(generative model)和判别式模型(discriminative model)的区别

产生式模型:用来估计联合概率P(x,y), 因此可以根据联合概率来生成样本,如HMM

判别式模型:用来估计条件概率P(y|x),因为没有x的知识,无法生成样本,只能判断分类,如SVM,CRF,MEM(最大熵)

举例:

(1,0),(1,0), (2,0), (2, 1)
产生式模型:

P(x,y):    P(1, 0) = 1/2, P(1, 1) = 0, P(2, 0)= 1/4, P(2, 1) = 1/4.

判别式模型:
P(
y|x):    P(0|1) = 1, P(1|1) = 0, P(0|2) =1/2, P(1|2) = 1/2


基于能量的模型和波尔兹曼机


由于深度置信网络(Deep Belief Networks,DBN)是基于限制性玻尔兹曼机(Restricted Boltzmann Machines,RBM)的深层网络结构, 所以本文重点讨论一下玻尔兹曼机(BM),以及它的学习算法——对比散度(Contrastive Divergence,CD)算法。在介绍BM前,我们首先介绍一下 基于能量的模型(Energy Based Model,EBM),因为BM是一种特殊的EBM。

1. 基于能量的模型(EBM)

基于能量的模型是一种具有普适意义的模型,可以说它是一种模型框架,在它的框架下囊括传统的判别模型和生成模型,图变换网络(Graph-transformer Networks),条件随机场,最大化边界马尔科夫网络以及一些流形学习的方法等。EBM通过对变量的每个配置施加一个有范围限制的能量来捕获变量之间的依赖 关系。EBM有两个主要的任务,一个是推断(Inference),它主要是在给定观察变量的情况,找到使能量值最小的那些隐变量的配置;另一个是学习(Learning), 它主要是寻找一个恰当的能量函数,使样本中正确的输入输出的能量 比错误的输入输出的能量低

基于能量的模型(EBM)把我们所关心变量的各种组合和一个标量能量联系在一起。我们训练模型的过程就是不断改变标量能量的过程,因此就有了数学上期望的意义。比如,如果一个变量组合被认为是合理的,它同时也具有较小的能量。基于能量的概率模型通过能量函数来定义概率分布:


其中Z为规整因子,

基于能量的模型可以利用使用梯度下降或随机梯度下降的方法来学习,具体而言,就是以训练集的负对数作为损失函数,

其中θ为模型的参数,将损失函数对θ求偏导,

即得到损失函数下降最快的方向。

包含隐单元的EBMs

在很多情况下,我们无法观察到样本的所有属性,或者我们需要引进一些没有观察到的变量,以增加模型的表达能力,这样得到的就是包含隐含变量的EBM,


其中h表示隐含变量。在这种情况下,为了与不包含隐含变量的模型进行统一,我们引入如下的自由能量函数,

这样P(x)就可以写成,

此时,损失函数还是类似的定义,只是在进行梯度下降求解时稍微有些不同,
   (8)
该梯度表达式中包含两项,他们都影响着模型所定义的分布密度:第一项增加训练数据的概率(通过减小对应的自由能量),而第二项则减小模型 生成的样本的概率。

通常,我们很难精确计算这个梯度,因为式中第一项涉及到可见单元与隐含单元的联合分布,由于归一化因子Z(θ)的存在,该分布很难获取。 我们只能通过一些采样方法(如Gibbs采样)获取其近似值,其具体方法将在后文中详述。

2. 玻尔兹曼机

波尔兹曼机是Hiton和Sejnowski于1986年提出的一种根植于统计力学的随机神经网络。这种网络中的神经元是随机
神经元,神经元的输出只有两种状态(未激活、激活),一般用二进制的0和1表示,,状态的取值根据概率统计法则决定。从功能上讲,BM是由随机神经元全连接组成的反馈神经网络,且对称连接,无自反馈,如图(1)所示

图 1
包含一个可见层和一个隐层的BM模型如图2(a)所示

图 2

BM具有强大的无监督学习能力,能够学习数据中复杂的规则。但是,拥有这种学习能力的代价是其训练/学习时间非常长。此外,不仅无法确切地计算BM所表示的分布,甚至得到服从BM所表示分布的随机样本也很困难。为克服此问题,Sejnowski引入了一种限制的波尔兹曼机(RBM)。RBM具有一个可见层,一个隐层,层内无连接,其结构如图2(b)所示。Roux和Bengio从理论上证明昬只要隐单元的数目足够多,RBM能够拟合任意离散分布。

3. 限制性玻尔兹曼机

玻尔兹曼机(Boltzmann Machine,BM)是一种特殊形式的对数线性的马尔科夫随机场(Markov Random Field,MRF),即能量函数是自由变量的线性函数。 通过引入隐含单元,我们可以提升模型的表达能力,表示非常复杂的概率分布。

限制性玻尔兹曼机(RBM)进一步加一些约束,在RBM中不存在可见单元与可见单元的链接,也不存在隐含单元与隐含单元的链接,如下图所示

RBM的能量函数E(v,h)定义为,
E(v,h)=bvchhWv.
其中’表示转置,b,c,W为模型的参数,b,c分别为可见层和隐含层的偏置,W为可见层与隐含层的链接权重。此时,对应的自由能量为,

另外,由于RBM的特殊结构,可见层/隐含层内个单元之间是相互独立的,所以我们有,

使用二值单元的RBM

如果RBM中的每个单元都是二值的,即有vj,hi{0,1},我们可以得到,


而对应的自由能量函数为,

使用梯度下降法求解模型参数时,各参数的梯度值如下[2],

4. RBM的学习

前面提到了,RBM是很难学习的,即模型的参数很难确定,下面我们就具体讨论一下基于采样的近似学习方法。学习RBM的任务是求出模型的参数 θ={c,b,W}的值。

4.1 Gibbs采样

Gibbs采样是一种基于马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,MCMC)策略的采样方法。对于一个K为随机向量X=(X1,X2,,XK), 假设我们无法求得关于X的联合分布P(X),但我们知道给定X的其他分量时,其第k个分量Xk的条件分布,即P(Xk|Xk),其中Xk=(X1,X2,,Xk1,Xk+1,,XK),那么,我们可以从X的一个任意状态(比如[x1(0),x2(0),,xK(0)])开始,利用上述条件 分布,迭代的对其分量依次采样,随着采样次数的增加,随机变量[x1(n),x2(n),,xK(n)]的概率分布将以n的几何级数的速度收敛于X的联合 概率分布P(X)。也就是说,我们可以在未知联合概率分布的条件下对其进行采样。

基于RBM的对称结构,以及其中神经元状态的条件独立性,我们可以使用Gibbs采样方法得到服从RBM定义的分布的随机样本。在RBM中进行k步Gibbs采样的具体 算法为:用一个训练样本(或可见层的任何随机化状态)初始化可见层的状态v0,交替进行如下采样:


在经过步数k足够大的情况下,我们可以得到服从RBM所定义的分布的样本。此外,使用Gibbs采样我们也可以得到式⑧中第一项的近似。

4.2 对比散度算法

尽管利用Gibbs采样我们可以得到对数似然函数关于未知参数梯度的近似,但通常情况下需要使用较大的采样步数,这使得RBM的训练效率仍然不高,尤其是当观测数据 的特征维数较高时。2002年,Hinton[4]提出了RBM的一个快速学习算法,即对比散度(Contrastive Divergence,CD)。实践证明,对比散度(CD)是一种成功的用于求解对数似然函数关于未知参数梯度的近似的方法。

与Gibbs采样不同,Hinton指出当使用训练数据初 始化v0时,我们仅需要使用k(通常k=1)步Gibbs采样变可以得到足够好的近似。在CD算法一开始,可见单元的状态被设置成一个训练样本,并利用式⑪第一个式子 来计算所有隐层单元的二值状态,在所有隐层单元的状态确定了之后,根据式⑪第二个式子来确定第i个可见单元vi取值为1的概率,进而产生可见层的一个重构 (reconstruction)。然后将重构的可见层作为真实的模型代入式⑬各式中第一项,这样就可以进行梯度下降算法了。

在RBM中,可见单元一般等于训练数据的特征维数,而隐层单元数需要事先给定,这里设可见单元数和隐单元数分别为nm,令W表示可见层与隐层间的链接权重 矩阵(m×n阶),a(n维列向量)和b(m维列向量)分别表示可见层与隐层的偏置向量。

RBM的基于CD的快速学习算法主要步骤如下:


上述基于CD的学习算法是针对RBM的可见单元和隐层单元均为二值变量的情形,我们可以很容易的推广到可见单元和隐单元为高斯变量的情形。


当使用RBM解决分类任务时,最常见的做法是将RBM视为一个特征提取器,使用观测数据(忽略类别标签)训练RBM,然后用训练好的RBM的隐单元的激活概率和原有的类别标签组成心得训练集,进而使用其他的分类算法训练分类器。

5. 关于深度信念网络(DBN)的学习

一个DBN模型被视为由若干个RBM堆叠在一起,训练时可通过由低到高逐层训练这些RBM来实现

(1)底部RBM以原始输入数据训练

(2)将底部RBM抽取的特征作为顶部RBM的输入训练

(3)过程(1)和(2)可以重复来训练所需要的尽可能多的层数

由于RBM可以通过CD快速训练,这一框架绕过了直接从整体上训练DBN的高复杂度,从而将其化简为对多个RBM的训练问题。经过这种方式训练后,可以再通过传统的全局学习算法,如反向传播算法,对网络进行微调,从而使模型收敛到局部最优点。这种学习算法,本质上等同于先通过逐层RBM训练将模型的参数初始化为较优的值,再通过少量的传统学习算法进一步训练。这样一来,不仅解决了模型训练速度慢的问题,大量试验结果也表明,这种方式能够产生非常好的参数初始值,从而大大提升了模型的建模能力。


关于能量函数和概率公式的推导,可以参考 http://blog.csdn.net/mytestmy/article/details/9150213

References

1) Learn Deep Architectures for AI.

2) 受限波尔兹曼机简介. 张春霞. 

3) http://www.cnblogs.com/Iknowyou/p/3633073.html

4) Training Products of experts by minimizing contrastive divergence. GE Hinton.

展开阅读全文

没有更多推荐了,返回首页