1、什么是受限玻爾茲曼機
玻爾茲曼機是一大類的神經網絡模型,但是在實際應用中使用最多的則是受限玻爾茲曼機(RBM)。
受限玻爾茲曼機(RBM)是一個隨機神經網絡(即當網絡的神經元節點被激活時會有隨機行為,隨機取值)。它包含一層可視層和一層隱藏層。在同一層的神經元之間是相互獨立的,而在不同的網絡層之間的神經元是相互連接的(雙向連接)。在網絡進行訓練以及使用時信息會在兩個方向上流動,而且兩個方向上的權值是相同的。但是偏置值是不同的(偏置值的個數是和神經元的個數相同的),受限玻爾茲曼機的結構如下
上面一層神經元組成隱藏層(hidden layer), 用h向量隱藏層神經元的值。下面一層的神經元組成可見層(visible layer),用v向量表示可見層神經元的值。連接權重可以用矩陣W表示。和DNN的區別是,RBM不區分前向和反向,可見層的狀態可以作用於隱藏層,而隱藏層的狀態也可以作用於可見層。隱藏層的偏倚系數是向量b,而可見層的偏倚系數是向量a。
常用的RBM一般是二值的,即不管是隱藏層還是可見層,它們的神經元的取值只為0或者1。
RBM模型結構的結構:主要是權重矩陣W, 偏倚系數向量a和b,隱藏層神經元狀態向量h和可見層神經元狀態向量v。
2、能量函數和概率分布
RBM是基於基於能量的概率分布模型。分為兩個部分:第一部分是能量函數,第二部分是基於能量函數的概率分布函數。對於給定的狀態向量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上使用。只是此時我們的模型參數更加的多,而且迭代求解參數也更加復雜了。