1. 程式人生 > >七.RBM受限玻爾茲曼機

七.RBM受限玻爾茲曼機

1、受限玻爾茲曼機

   玻爾茲曼機是一大類的神經網路模型,但是在實際應用中使用最多的則是受限玻爾茲曼機(RBM)。

  受限玻爾茲曼機(RBM)是一個隨機神經網路(即當網路的神經元節點被啟用時會有隨機行為,隨機取值)。它包含一層可視層和一層隱藏層。在同一層的神經元之間是相互獨立的,而在不同的網路層之間的神經元是相互連線的(雙向連線)。在網路進行訓練以及使用時資訊會在兩個方向上流動,而且兩個方向上的權值是相同的。但是偏置值是不同的(偏置值的個數是和神經元的個數相同的),受限玻爾茲曼機的結構如下

    

  上面一層神經元組成隱藏層(hidden layer), 用

h">h向量隱藏層神經元的值。下面一層的神經元組成可見層(visible layer),用v向量表示可見層神經元的值。連線權重可以用矩陣W表示。和DNN的區別是,RBM不區分前向和反向,可見層的狀態可以作用於隱藏層,而隱藏層的狀態也可以作用於可見層。隱藏層的偏倚係數是向量b,而可見層的偏倚係數是向量a。

  常用的RBM一般是二值的,即不管是隱藏層還是可見層,它們的神經元的取值只為0或者1。

  RBM模型結構的結構:主要是權重矩陣W, 偏倚係數向量a和b,隱藏層神經元狀態向量h和可見層神經元狀態向量v。

 

2、能量函式和概率分佈

  RBM是基於基於能量的概率分佈模型。分為兩個部分:第一部分是能量函式,第二部分是基於能量函式的概率分佈函式。對於給定的狀態向量

h">h和v,則RBM當前的能量函式可以表示為:

    

  其中a,b是偏倚係數,而W是權重矩陣。有了能量函式,v,h的聯合概率分佈為:

    

  其中Z是被稱為配分函式的歸一化常數(對於概率輸出一般都要做歸一化):

    

  由於配分函式Z的難以處理,所以必須使用最大似然梯度來近似。首先從聯合分佈中匯出條件分佈:

    

  為了推導方便將無關值歸於Z’中:

    

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

    

  可以看到就是相當於使用了sigmoid啟用函式,現在可以寫出關於隱藏層的完全條件分佈: 

    

  有了啟用函式,我們就可以從可見層和引數推匯出隱藏層的神經元的取值概率了。對於0,1取值的情況,則大於0.5即取值為1。從隱藏層和引數推匯出可見的神經元的取值方法也是一樣的。

 

3、RBM損失函式 

 

  RBM模型的關鍵就是求出我們模型中的引數W,a,b。首先我們得寫出損失函式,RBM一般採用對數損失函式,即期望最小化下式:

     

  然後求偏導可得:

    

    

    

  雖然說梯度下降從理論上可以用來優化RBM模型,但實際中是很難求得P(v)的概率分佈的(P(v)表示可見層節點的聯合概率)。計算複雜度非常大,因此採用一些隨機取樣的方法來得到近似的解。看這三個梯度的第二項實際上都是求期望,而我們知道,樣本的均值是隨機變數期望的無偏估計。因此一般都是基於對比散度方法來求解。

 

4、 對比散度演算法(CD)

  CD演算法大概思路是這樣的,從樣本集任意一個樣本v0開始,經過k次Gibbs取樣(實際中k=1往往就足夠了),即每一步是:

    

  得到樣本vk,然後對應於上一篇三個單樣本的梯度,用vk去近似:

    

    

    

  上述近似的含義是說,用一個取樣出來的樣本來近似期望的計算。下面給出CD-k的演算法執行流程。

    

  具體RBM演算法的流程:

    

 

5、深度玻爾茲曼機(DBM)

  加深RBM的層數後,就變成了DBM,結構圖如下:

    

  此時的能量函式變為:

    

  聯合概率變成:

    

  其實DBM也可以看做是一個RBM,比如對上圖稍微加以變換就可以看做是一個RBM。

     

  將可見層和偶數隱藏層放在一邊,將奇數隱藏層放在另一邊,我們就得到了RBM,和RBM的細微區別只是現在的RBM並不是全連線的,其實也可以看做部分權重為0的全連線RBM。RBM的演算法思想可以在DBM上使用。只是此時我們的模型引數更加的多,而且迭代求解引數也更加複雜了。