受限玻爾茲曼機(RBM)

這兩天跟人討論起說在DL中用DBN的,而DBN就是用不少RBM疊加起來的,想起之前看到的RBM,只是粗略看了下,沒有仔細研究,算法

如今正好借這個機會好好研讀一番。網絡

玻爾茲曼機(BM)函數

波爾茲曼機(Boltzmann Machine, BM)是Hiton(是的,Hiton大牛)和Sejnowski 於1986年基於統計力學提出的神經網絡,這種網絡中的神經元是隨機神經元,神經元的輸出只有兩種狀態(激活和未激活),通常用二進制0或1表示。以下圖所示:學習

受限玻爾茲曼機(RBM):spa

BM具備強大的無監督學習能力,可以學習數據中複雜的規則。可是訓練時間過長,另外其機率分佈很難得到,爲了克服這一個問題,Smolensky引入一個受限玻爾茲曼機(Restricted Boltzmann Machine,RBM),以下圖所示:blog

能夠看到,隱層和可見層在層內是無鏈接的。這樣,當給定了可見層狀態時,隱層個單元的激活狀態是相互獨立的,反之,給定隱層狀態,各可見層單元的狀態也是相互獨立的。這樣能夠用Gibbs採樣逼近其機率分佈。ip

前面說到,BM是基於統計力學來的,首先介紹其能量函數:get

這裏,vh表明可見層和隱層的狀態向量。ai,bj和Wij爲三個實數參數,分別表示可見層i單元的偏置項,隱層j單元偏置項,可見層i單元和隱層j單元的鏈接權重。其中:it

基於此能量函數,能夠獲得vh的機率分佈:ast

其中Z(θ)是歸一化因子。

學習:

學習RBM的任務固然是求出最優參數θ,能夠經過最大化在某個訓練集上的對數似然函數來求得:

其中t是訓練樣本標記(t∈(1,T))T爲訓練樣本總數。

其中L(Θ):

爲了求最優Θ*,能夠用隨機梯度法求L(θ)的最大值,關鍵就是求梯度,即L(Θ)對各個參數的偏導數:

其中<.>P表示求關於P的分佈。顯然,第一項的邊緣分佈P(h|v(t),θ)是在訓練樣本已知的狀況下求相對的隱層的分佈,比較容易計算。第二項是聯合分佈,不容易求,可是能夠經過Gibbs採樣來逼近。值得指出的是在最大化似然函數的過程當中,爲加快速度,上述偏導數在每一迭代步中的計算通常只基於部分而非全部的訓練樣本進行。假設只有一個訓練樣本,對數似然函數對於三個參數Wij,ai和aj的偏導數:

其中data和model分別是對上面兩項分佈的簡寫。

Gibbs採樣:

 因爲RBM模型的對稱性及各層間神經元狀態的獨立性,能夠用Gibbs採樣獲得服從RBM定義的分佈的隨機樣本。在RBM中進行k步Gibbs採樣的具體算法:用一個訓練樣本(或者可見層的任何隨機化狀態)初始化可見層狀態v0,交替進行以下采樣:

這樣能夠獲得一個聯合分佈的近似。

基於對比散度(CD)的快速學習算法:

 CD(Contrastive Divergence)法是Hiton在2002年提出的一個快速學習算法。不一樣於Gibbs採樣,當使用訓練數據初始化v0時,只須要k(一般k=1)步Gibbs採樣便可獲得足夠好的近似。

算法基本流程以下:

 參考文獻:

  1. Wikipedia: Restricted Boltzmann Machine

  2. 張春霞, 姬楠楠, 王冠偉. 受限玻爾茲曼機簡介.

相關文章
相關標籤/搜索