前言
論文“Deep Boltzmann Machines”是Geoffrey Hinton和他的大牛學生Ruslan Salakhutdinov在論文“Reducing the Dimensionality of Data with Neural Networks”合作后的又一次聯合發表的一篇有深遠影響的論文,這篇論文第一次提出了DBM及其學習方法,對DBM原理、來源都做了詳細講解。
論文內容
前面介紹的都是BM原理及其訓練,可以不用管它,下面直接從第3節開始……
3.DBM
一般情況下,我們很少對復雜的全連接的玻爾茲曼機(BM)感興趣,而是對一個深度多層的BM感興趣,具體見圖2的左邊部分。圖中的每一層都能從下一層隱藏特征的激活值中提取出更高階的特征。我們對DBM感興趣有如下幾個原因。第一,與DBN一樣,DBM也有學習內部特征的能力且DBM在目標和語音識別方面的作用非常有前途;第二,DBM能從大量的無標簽數量中學習出高階特征,然后再用少量有標簽數據對整個模型微調;第三,與DBN不一樣,DBM的逼近推導過程,除了有自底向上的傳播之外,還包含了自頂向下的反饋,從而使DBM能更好地傳播模糊輸入的不確定性,因此它的魯棒性更好。

圖2. 左圖:一個三層的DBN和一個三層的DBM;右圖:預訓練一系列RBM,然后把它們組合成一個DBM
對於一個無層內連接的2層的BM(即:RBM),它的能量函數如下:

可視層向量V的概率密度函數如下:

對可視單元和兩層隱藏單元的條件概率分布如下:

對於DBM的最大似然函數的逼近學習,仍可用上面提到的普通BM的學習方法,但是學習速率會非常慢,特別是隱含層越多學習速率會越慢。下面一節提出一種快速的算法來初始化模型參數。
3.1 利用逐層貪婪算法預訓練DBM
hinton在2006年的論文“A Fast Learning Algorithm for Deep Belief Nets”中介紹了一種逐層貪婪無監督學習算法。在一系列堆疊的RBM中,該算法一次只學習一個RBM,依次學習。在學習完整個堆疊的RBM后,可以把這個用RBM堆積起來的模型看作成一個概率模型,叫“深度信念網絡(DBN)”。特別注意,這個模型並不是一個DBM。DBN的最上面兩層是一個RBM,它是一個無向圖模型,但DBN其余下面的層是一個有向生成模型(見圖2)。在學習完DBN中的第一個RBM后,生成模型可寫成如下形式:

其中,p(h1;w1)是h1的隱式先驗概率。對DBM中的第二個RBM,實際上就是用p(h1;w2)代替原來的p(h1;w1)。如果第2個RBM按照論文“A Fast Learning Algorithm for Deep Belief Nets”中的方法進行正確的初始化,p(h1;w2)就會變為一個更好的h1的后驗分布模型,在這個模型中,這個后驗分布對於所有訓練樣本都是一個簡單的階乘后驗組合成的非階乘混合。因為第2個RBM用了一個更好地模式取代了p(h1;w1),那么就可能通過對這兩個模型中的h1求平均從而推導出p(h1;w1,w2),具體方法就是把自底向上得到的w1的一半和自頂向下得到的w2的一半相加。這里利用的自底向上得到的w1和自頂向下得到的w2,就相當於重復計算了,因為h2對v是獨立的。
為了初始化DBM的模型參數,本文提出了逐層貪婪預訓練RBM堆的算法,但是同論文“A Fast Learning Algorithm for Deep Belief Nets”中方法相比,有一個小小的變化,這是為了消除把自頂向下和自底向上聯合在一起所帶來的重復計算問題。對於最下層的RBM,我們使輸入單元加倍且約束住可視層與隱含層間的權值,見圖2右邊部分。這個用相關參數修改過的RBM對隱藏單元和可視單元的條件概率分布如下:

CD算法用於這個RBM的預訓練可得到非常好的結果,而這個修改過的RBM也能很好地重建訓練數據。相反地,可把最頂層的RBM的隱藏單元數加倍。最頂層RBM的條件分布如下:

當這兩個模塊組合成一個模型后,進入第一個隱含層的總輸入,有如下h1的條件分布:

對V和h2的條件分布同式16和18一樣。
通過觀察可發現,上面現個RBM組合而成的模型的條件分布與DBM的條件分布(式11、12、13)是一樣的。因此,用貪婪算法預訓練這兩個修改過的RBM可得到一個權值對稱的無向模型——DBM。當用貪婪算法預訓練2個以上RBM時,只需要修改最底和最頂的2個RBM。對所有中間的RBM,只需要在組合成DBM的時候,簡單把兩個方向上的權值均分即可。
以上面的貪婪算法預訓練DBM的權值,有2個目的。第一,使權值初始化到一個合適的值,見實驗結果部分。第二,有一個快速方法進行逼近推導,該方法以通過RBM堆單一向上傳播的方式進行。在可視層給一個數據向量,通過自底向上的傳遞,每個隱含層單元都能被激活,且用自底向上翻倍輸入的方式來彌補自上而下反饋的缺乏(除了最高一層沒有自上而下的輸入外)。這種快速逼近推導方法通常用來初始化平均場方法,該初始化方法比隨機初始化法收斂更快。
3.2 評估DBM
最近,Salakhutdinov 和Murray在2008年提出了一種利用退火式重要性抽樣(AIS,基於蒙特卡羅的算法,Radford M. Neal於1998年在論文“Annealed Importance Sampling”中首次提出)來評估RBM的配分函數的方法(Estimating Partition Functions of RBM's)。本小節介紹了怎樣利用AIS來評估DBM的配分函數。與變分推導一起,就會較好地評估出測試數據對數概率的下界。
3.3 DBM的微調
完成上面的學習后,DBM中每一層的二值特征由原來的激活值變為一個確定的真實概率。DBM將會以下面的方式初始化為一個層數確定的多層神經網絡。對於每個輸入向量v,通過平均場推導可得到一個近似后驗分布q(h|v)。這個近似后驗分布的邊緣分布q(h2j=1|v)與樣本數據一起作為這個深度多層神經網絡的“增廣”輸入,見圖3。然后通過標准的后向傳播微調這個模型。

圖3:學習完成后,DBM被初始化為一個多層神經網絡。邊緣后驗概率q(h2|v)作為另外一個輸入。這個網絡通過后向傳播進行微調。
上面這個不同尋常的輸入,實際上只是把DBM轉換為一個確定層數的神經網絡所得到一個副產品。基於梯度的微調一般會忽略q(h2|v),比如,使第一層的連接權值W2為0就會得到一個標准神經網絡模型。相反地,這個模型使第一層的連接權值W1為0就會忽略數據的輸入。在我做的實驗中,這個模型是用整個增廣輸入來作預測。
4 實驗結果
在實驗中,利用了MNIST和NORB數據集。為了加快學習速率,數據集被細分為了很多個mini-batches。每個mini-batches包含了100個樣本,每完成一個mini-batches的學習就更新一次權值。fantasy particles(理解:就是一對(vi,hi)形成的系統)用於追蹤模型的統計,它的數量為100的平方。對於隨機逼近算法,本實驗用5步Gibbs采樣更新fantasy particles。學習速率初始化為0.005,然后逐漸降到0。對於DBM的微調,實驗中在5000個mini-batches基礎上用共軛梯度算法進行微調,在每次迭代中對每個mini-batches進行3次線性搜索。
4.1 MNIST數據集
文章中說,通過這個實驗發現DBM比DBN要好。原話:Table 1 shows that the estimates of the lower bound on the average test logprobability were −84.62 and −85.18 for the 2- and 3-layer BM’s respectively. This result is slightly better compared to the lower bound of −85.97, achieved by a two-layer deep belief network (Salakhutdinov and Murray, 2008).

圖4: 左圖:實驗中的2個DBM; 右圖:訓練集中隨機抽樣出的樣本和從2個DBM中通過10萬步Gibbs采樣所得到對應的樣本。圖中顯示的是已知隱藏單元狀態條件下的可視單元概率密度。
2層的BM錯誤識別率只有0.95%,在該論文之前,這個錯誤率是最低的。3層的BM的錯誤識別率為1.01%,而SVM的錯誤率是1.4%,隨機初始化后向傳播錯誤率是1.6%,DBN的錯誤率是1.2%(hinton 2006)。
4.2 NORB數據集
本實驗中的2層BM的錯誤率為10.8%,SVM的錯誤率是11.6%,邏輯回歸的錯誤率是22.5%,K均值的錯誤率是18.4%。
——
