RBM-Restricted Boltzmann Machine - webdancer's Blog

RBM-Restricted Boltzmann Machine

webdancer posted @ 2013年2月28日 20:48 in machine learning with tags Machine learning , 6151 阅读

最近看了一下RBM的相关内容,理解的还很肤浅,记录一下,共同交流。

我自己觉得学习RBM,还是得看一下Markov Random Field的相关的内容,这样就能比较系统的熟悉这个模型。这篇文章就从MRF开始讨论,学习BM模型,再扩展到RBM模型,最后看一下RBM的训练方法。

1.Markov Random Field

MRF是一种无向概率图模型,也叫做Markov Network,是与Bayesian Network并列的两种Grahpic Model的基本表示方式。MRF就涉及到两个基本的内容:Undirected Graph和PDF(Probability Density Function),我们如何对一个模型用Graph进行建模,已经建好的Graph用什么rule用PDF的形式把Graph的结构表示出来,我觉得这是理解MRF的基本的过程。

我们看一个简单的例子,这是Koller的Graphic Model公开课中的一个例子。考虑下面的场景,A,B,C,D四个同学,能够结对做作业,由于某些原因,只有下面4个对,(A,B),(B,C),(C,D),(D,A)。上课的老师可能由于偶然的原因,把某个概念讲错了,可能通过思考,或是阅读书本,某个同学能够把错误改正过来,他可能就会把自己的发现告诉他的同伴,这样四个变量就有了两种取值:理解正确(R)和理解错误(W)。我们可以用下面的图表示上面说的关系:

在上面的图中,节点表示变量,边表示变量之间直接的不通过图中其他节点的概率关系。这样我们就能对Graph有了一个简单的理解,用图来进行建模,必须明确图中节点的含义,边的含义,因为只有这样,我们才能在分析问题的时候,根据问题的含义,抽象出图进行表示。

下面的一个步骤就是如何把我们已经抽象出来的图用数学公式表示出来,也就是写出概率密度函数(PDF),这一步,MRF不像Bayesian Model那样的直观(可以跟容易的根据节点关系写出),有时候的确不容易理解(明确的概率上的意义)。在MRF中,使用一个称为factor的函数,来描述变量之间的关系(感觉也比较好理解了,既然写出一个概率上的意义的函数困难,那干脆就写一个普通的函数来描述这种密切的关系)。

上面的例子,对4个对分别写4个函数,分别为$\phi(A,B)$,$\phi(B,C)$,$\phi(C,D)$,$\phi(D,A)$,通过函数来表示直接作用的变量之间的关系。$\phi(A,B)$的取值如下表所示(图中也写了各个变量的取值):

A B \phi(A,B)
a0 b0 30
a0 b1 5
a1 b0 1
a1 b1 10

这样就定义了变量之间的直接关系,但还是局部的,为了获得一个全局的关系,可以把这些factor相乘,就可以得到联合分布函数,如下:
\[
p(A,B,C,D)=\frac{1}{Z}\phi_1(A,B)\phi(B,C)\phi(C,D)\phi(D,A)
\]

其中,
\[
 Z=\sum_{A,B,C,D}\phi_1(A,B)\phi(B,C)\phi(C,D)\phi(D,A)
\]

称为partion function.

上面的例子,其实就是一种简单的pair-wise Markov Networks。它很好的描述了边的关系,简单易用。上面的式子就是随机变量的分布,我们通过求$A,B$的边缘分布,可以得出下面的表格(通过函数相乘很容易求下面的边缘概率):

A B p(A,B)
a0 b0 0.13
a1 b0 0.69
a1 b0 0.14
a1 b1 0.04

通过比较上面表格中的$\phi(A,B),p(A,B)$可以看到,factor只是一个随机变量的局部的关系,最终的关系是所有的factor综合作用的结果。

 

上面只是一个简单的pair-wise形式的,可以将其拓展,得到一般的形式。用$X_C$来表示圈$C$中的变量,联合分布函数就可以写为potential function$\phi_C(x_C)$的乘积,如下:

\[
p(x)=\frac{1}{Z}\prod_{C}\phi_C(x_C)
\]

其中,
\[
 Z=\sum _x\prod_{C}\phi_C(x_C)
\]

称为partion function.一句话总结就是:Markov Networks可以表示为圈的potential function的乘积

如果我们限制potential function的值都为正,这样potential function就可以写为$ \phi_C(x_C)=exp\{E(x_C)\}$。

联合分布就可以写为下面的形式:
\[
p(x)=\frac{1}{Z}exp\{\sum_{C}-E(x_C)\}
\]

其中,
\[
 Z=\sum _xexp\{\sum_{C}-E(x_C)\}
\]

这样我们就明白了如何将一个无向图表示出来,知道了图中节点和边的含义,还知道了MRF的两种表示方式,根据不同的问题,可以选择不同的表示。

2.Boltzmann Machine

BM的图结构如下:

Boltzmann Machine 表示方式采用第二种,可以说它是一种特殊的energy-based model。图中的节点可以分为两类:observed node 和unobserved node(如果把它理解为神经网络,就是两层:输入层和隐藏层)。energy function是一般的二次函数类型,

\[
E(v,h|\theta)=-b'v-c'h-h'Wv-v'Uv-h'Vh
\]

其中,参数用$\theta$来表示,包括$b_i,v_i$(与$v,h$中的单个元素相关),$W_{i,j},U_{i,j},V_{i,j}$(与一个元素对相联系)。

 

3.Restricted Boltzmann Machine

在BM的基础上做了限制,取消了$v,h$变量内部的联系,构成了一个二分图,表示如下:

energy function的表示变成了下面的形式,

\[
E(v,h|\theta)=-b'v-c'h-h'Wv
\]

虽然减少了参数的数目,不能有效的表示一些分布,但是增加$h$的数目,可以有效的任何的离散分布。

\[
p(v,h)=exp\{-E(v,h)\}
\]

因为只有$v$是observed variable,所以得到,

\[
p(v)=\sum_hexp\{-E(v,h)\}
\]

根据无向图的条件独立的性质,显然可以得到
\[
p(h|v)=\prod_ip(h_i|v)\\
p(v|h)=\prod_ip(v_i|h)
\]

如果,$h \in \{0,1\}$,那么RBM的节点就可以像一般的NN那样使用sigmoid函数,则可以得到\[
p(h_i|v)=sigmoid(c_i+W_iv)\\
p(v_j|h)=sigmoid(b_j+W._jh)
\]

上面我们分析了RBM的概率内容,详细的推导,可以参考Learning Deep Architectures for AI ,里面有非常详细的论述。下面我们就可以分析RBM的网络层次:输入层和隐藏层,与BP这样的网络非常相似,但是由于h层节点的值都是未知的(latent variable),所以是没法直接使用BP算法进行训练的。

 

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee