限制玻爾茲曼機(Restricted Boltzmann Machine)RBM


假設有一個二部圖,每一層的節點之間沒有連接,一層是可視層,即輸入數據是(v),一層是隱藏層(h),如果假設所有的節點都是隨機二值變量節點(只能取0或者1值)同時假設全概率分布滿足Boltzmann 分布,我們稱這個模型是Restricted BoltzmannMachine (RBM)。

首先,這個模型因為是二部圖所以在已知v的情況下,所有的隱藏節點之間是條件獨立的(因為節點之間不存在連接),即p(h|v)=p(h1|v)…p(hn|v)。同理,在已知隱藏層h的情況下,所有的可視節點都是條件獨立的。同時又由於所有的v和h滿足Boltzmann 分布,因此,當輸入v的時候,通過p(h|v) 可以得到隱藏層h,而得到隱藏層h之后,通過p(v|h)又能得到可視層,通過調整參數,我們就是要使得從隱藏層得到的可視層v1與原來的可視層v如果一樣,那么得到的隱藏層就是可視層另外一種表達,因此隱藏層可以作為可視層輸入數據的特征,所以它就是一種Deep Learning方法。

如何訓練呢,也就是可視層節點和隱節點間的權值怎么確定呢?我們需要做一些數學分析。也就是模型了。

聯合組態(jiont configuration)的能量可以表示為:

某個組態的聯合概率分布可以通過Boltzmann 分布(和這個組態的能量)來確定:

partition function 是配分函數

potential function是勢函數

因為隱藏節點之間是條件獨立的(因為節點之間不存在連接),即:

然后我們可以比較容易(對上式進行因子分解Factorizes)得到在給定可視層v的基礎上,隱層第j個節點為1或者為0的概率

 同理,在給定隱層h的基礎上,可視層第i個節點為1或者為0的概率也可以容易得到:

給定一個滿足獨立同分布的樣本集:D={v(1), v(2),…, v(N)},我們需要學習參數θ={W,a,b}。

我們最大化以下對數似然函數(最大似然估計:對於某個概率模型,我們需要選擇一個參數。讓我們當前的觀測樣本的概率最大):

也就是對最大對數似然函數求導,就可以得到L最大時對應的參數W了。

如果,我們把隱藏層的層數增加,我們可以得到Deep Boltzmann Machine(DBM)

如果我們在靠近可視層的部分使用貝葉斯信念網格(即有向圖模型,當然這里依然限制層中節點之間沒有鏈接),而在最遠離可視層的部分使用Restricted Boltzmann Machine,我們可以得到DeepBelief Net(DBN)。

9.4、Deep Belief Networks深信度網絡

DBNs是一個概率生成模型,與傳統的判別模型的神經網絡相對,生成模型是建立一個觀察數據和標簽之間的聯合分布,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅而已評估了后者,也就是P(Label|Observation)

對於在深度神經網絡應用傳統的BP算法的時候,DBNs遇到了以下問題:

(1)需要為訓練提供一個有標簽的樣本集

(2)學習過程較慢

(3)不適當的參數選擇會導致學習收斂於局部最優解

DBNs由多個限制玻爾茲曼機(Restricted Boltzmann Machines)層組成,一個典型的神經網絡類型如第一個圖所示。這些網絡被限制為一個可視層和一個隱層,層間存在連接,但層內的單元間不存在連接。隱層單元被訓練去捕捉在可視層表現出來的高階數據的相關性

首先,先不考慮最頂構成一個聯想記憶的兩層,一個DBN的連接是通過自頂向下的生成權值來指導確定的,RBMs就像一個建築塊一樣,相比傳統和深度分層的sigmoid信念網絡,它能易於連接權值的學習。

最開始的時候,通過一個非監督貪婪逐層方法去預訓練獲得生成模型的權值,非監督貪婪逐層方法被Hinton證明是有效的,並被其成為對比分歧。

在這個訓練階段,在可視層會產生一個向量v,通過它將值傳遞到隱層。反過來,可視層的輸入會被隨機的選擇,以嘗試去重構原始的輸入信號。最后,這些新的可視的神經元激活單元將前向傳遞重構隱層激活單元,獲得h(在訓練過程中,首先將可視向量值映射給隱單元;然后可視單元由隱層單元重建;這些新可視單元再次映射給隱單元,這樣就獲取新的隱單元;執行這種反復步驟叫作吉布斯采樣)。這些后退和前進的步驟就是我們熟悉的Gibbs采樣,而隱層激活單元和可視層輸入之間的相關性差別就作為權值更新的主要依據

訓練時間會顯著的減少,因為只需要單個步驟就可以接近最大似然學習。增加進網絡的每一層都會改進訓練數據的對數概率,我們可以理解為越來越接近能量的真實表達。這個有意義的拓展,和無標簽數據的使用,是任何一個深度學習應用的決定性的因素。

 在最高兩層,權值被連接到一起,這樣更低的輸出將會提供一個參考的線索或者關聯給頂層,這樣頂層就會將其聯系到它的記憶內容。而我們最關心的,最后想得到的就是判別性能,例如分類任務里面。

 在預訓練后,DBN可以通過利用帶標簽數據用BP算法去對判別性能做調整在這里,一個標簽集將被附加到頂層(推廣聯想記憶),通過一個自下而上的,學習到的識別權值獲得一個網絡的分類面。這個性能會比單純的BP算法訓練的網絡好。這可以很直觀的解釋,DBNs的BP算法只需要對權值參數空間進行一個局部的搜索,這相比前向神經網絡來說,訓練時要快的。而且收斂的時間也少。

 


免責聲明!

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



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