受限玻尔兹曼机(RBM)

这两天跟人讨论起说在DL中用DBN的,而DBN就是用不少RBM叠加起来的,想起之前看到的RBM,只是粗略看了下,没有仔细研究,算法

如今正好借这个机会好好研读一番。网络

玻尔兹曼机(BM)函数

波尔兹曼机(Boltzmann Machine, BM)是Hiton(是的,Hiton大牛)和Sejnowski 于1986年基于统计力学提出的神经网络,这种网络中的神经元是随机神经元,神经元的输出只有两种状态(激活和未激活),通常用二进制0或1表示。以下图所示:学习

受限玻尔兹曼机(RBM):spa

BM具备强大的无监督学习能力,可以学习数据中复杂的规则。可是训练时间过长,另外其几率分布很难得到,为了克服这一个问题,Smolensky引入一个受限玻尔兹曼机(Restricted Boltzmann Machine,RBM),以下图所示:blog

能够看到,隐层和可见层在层内是无链接的。这样,当给定了可见层状态时,隐层个单元的激活状态是相互独立的,反之,给定隐层状态,各可见层单元的状态也是相互独立的。这样能够用Gibbs采样逼近其几率分布。ip

前面说到,BM是基于统计力学来的,首先介绍其能量函数:get

这里,vh表明可见层和隐层的状态向量。ai,bj和Wij为三个实数参数,分别表示可见层i单元的偏置项,隐层j单元偏置项,可见层i单元和隐层j单元的链接权重。其中:it

基于此能量函数,能够获得vh的几率分布:ast

其中Z(θ)是归一化因子。

学习:

学习RBM的任务固然是求出最优参数θ,能够经过最大化在某个训练集上的对数似然函数来求得:

其中t是训练样本标记(t∈(1,T))T为训练样本总数。

其中L(Θ):

为了求最优Θ*,能够用随机梯度法求L(θ)的最大值,关键就是求梯度,即L(Θ)对各个参数的偏导数:

其中<.>P表示求关于P的分布。显然,第一项的边缘分布P(h|v(t),θ)是在训练样本已知的状况下求相对的隐层的分布,比较容易计算。第二项是联合分布,不容易求,可是能够经过Gibbs采样来逼近。值得指出的是在最大化似然函数的过程当中,为加快速度,上述偏导数在每一迭代步中的计算通常只基于部分而非全部的训练样本进行。假设只有一个训练样本,对数似然函数对于三个参数Wij,ai和aj的偏导数:

其中data和model分别是对上面两项分布的简写。

Gibbs采样:

 因为RBM模型的对称性及各层间神经元状态的独立性,能够用Gibbs采样获得服从RBM定义的分布的随机样本。在RBM中进行k步Gibbs采样的具体算法:用一个训练样本(或者可见层的任何随机化状态)初始化可见层状态v0,交替进行以下采样:

这样能够获得一个联合分布的近似。

基于对比散度(CD)的快速学习算法:

 CD(Contrastive Divergence)法是Hiton在2002年提出的一个快速学习算法。不一样于Gibbs采样,当使用训练数据初始化v0时,只须要k(一般k=1)步Gibbs采样便可获得足够好的近似。

算法基本流程以下:

 参考文献:

  1. Wikipedia: Restricted Boltzmann Machine

  2. 张春霞, 姬楠楠, 王冠伟. 受限玻尔兹曼机简介.

相关文章
相关标签/搜索