受限玻尔兹曼机(RBM)
能量模型
RBM用到了能量模型。
简单的概括一下能量模型。假设一个孤立系统(总能量$E$一定,粒子个数$N$一定),温度恒定为1,每个粒子有$m$个可能的状态,每个状态对应一个能量$e_i$。那么,在这个系统中随机选出一个粒子,这个粒子处在状态$k$的概率,或者说具有状态$k$的粒子所占的比例为:
$$p(state=k)=\frac{e^{-e_k}}{Z}$$
其中$Z=\sum e^{-e_i}$称为配分函数。
扩展开来,在一个正则系综中,系统$i$处在状态$S_i$的概率为:
$$P(state=i)=\frac{e^{-E_i}}{\sum e^{-E_i}}$$
当这个系统有个宏观的状态,对应的宏观测量值为$Q$,状态是微观状态的集合$S_Q=\{s_1,s_4,...\}$,则该宏观状态出现的概率为
$$P(S_Q)=\frac{\sum_{k\in S_Q} e^{-e_k}}{Z}$$
比照粒子,我们定义一个宏观状态对应的能量为$E_Q$,改写上式为
$$P(S_Q)=\frac{e^{-E_Q}}{Z}~~where~~Z=\sum_Q e^{-E_Q}$$
与微观态的关系为
$$E_Q=-ln\sum_{k\in S_Q} e^{-e_k}$$
受限玻尔兹曼机
受限玻尔兹曼机是这么一个系统,系统结构为一个二分网络。一种节点类型为可视节点,另一种为隐含节点,所有节点都为二值节点(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=-ln(\sum _He^{-E(x,H)})~~~~~~(3)$$
由于同一类节点是不相连的,因此同类节点之间相互独立,因此每个隐含层节点以及与它相连的边组成的一个小系统是一个独立系统。当可视层状态给定为$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)$$
我们重写公式(1)的系统能量表示
$$E(x,h)=-(\sum a_iv_i+\sum B_jh_j)=-(A^Tx+B^Th)~~~(4)$$
并且得出
$$E_x=-ln(e^{A^Tx}\sum_h \prod_j e^{B_j h_j})=-A^Tx- ln\sum_h \prod_j e^{B_j h_j}=-A^Tx-ln \prod_j \sum_h e^{B_j h_j}=-A^Tx-\sum_j ln \sum_{h_j \in \{0,1\}} e^{B_j h_j}=-A^Tx-\sum_j ln(1+e^{B_j})$$
为了计算方便,我们要优化的目标函数是
$$J=-ln P(x)=E_x+ln Z$$
对某一参数 $\theta$,我们得出
$$\frac{\partial J}{\partial \theta}=\frac{\partial E_x}{\partial \theta}-\sum_v P(v)\frac{\partial E_v}{\partial \theta}$$
参考文献
http://en.wikipedia.org/wiki/Restricted_Boltzmann_machine
http://deeplearning.net/tutorial/rbm.html