最近在看Hinton的论文,他的深度置信网络用的是受限玻尔兹曼机(RBN),这里简单介绍下RBM,内容基本来源于他的论文A practical guide to train restricted boltzmann machine.
假设训练集是二元(binary)向量,这里为了便于解释,认为是二元的图片。RBM是一个两层的网络,这里随机二元像素与随机二元特征检测单元相连,每条连接都有一个权值。如下图所示,是一个二分(二部)图,输入层为v(visible),输出为h(hidden),W是权值。其中v中单元间无连接,h中也是这样。
一个输入向量v和一个输出的向量h组成的一个联合配置有一个能量,表示为
其中vi是可见(visible)单元的二进制状态,hj是隐藏(hidden)单元的二进制状态,wij是两者间的权值。这个网络通过下面的能量函数给每一对可见和隐藏向量分配了一个概率
其中“划分方程Z”为
网络分配给可见向量的概率为
而可见向量对权值的对数梯度确出乎意料的简单
其中三角括号是由下标指定的分布的期望,其中前一个是数据的期望,后一个是模型的期望。可能有人对这两个分布不理解,稍后会讲到怎么求这两个期望,读者可能就会对这两个分布有所了解。
从这个梯度,可以得到一个简单的学习规则
要计算上面两个分布的期望,首先要获得两个分布的样本,下面介绍这两个期望的采样方法
因为在RBM中,隐藏层单元间没有直接的连接,所以很容易得到一个数据分布的无偏样本。给定一个随机选定的训练图像v,隐藏层单元hj的二进制状态被设置为1的概率为
(1)
其中是对数S函数。那么vihj就是一个无偏样本。
由于可见层单元间也没有直接的连接,所以也很容易得到可见单元的样本,在给定隐藏层单元的二进制状态下
(2)
得到一个模型分布的无偏样本要难的多,这可以通过从可见层的随机状态开始,执行很长一段时间的Gibbs采样得到。Gibbs采样的一次迭代包括,用(1)式并行地更新隐藏层单元,然后用(2)式并行地更新可见层单元。
Hinton在2002年给出了一个快的多的学习过程,过程是首先对训练向量设置可见层的状态,然后用(1)式并行地更新隐藏层单元,当隐藏层的二进制状态被选定后,执行一个重建过程,按照(2)式计算出的概率给可见层赋值,然后使用下式更新权值
这个学习规则的简化版本,使用单独单元而不是成对单元的状态用来更新偏移值。
补充一点
Gibbs采样时一种采样的方法,由于统计中需要某种统计的样本,实际去采样成本很高或者不可行,于是就想着用计算机模拟采样,但有的分布很容易用计算机采样,如均匀分布,但有的分布就很难,于是就有了各种采样方法。Gibbs就是其中一种,它通过不断的迭代,最后样本达到一个稳定的状态,通过设定初始值和迭代方法,使得最后得到的分布就是想要的分布,从而可以开始采样。