深度學習之受限玻爾茲曼機


1、什么是受限玻爾茲曼機

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

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

    

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

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

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

 

2、能量函數和概率分布

  RBM是基於基於能量的概率分布模型。分為兩個部分:第一部分是能量函數,第二部分是基於能量函數的概率分布函數。對於給定的狀態向量hv,則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上使用。只是此時我們的模型參數更加的多,而且迭代求解參數也更加復雜了。


免責聲明!

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



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