|||
网络上资料关于深度学习的入门,好多都是从RBM开始,如果没有一定的相关背景知识的话,这些资料让人看得很是摸不着头脑!我是主要参考了Asja Fischer和Christian Igel的介绍性论文《An Introduction to Restricted Boltzmann Machines》进行学习。大家可以从google学术中下载(网上知道的,真的很方便)。
下面是我整理的相关背景知识,以及自己对这些知识的理解。希望能帮助到大家,有不对的地方多交流,同时也提高自己的理解。
一、Graphical Model、MRF、BM和RBM
图模型(Graphical Model)是将随机变量用节点来表示,随机变量之间的相互依赖关系用连接线来表示,一般记为G(V,E)。该模型用来表示多个变量之间的联合分布,这点在刚接触图模型的特别不了解,弄得云里雾里。
随机变量之间最简单关系就是相互独立(朴素贝叶斯估计就是这样假定的),也即联合分布满足:
p(v1,v2,...,vn)=p(v1)p(v2)...p(vn). 其中v1,v2,..vn表示单个随机变量。
但是现实中随机变量之间关系具有很复杂的相互依赖性,即上式不成立。于是需要将复杂问题简单化,即寻找满足部分独立的情况进行简化研究。
首先对一种相对简单的依赖关系进行研究,这就是条件独立的依赖关系。即:
p(V1,V2|V3)=p(V1|V3)p(V2|V3). 其中V1,V2,V3表示任意的随机变量集合。
这实际上是随机变量之间的Marcov property(马尔科夫性,刚接触这个名字时真的很晕),表示相互之间的独立性。
马尔科夫性就是marcov提出的,将随机变量之间相互依赖关系进行简化。随机变量只与相邻(时间上或空间上)的随机变量有关系,而与不相邻的随机变量之间是条件独立的。当在时间上进行简化时,就得到了Marcov链。因此满足Marcov性的图模型就是Marcov Random Field,简称为MRF。
玻尔兹曼机(Boltzman Machine,简记为BM)是1985年由深度学习鼻祖Hinton提出的。用来解决Hopfield确定性神经网梯度下降法学习容易陷入局部极小点问题的。BM就是一种特殊的MRF。一般神经变量的取值范围是{0,1}。
BM的核心包括两点:
1)网络的状态服从Boltzman分布;
2)学习算法采样模拟退火方法(Simulated Annealing),这是一种随机学习算法,较好地解决了局部极小陷阱问题。
Boltzman分布是统计热力学中的概念,即多粒子系统中,系统的确切状态和能量很难测量,但在温度T时系统的热平衡满足于Boltzman分布,即:
$p\left ( A \right )=\frac{1}{Z}e^{-\frac{E(A)}{kT}}$ (1)
其中,T为温度,E(A)为系统在状态A对应的能量,也称为能量函数,k为玻尔兹曼常数,Z为归一化因子。
可见能量函数的选择也是BM的一个关键点,能量函数决定了系统的概率分布。一般的BM选择的能量函数是:
$E\left ( X \right )=-\sum_{i}\sum_{j}w_{ij}x_{i}x_{j}-\sum_{i}\theta _{i}x_{i}$ (2)
但在实际的学习过程中,有的随机变量是不可观测的,因此将BM中神经元分为可视变量v和不可视变量h,进一步假设,可视变量v之间条件独立,不可视变量h之间条件独立,这就是受限玻尔兹曼机(简称RBM)。
对应RBM能量函数为:
$E\left ( v,h \right )=-\sum_{i}\sum_{j}w_{ij}h_{i}v_{j}-\sum_{j}b_{j}v_{j}-\sum_{i}c_{i}h_{i}$ (3)
因此,RBM系统随机变量的概率分布为:
$p\left ( v,h \right )=\frac{1}{Z}e^{\sum_{i}\sum_{j}w_{ij}h_{i}v_{j}+\sum_{j}b_{j}v_{j}+\sum_{i}c_{i}h_{i}}$ (4)
二、RBM参数的基本学习算法
从已知RBM的观测数据集 $\left \{ v \right \}_{S}$ 来估计数据集的概率分布一般采用极大似然函数方法,即寻找在最优的参数(wij、bj、ci),使得似然函数最大:
$ln\prod_{s}p(v)=\sum_{S}\left \{ ln\sum_{h}p(v,h)\right \}=\sum_{S}\left \{ ln\sum_{h}e^{-E(v,h)}-ln\sum_{x,h}e^{-E(x,h)} \right \}$ (5)
大家注意,为了简单清晰,这里记号有点要注意,其中v是已经观测的数据,x表示可观测的状态变量取值,大家要注意区分开来,都由v来表示容易搞混,第二项其实是归一因子,与具体的观测数据v无关。可以采用梯度下降算法来求取参数。
似然函数关于wij、bj、ci的梯度如下。
$\frac{\partial lnp(v)}{\partial w_{ij}}=\sum_{h}\left \{ p(h|v)\cdot h_{i}v_{j} \right \}-\sum_{x}\left \{ \sum_{h} p(h|x)\cdot h_{i}x_{j}\right \}$ (6)
$\frac{\partial lnp(v)}{\partial b_{j}}=\sum_{h}\left \{ p(h|v)\cdot v_{j} \right \}-\sum_{x}\left \{ \sum_{h} p(h|x)\cdot x_{j}\right \}$ (7)
$\frac{\partial lnp(v)}{\partial c_{i}}=\sum_{h}\left \{ p(h|v)\cdot h_{i} \right \}-\sum_{x}\left \{ \sum_{h} p(h|x)\cdot h_{i}\right \}$ (8)
因为:
$\sum_{h} p(h|v)\cdot h_{i}v_{j} = \sum_{h_{i}}\left \{ \sum_{h_{-i}}p(h_{i}|v)\cdot p(h_{-i}|v)h_{i}v_{j} \right \}=\sum_{h_{i}}\left \{ p(h_{i}|v)h_{i}v_{j} \sum_{h_{-i}}\cdot p(h_{-i}|v)\right \}=\sum_{h_{i}}p(h_{i}|v)h_{i}v_{j}$ (9)
其中, $h_{-i}$ 表示随机状态h的除第i个分量以外的其它随分量,所以
$\sum_{h_{-i}}p(h_{-i}|v)=1$
因此(9)式成立。仿照(9)进一步还可以对(6)、(7)和(8)进行简化:
$\frac{\partial lnp(v)}{\partial w_{ij}}=\sum_{h_i}p(h_i|v)h_iv_j-\sum_{x}p(x,h)h_iv_j$ (10)
$\frac{\partial lnp(v)}{\partial b_{j}}=v_{j}-\sum_{x}p(x)x_{j}$ (11)
$\frac{\partial lnp(v)}{\partial c_j}=\sum_{h_i}p(h_i|v)h_i-\sum_{x}p(x,h)h_i$ (12)
(10)-(12)式中第二项其实都是条件概率对可观测状态的期望值。
在学习过程中计算上述参数的梯度时,(10)(11)(12)式中第二项的计算复杂性是随机状态分变量数的指数函数,因此直接计算效率太低。可采用马尔科夫蒙特卡罗模拟法(MCMC)来计算这些第二项的期望值(未加深入考察,线性函数的期望值等于期望值的线性函数)。即
$\sum_{x}p(x)\sum_{h_{i}}p(h_{i}|x)h_{i}x_{j}=\sum_{h_{i}}p(h_{i}|\bar{x})h_{i}\bar{x_{j}}$
MCMC采用的是Gibbs采样方法,其想法是从已知的随机变量的条件分布(边缘分布),模拟生成随机变量的序列(Marcov链),通过统计的方法可得到一个随机变量的联合分布估计,也可以得到随机变量的期望值估计(这点也很重要,提高了计算效率)。
Gibbs采样背后的原理就是Marcov链的细致平稳条件,即:
$\pi _{i}p_{ij}=\pi_{j}p_{ji}$ (13)
从状态i转移到状态j的概率与从状态j转移到状体j的概率相等。
Gibbs采样满足Marcov链的细致平稳条件,即:
$\pi_{x}p_{xy}=\pi_{y}p_{yx}$ (14)
记状态x为 $[x_{i}\, x_{-i}]$ ,状态y为 $[y_{i}\, x_{-i}]$ ,因此,Gibbs采样满足如下公式:
$\pi_{x}p_{xy}=\pi(x_{i},x_{-i})\pi(y_{i}|x_{-i})=\pi(x_{-i})\pi(x_{i}|x_{-i})\pi(y_{i}|x_{-i})$ (15)
$\pi_{y}p_{yx}=\pi(y_{i},x_{-i})\pi(x_{i}|x_{-i})=\pi(x_{-i})\pi(y_{i}|x_{-i})\pi(x_{i}|x_{-i})$ (16)
可以看出(15)与(16)式相等,从而Gibbs采样模拟的稳态序列的统计满足于联合分布。
将Gibbs采样应用于公式(10)-(12),当参数wij,bj,ci确定时,p(x,h)可以计算出来,从而可以计算出条件概率,从而可以模拟采样得到在当前参数下的p(x)的概率分布和变量的期望值。将期望值代入公式(10)-(12)即得到了似然函数关于参数的梯度。
三、RBM的CD学习算法
在实际计算梯度时,Gibbs采用的步数不可能趋向无穷大,因此k取多少合适是CD算法要研究的问题,最简单的k取值为1,在k取有限值时,这时梯度的估计就有偏估计了,在《An Introduction to Restricted Boltzmann Machines》的(37)式中Fischer and Igel给出了估计误差的上界。
好了,花了一个周日整理了将近一个月来对RBM的学习理解,还是很有成就感的。只是本文中对RBM的条件概率公式 $p(H_{i}=1|v)$ 没有细写,希望大家能够从p(v,h)的公式中推导,只是要注意h之间相互独立就好了,如果确实有不通的地方请提出来,我继续完善。
初步对博客中写数学公式也熟悉多了,感觉比word还是方便多了,原来时候就是自己太懒,因此总是将笔记写在word中。学习还真是不能太懒,不能象小时候学初级数学似的!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-21 13:17
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社