首页 > 代码库 > 受限玻尔兹曼机(RBM)

受限玻尔兹曼机(RBM)

RBM用到了能量模型。

简单的概括一下能量模型。假设一个孤立系统(总能量$E$一定,粒子个数$N$一定),温度恒定为1,每个粒子有$m$个可能的状态,每个状态对应一个能量$e_i$。那么,在这个系统中随机选出一个粒子,这个粒子处在状态$k$的概率,或者说具有状态$k$的粒子所占的比例为:

$$p(state=k)=\frac{e^{-e_k}}{\sum e^{-e_i}}$$

 扩展开来,在一个正则系综中,系统$i$处在状态$S_i$的概率为:

$$P(state=i)=\frac{e^{-E_i}}{\sum e^{-E_i}}$$

受限玻尔兹曼机是这么一个系统,系统结构为一个二分网络。一种节点类型为可视节点,另一种为隐含节点,所有节点都为二值节点(0,1)。如下图。

技术分享

定义该系统的能量为

$$E=-(\sum a_iv_i+\sum w_{i,j}v_i h_j+\sum b_ih_j)~~where~~w_{i,j}=w_{j,i} ~~~~~~~~~(1)$$

即系统能量为各节点能量与耦合能量(边能量)之和。系统处在状态${V,H}$的概率为:

$$P(V,H)=\frac{e^{-E(V,H)}}{\sum_{V,H} e^{-E(V,H)}}=\frac{e^{-E(V,H)}}{Z}$$

$Z$为配分函数。

可视层节点处在状态$x$的概率为:

$$P(V=x)=\frac{\sum _He^{-E(x,H)}}{Z} \equiv \frac{e^{-E_x}}{\sum e^{-E_x}}~~~~~~~~~~(2)$$

其中

$$E_x=-log(\sum _He^{-E(x,H)})$$

由于同一类节点是不相连的,因此同类节点之间相互独立,因此每个隐含层节点以及与它相连的边组成的一个小系统是一个独立系统。当可视层状态给定为$x$时,该小系统只有两个状态(隐含节点为0或者1),或者说具有两个能阶。

$$-E(h_i;x)=b_ih_i+\sum w_ix_ih_i=(b_i+\sum w_ix_i)h_i=B_ih_i~~where~~B_i=b_i+\sum w_ix_i$$

因此

$$E(h_i=0;x)=0,E(h_i=1;x)=-B_i$$

$$P(h_i=1;x)=\frac{e^{B_i}}{e^0+e^{B_i}}=sigmoid(B_i)$$

 

 

参考文献

http://en.wikipedia.org/wiki/Restricted_Boltzmann_machine

http://deeplearning.net/tutorial/rbm.html

 

受限玻尔兹曼机(RBM)