上一节基于马尔可夫随机场介绍了玻尔兹曼分布,本节将介绍受限玻尔兹曼机的模型表示(Representation)与 学习任务(Laerning)。
基于Hammersley-Clifford定理,可以将马尔可夫随机场 G \mathcal G G中关于随机变量集合的联合概率分布 P ( X ) \mathcal P(\mathcal X) P(X)表示为如下形式:
P ( X ) = 1 Z ∏ i = 1 K ψ i ( x C i ) \mathcal P(\mathcal X) = \frac{1}{\mathcal Z} \prod_{i=1}^{\mathcal K} \psi_i(x_{\mathcal C_i}) P(X)=Z1i=1∏Kψi(xCi)
其中 x C i ( i = 1 , 2 , ⋯ , K ) x_{\mathcal C_i}(i=1,2,\cdots,\mathcal K) xCi(i=1,2,⋯,K)表示极大团 C i \mathcal C_i Ci中结点组成的随机变量集合; ψ i ( x C i ) \psi_i(x_{\mathcal C_i}) ψi(xCi)表示极大团 x C i x_{\mathcal C_i} xCi对应的势函数; Z \mathcal Z Z表示规范化因子。
由于势函数的恒正属性,因此通常将势函数使用能量函数进行表示:
ψ i ( x C i ) = exp { − E [ x C i ] } i = 1 , 2 , ⋯ , K \psi_i(x_{\mathcal C_i}) = \exp \left\{-\mathbb E[x_{\mathcal C_i}]\right \} \quad i=1,2,\cdots,\mathcal K ψi(xCi)=exp{−E[xCi]}i=1,2,⋯,K
那么 基于能量函数表示的联合概率分布 P ( X ) \mathcal P(\mathcal X) P(X)被称作吉布斯分布,也称玻尔兹曼分布:
这里全部使用’玻尔兹曼分布‘进行描述。
P ( X ) = 1 Z ∏ i = 1 K exp { − E [ x C i ] } = 1 Z exp [ − ∑ i = 1 K E [ x C i ] ] \begin{aligned} \mathcal P(\mathcal X) & = \frac{1}{\mathcal Z} \prod_{i=1}^{\mathcal K} \exp \left\{- \mathbb E[x_{\mathcal C_i}]\right\} \\ & = \frac{1}{\mathcal Z} \exp \left[- \sum_{i=1}^{\mathcal K} \mathbb E[x_{\mathcal C_i}]\right] \end{aligned} P(X)=Z1i=1∏Kexp{−E[xCi]}=Z1exp[−i=1∑KE[xCi]]
此时的联合概率分布 P ( X ) \mathcal P(\mathcal X) P(X)明显是指数族分布的表示形式。
可以将
− ∑ i = 1 K E [ x C i ] -\sum_{i=1}^{\mathcal K} \mathbb E[x_{\mathcal C_i}] −∑i=1KE[xCi]看作是’某权重矩阵‘
W \mathcal W W与’极大团向量‘
x C = ( x C 1 , x C 2 , ⋯ , x C K ) T x_{\mathcal C} = (x_{\mathcal C_1},x_{\mathcal C_2},\cdots,x_{\mathcal C_{\mathcal K}})^T xC=(xC1,xC2,⋯,xCK)T的线性组合。
1 Z exp [ − ∑ i = 1 K E [ x C i ] ] ⇒ 1 Z exp [ W T x C ] \frac{1}{\mathcal Z} \exp \left[- \sum_{i=1}^{\mathcal K} \mathbb E[x_{\mathcal C_i}]\right] \Rightarrow \frac{1}{\mathcal Z} \exp [\mathcal W^T x_{\mathcal C}] Z1exp[−i=1∑KE[xCi]]⇒Z1exp[WTxC]
如果给能量函数 E [ x C i ] ( i = 1 , 2 , ⋯ , K ) \mathbb E[x_{\mathcal C_i}](i=1,2,\cdots,\mathcal K) E[xCi](i=1,2,⋯,K)一个准确描述的话,可以将 E [ x C i ] \mathbb E[x_{\mathcal C_i}] E[xCi]描述为如下形式:
E [ x C i ] = − { [ x C i ] T U x C i + b T x C i } i = 1 , 2 , ⋯ , K \mathbb E[x_{\mathcal C_i}] = - \left\{[x_{\mathcal C_i}]^T \mathcal U x_{\mathcal C_i} + b^T x_{\mathcal C_i}\right\} \quad i=1,2,\cdots,\mathcal K E[xCi]=−{[xCi]TUxCi+bTxCi}i=1,2,⋯,K
其中 U \mathcal U U表示模型参数的权重矩阵; b b b表示偏置向量。
个人理解:在花书(第20章)将随机变量集合
x x x描述为一个
d d d维的分布。为了简化运算,将每一维分布均设为’伯努利分布‘,从而将’能量函数‘描述为如下形式:
E ( x ) = − x T U x − b T x \mathbb E(x) = - x^T\mathcal U x - b^Tx E(x)=−xTUx−bTx
回归文章示例,将
p p p维随机变量
X \mathcal X X表示为’若干个结点‘(可能有的结点内部包含一个随机变量,有的包含多个),然后将这些结点归纳为
K \mathcal K K个极大团
x C i ( i = 1 , 2 , ⋯ , K ) x_{\mathcal C_i}(i=1,2,\cdots,\mathcal K) xCi(i=1,2,⋯,K)。可以将每个极大团中的随机变量看作是
X \mathcal X X的一个子集,因而这里的表述没什么问题。欢迎小伙伴们交流讨论。
玻尔兹曼机(Boltzmann Machine,BM)示例表示如下:
蓝色结点表示观测变量,白色结点表示隐变量,下同。
玻尔兹曼机本质上就是一个马尔可夫随机场,但是不同点在于玻尔兹曼机将随机变量集合 X \mathcal X X分成了两个子集:
需要注意的是,这里的
m , n , p m,n,p m,n,p表示随机变量的维度,而不是极大团的编号。
X = ( x 1 , x 2 , ⋯ x p ) T ⇒ ( h v ) { h = ( h 1 , h 2 , ⋯ , h m ) T v = ( v 1 , v 2 , ⋯ , v n ) T m + n = p \begin{aligned} \mathcal X & = (x_1,x_2,\cdots x_p)^T \Rightarrow \begin{pmatrix}h \\ v \end{pmatrix}\\ & \begin{cases} h = (h_1,h_2,\cdots,h_m)^T \\ v = (v_1,v_2,\cdots,v_n)^T \quad m + n = p \end{cases} \end{aligned} X=(x1,x2,⋯xp)T⇒(hv){h=(h1,h2,⋯,hm)Tv=(v1,v2,⋯,vn)Tm+n=p
其中 v v v表示观测变量; h h h表示隐变量。它的能量函数不同于单个随机变量种类 x ∈ R p \mathcal x \in \mathbb R^p x∈Rp,它的能量函数根据图中边两端结点种类 分为三种表示:
E ( v , h ) = − [ ( v T R v + b T v ) + v T W h + ( h T S h + c T h ) ] \mathbb E(v,h) = - \left[(v^T\mathcal Rv + b^Tv) + v^T \mathcal W h + (h^T\mathcal S h + c^T h)\right] E(v,h)=−[(vTRv+bTv)+vTWh+(hTSh+cTh)]
以观测变量
v v v内部的边为例。
v i , v j ∈ v v_i,v_j \in v vi,vj∈v表示观测变量的两个结点,它们之间的能量(边;关联关系)可表示为:
其中
r i j r_{ij} rij表示
v i , v j v_i,v_j vi,vj之间的权重系数。至此,观测变量
v v v内部的能量结果可表示为如下形式
:其他表示边的关系如
− v T W h , − h T S h - v^T\mathcal Wh,-h^T\mathcal Sh −vTWh,−hTSh同理。关于结点本身的能量也通过权重系数进行表达。如观测变量的能量表达:
∑ i = 1 m b i v i = b T v \sum_{i=1}^m b_iv_i = b^Tv ∑i=1mbivi=bTv,隐变量同理。
其中 R , b \mathcal R,b R,b表示基于观测变量团的权重矩阵和偏置向量; S , c \mathcal S,c S,c表示基于隐变量团的权重矩阵和偏置向量; W \mathcal W W表示边两端分别是观测变量和隐变量的权重矩阵。
最终,玻尔兹曼机对应的 联合概率分布(概率质量函数) 表示如下:
在后续’玻尔兹曼机‘中将继续进行介绍。
P ( v , h ) = 1 Z exp { − E [ v , h ] } = 1 Z exp { [ ( v T R v + b T v ) + v T W h + ( h T S h + c T h ) ] } \begin{aligned} \mathcal P(v,h) & = \frac{1}{\mathcal Z} \exp \{- \mathbb E[v,h]\} \\ & = \frac{1}{\mathcal Z} \exp \left\{\left[(v^T\mathcal Rv + b^Tv) + v^T \mathcal W h + (h^T\mathcal S h + c^T h)\right] \right\} \end{aligned} P(v,h)=Z1exp{−E[v,h]}=Z1exp{[(vTRv+bTv)+vTWh+(hTSh+cTh)]}
如果并不是所有变量都能够被观测,如隐变量的存在。这种情况下,隐变量类似于神经网络中的隐藏层神经元,此时的波尔兹曼机就不再局限于变量之间的线性关系了。通过对模型的学习,类似于神经网络隐藏层的函数逼近定理,它可以对 离散型随机变量的任意概率质量函数 P ( X ) \mathcal P(\mathcal X) P(X)进行逼近。
当然,这种情况下,同样需要玻尔兹曼机内部结点之间存在丰富的关联关系。如下图:
这种复杂结构引出玻尔兹曼机的缺陷:由于结构过于复杂,没有办法对其进行精确推断。
其次,如果使用近似推断,如马尔可夫链蒙特卡罗方法,由于分布过于复杂,需要采集足够量的样本对其进行近似。这种方式的计算量过于庞大。
玻尔兹曼机的缺陷主要在于模型对应的概率图结构过于复杂。受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是在玻尔兹曼机的基础上,对结点间的边进行约束。约束要求是:只有隐变量 h h h和观测变量 v v v之间存在连接, h , v h,v h,v变量内部无连接。
上图关于优化后的受限玻尔兹曼机表示如下:
同理,基于改进后的概率图表达,可以对波尔兹曼机的联合概率分布进行优化:
P ( X ) = P ( v , h ) = 1 Z exp { − E ( v , h ) } = 1 Z exp ( v T W h + b T v + c T h ) \begin{aligned} \mathcal P(\mathcal X) = \mathcal P(v,h) & = \frac{1}{\mathcal Z} \exp \{- \mathbb E(v,h)\} \\ & = \frac{1}{\mathcal Z} \exp (v^T \mathcal W h + b^Tv + c^Th) \end{aligned} P(X)=P(v,h)=Z1exp{−E(v,h)}=Z1exp(vTWh+bTv+cTh)
继续对上式进行展开:
P ( v , h ) = 1 Z exp [ v T W h ] ⋅ exp [ b T v ] ⋅ exp [ c T h ] = 1 Z { exp [ ∑ i = 1 m ∑ j = 1 n v i ⋅ w i j ⋅ h j ] ⋅ exp [ ∑ i = 1 m b i v i ] ⋅ exp [ ∑ j = 1 n c j h j ] } = 1 Z { ∏ i = 1 m ∏ j = 1 n exp ( v i ⋅ w i j ⋅ h j ) ⋅ ∏ i = 1 m exp ( b i v i ) ∏ j = 1 n exp ( c j h j ) } \begin{aligned} \mathcal P(v,h) & = \frac{1}{\mathcal Z} \exp [v^T \mathcal W h] \cdot \exp[b^Tv] \cdot \exp[c^Th] \\ & = \frac{1}{\mathcal Z} \left\{\exp \left[\sum_{i=1}^m\sum_{j=1}^n v_i \cdot w_{ij}\cdot h_j \right] \cdot \exp \left[\sum_{i=1}^m b_iv_i\right] \cdot \exp \left[\sum_{j=1}^n c_jh_j\right]\right\} \\ & = \frac{1}{\mathcal Z} \left\{\prod_{i=1}^m\prod_{j=1}^n \exp (v_i \cdot w_{ij} \cdot h_j) \cdot \prod_{i=1}^m \exp (b_iv_i) \prod_{j=1}^n \exp(c_jh_j)\right\} \end{aligned} P(v,h)=Z1exp[vTWh]⋅exp[bTv]⋅exp[cTh]=Z1{exp[i=1∑mj=1∑nvi⋅wij⋅hj]⋅exp[i=1∑mbivi]⋅exp[j=1∑ncjhj]}=Z1{i=1∏mj=1∏nexp(vi⋅wij⋅hj)⋅i=1∏mexp(bivi)j=1∏nexp(cjhj)}
上式展开后的结果就是各种各样的指数函数做乘法。因此可以从因子图(Factor Graph)的角度对受限玻尔兹曼机进行描述,对应因子图表示如下:
例如团(实际上就是极大团)
v i ⇔ h j v_i \Leftrightarrow h_j vi⇔hj可以定义为
f i j ( v i , h j ) = exp ( v i ⋅ w i j ⋅ h j ) f_{ij}(v_i,h_j) = \exp (v_i \cdot w_{ij} \cdot h_j) fij(vi,hj)=exp(vi⋅wij⋅hj),其他同理。这里就不多描述了。
因受限玻尔兹曼机的性质,其概率图中任意三个结点之间均不能构成极大团。因此,每一条边对应的两个结点都是一个极大团。
最终,受限玻尔兹曼机需要学习的参数包含以下三个:
W = ( w 11 , w 12 , ⋯ , w 1 n w 21 , w 22 , ⋯ , w 2 n ⋮ w m 1 , w m 2 , ⋯ , w m n ) m × n b = ( b 1 b 2 ⋮ b m ) m × 1 c = ( c 1 c 2 ⋮ c n ) n × 1 \mathcal W = \begin{pmatrix} w_{11},w_{12},\cdots,w_{1n} \\ w_{21},w_{22},\cdots,w_{2n} \\ \vdots \\ w_{m1},w_{m2},\cdots,w_{mn} \\ \end{pmatrix}_{m \times n} \quad b = \begin{pmatrix} b_1 \\ b_2 \\ \vdots \\ b_{m} \end{pmatrix}_{m \times 1} \quad c = \begin{pmatrix} c_1 \\ c_2 \\ \vdots \\ c_{n} \end{pmatrix}_{n \times 1} W=⎝⎜⎜⎜⎛w11,w12,⋯,w1nw21,w22,⋯,w2n⋮wm1,wm2,⋯,wmn⎠⎟⎟⎟⎞m×nb=⎝⎜⎜⎜⎛b1b2⋮bm⎠⎟⎟⎟⎞m×1c=⎝⎜⎜⎜⎛c1c2⋮cn⎠⎟⎟⎟⎞n×1
在介绍对比散度(Contrastive Divergence)介绍完毕后,再介绍受限玻尔兹曼机的学习任务。
相关参考:
深度学习(花书)——第20章 深度生成模型
(系列二十八)玻尔兹曼机1-介绍
机器学习-受限玻尔兹曼机(3)-模型表示(Representation)