受限玻爾茲曼機(Restricted Boltzmann Machine)分析


1、什么是BM?
BM是由Hinton和Sejnowski提出的一種隨機遞歸神經網絡,可以看做是一種隨機生成的Hopfield網絡,是能夠通過學習數據的固有內在表示解決困難學習問題的最早的人工神經網絡之一,因樣本分布遵循玻爾茲曼分布而命名為BM。BM由二值神經元構成,每個神經元只取1或0這兩種狀態,狀態1代表該神經元處於接通狀態,狀態0代表該神經元處於斷開狀態。在下面的討論中單元和節點的意思相同,均表示神經元。

上圖為一個玻爾茲曼機(BM),其藍色節點為隱層,白色節點為輸入層。
玻爾茲曼機和遞歸神經網絡相比,區別體現在以下幾點:
1、遞歸神經網絡(RNN)本質是學習一個映射關系,因此有輸入和輸出層的概念,而玻爾茲曼機的用處在於學習一組數據的“內在表示”,因此其沒有輸出層的概念。
2、遞歸神經網絡各節點鏈接為有向環,而玻爾茲曼機各節點連接成無向完全圖。
2、什么是RBM?
限制玻爾茲曼機中,所謂的限制就是:將完全圖變成了二分圖。如圖所示,限制玻爾茲曼機由三個顯層節點和四個隱層節點組成。

RBM中,所有可見單元和隱單元之間存在連接,而隱單元兩兩之間和可見單元兩兩之間不存在連接,也就是層間全連接,層內無連接(這也是和玻爾茲曼機BM模型的區別,BM是層間、層內全連接)。其中,每一個節點(無論是Hidden Unit還是Visible Unit)都有兩種狀態:處於激活狀態時值為1,未被激活狀態值為0。
這里的0和1狀態的意義是代表了模型會選取哪些節點來使用,處於激活狀態的節點被使用,未處於激活狀態的節點未被使用。節點的激活概率由可見層和隱藏層節點的分布函數計算。

RBM本質是非監督學習(Unsupervised Learning)的利器(Hinton和吳恩達都認為:將來的機器學習任務慢慢都會轉變為非監督學習的),因為,它可以用於降維(隱層少一點),學習特征(隱層輸出就是特征),自編碼器(AutoEncoder)以及深度信念網絡(多個RBM堆疊而成)等。

3、RBM
一個RBM中,v表示所有可見層單元,h表示所有隱層單元。要想確定該模型,只要能夠得到模型三個參數:W、A和 B。分別是權重矩陣W,可見層單元偏置A,隱藏層單元偏置B。假設一個RBM有n個可見單元和m個隱單元,用vi表示第i個可見單元,hj表示第j個隱單元,它的參數形式為:

Wij: 表示第i個可見單元和第j個隱單元之間的權值。

ai: 表示第i個可見單元的偏置閾值。

bj: 表示第j個隱單元的偏置閾值。

對於一組給定狀態下的(v, h)值,假設可見層單元和隱藏層單元均服從伯努利分布,RBM的能量公式是:
\(E(v,h|\theta) = -\sum_{i=1}^n a_iv_i - \sum_{j=1}^m b_jh_j - \sum_{i=1}^n\sum_{j=1}^m v_iW_{ij}h_j\)
其中\(\theta = {W_{ij}, a_i, b_j}\)
為RBM模型的參數,能量函數表示在每一個可見節點和每一個隱藏層節點之間都存在一個能量值。

對該能量函數指數化和正則化后可以得到可見層節點集合和隱藏層節點集合分別處於某一種狀態下(v, h)聯合概率分布公式:
\(P(v,h|\theta) = \frac {e^{-E(v,h|\theta)}} {Z(\theta)}\)
\(Z(\theta) = \sum_{v,h} e^{-E(v,h|\theta)}\)

其中,Z(θ)為歸一化因子或配分函數(partition function),表示對可見層和隱藏層節點集合的所有可能狀態的(能量的指數形式)求和。

對於參數的求解往往采用似然函數求導的方法。已知聯合概率分布P(v,h|θ),通過對隱藏層節點集合的所有狀態求和,可以得到可見層節點集合的邊緣分布P(v|θ):

\(P(v|\theta) = \frac {1} {Z(\theta)} \sum_{h}e^{-E(v,h|\theta)}\)
邊緣分布表示的是可見層節點集合處於某一種狀態分布下的概率,邊緣分布往往被稱為似然函數(如何對模型參數求解在下面章節闡述)。

由於RBM模型的結構(層間全連接、層內無連接),它具有以下重要性質:

1)在給定可見單元的狀態時,各隱藏層單元的激活狀態之間是條件獨立的。此時,第j個隱單元的激活概率為:

\(P(h_j=1|v) = f(b_j+\sum_i v_iW_{ij})\)

2)相應的,當給定隱單元的狀態時,可見單元的激活概率同樣是條件獨立的:
\(P(v_i=1|h) = f(a_i+\sum_j W_{ij}h_j)\)

f 為激勵函數/激活函數,這里選用sigmoid作為激活函數。是因為它可以把(-∞,+∞)的值映射到[0,1]這個區間。也就是說,無論模型的可見層輸入節點數據處於一個多大的范圍內,都可以通過sigmoid函數求得它相應的函數值,即節點的激活概率值。

4、RBM模型參數求解
在給定一個訓練樣本后,訓練一個RBM的意義在於調整模型的參數,以擬合給定的訓練樣本,使得在該參數下RBM表示的可見層節點概率分布盡可能的與訓練數據相符合。

對於該模型需要確定兩部分。一是如果想確定這個模型,首先是要知道可見層和隱藏層節點個數,可見層節點個數即為輸入的數據維數,隱藏層節點個數在一些研究領域中是和可見層節點個數有關的,如用卷積受限玻爾茲曼機處理圖像數據,在這里不多分析。
但多數情況下,隱藏層節點個數需要根據使用而定或者是在參數一定的情況下,使得模型能量最小時的隱藏層節點個數。

其次,要想確定這個模型還得要知道模型的三個參數\(\theta = {W_{ij}, a_i, b_j}\),下面就圍繞着參數的求解進行分析。

由上文提到,參數求解用到了似然函數的對數對參數求導。
\(P(v|\theta) = \frac {1} {Z(\theta)} \sum_{h}e^{-E(v,h|\theta)}\)
可知,能量E和概率P是成反比的關系,所以通過最大化P,才能使能量值E最小。最大化似然函數常用的方法是梯度下降法(這是NN主流方法,在此不再贅述。)

對數似然函數對參數求導分析:

首先是似然函數的對數形式:ln(P(v^{t})), vt表示模型的輸入數據。
然后對參數W_{ij}, a_i, b_j分別進行求導,以W_{ij}為例:
\(\frac {\partial ln(P(v^{t}))} {\partial w_{ij}} = P(h_j=1|v_t)v_i^t - \sum_v P(v)P(h_j=1|v)v_i\)
\(\frac {\partial ln(P(v^{t}))} {\partial a_i} = v_i^t - \sum_v P(v)v_i\)
\(\frac {\partial ln(P(v^{t}))} {\partial b_j} = P(h_j=1|v_t) - \sum_v P(v)P(h_j=1|v)\)

由於上面三式的第二項中都含有P(v), P(v)中仍然含有參數,所以它是式中求不出來的。所以,有很多人就提出了一些通過采樣逼近的方法來求每一個式子中的第二項。
5、Gibbs采樣算法
因為在上一節末尾講對參數的求導中仍然存在不可求項P(v), P(v)表示可見層節點的聯合概率。所以,要想得到P(v)的值,就得要逼近它,求它的近似值。
Gibbs采樣的思想是:雖然不知道一個樣本數據\(x = (x_1, x_2, ... , x_n)\)的聯合概率P(x),但是知道樣本中每一個數據的條件概率\(P(x_i|x_1,x_2,...,x_{i-1},x_{i+1},...,x_n)\)(假設每一個變量都服從一種概率分布),則我可以先求出每一個數據的條件概率值,得到x的任一狀態[\(x_1(0), x_2(0), ..., x_n(0)]\)。然后,我用條件概率公式迭代對每一個數據求條件概率。最終,迭代k次的時候,x的某一狀態\([x_1(k), x_2(k), ..., x_n(k)]\)將收斂於x的聯合概率分布P(x) 。
對於RBM來講,則執行過程如下圖所示:

Gibbs采樣過程

求解過程是:
假設給我一個訓練樣本v0,根據公式 :
\(P(h_j=1|v_0) = f(b_j+\sum_{i \in v_0} v_iW_{ij})\)
求 h0中每個節點的條件概率;
再根據公式
\(P(v_i=1|h_0) = f(a_i+\sum_{j \in h_0}W_{ij}h_j)\)
求v1中每個節點的條件概率,然后依次迭代,直到執行K步(K足夠大),此時P(v|h)的概率將收斂於P(v)的概率。如下所示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM