大話深度信念網絡(DBN)

—— 原文發佈於本人的微信公衆號“大數據與人工智能Lab”(BigdataAILab),歡迎關注。

 


讓我們把時間撥回到2006年以前,神經網絡自20世紀50年代發展起來後,因其良好的非線性能力、泛化能力而備受關注。然而,傳統的神經網絡仍存在一些侷限,在上個世紀90年代陷入衰落,主要有以下幾個原因:
1、傳統的神經網絡一般都是單隱層,最多兩個隱層,因爲一旦神經元個數太多、隱層太多,模型的參數數量迅速增長,模型訓練的時間非常之久;
2、傳統的神經網絡,隨着層數的增加,採用隨機梯度下降的話一般很難找到最優解,容易陷入局部最優解。在反向傳播過程中也容易出現梯度彌散或梯度飽和的情況,導致模型結果不理想;
3、隨着神經網絡層數的增加,深度神經網絡的模型參數很多,就要求在訓練時需要有很大的標籤數據,因爲訓練數據少的時候很難找到最優解,也就是說深度神經網絡不具備解決小樣本問題的能力。

由於以上的限制,深度的神經網絡一度被認爲是無法訓練的,從而使神經網絡的發展一度停滯不前。

2006年,“神經網絡之父”Geoffrey Hinton祭出神器,一舉解決了深層神經網絡的訓練問題,推動了深度學習的快速發展,開創了人工智能的新局面,使近幾年來科技界涌現出了很多智能化產品,深深地影響了我們每個人的生活。

那這個神器是什麼呢?那就是“深度信念網絡”(Deep Belief Network,簡稱DBN)。

深度信念網絡(DBN)通過採用逐層訓練的方式,解決了深層次神經網絡的優化問題,通過逐層訓練爲整個網絡賦予了較好的初始權值,使得網絡只要經過微調就可以達到最優解。而在逐層訓練的時候起到最重要作用的是“受限玻爾茲曼機”(Restricted Boltzmann Machines,簡稱RBM),爲什麼叫“受限玻爾茲曼機”呢?因爲還有一個是不受限的,那就是“玻爾茲曼機”(Boltzmann Machines,簡稱BM)
下面依次介紹一下什麼是“玻爾茲曼機”(BM)、“受限玻爾茲曼機”(RBM)?

一、玻爾茲曼機(Boltzmann Machines,簡稱BM)
 
玻爾茲曼機於1986年由大神Hinton提出,是一種根植於統計力學的隨機神經網絡,這種網絡中神經元只有兩種狀態(未激活、激活),用二進制0、1表示,狀態的取值根據概率統計法則決定。
由於這種概率統計法則的表達形式與著名統計力學家L.E.Boltzmann提出的玻爾茲曼分佈類似,故將這種網絡取名爲“玻爾茲曼機”。
在物理學上,玻爾茲曼分佈(也稱爲吉布斯分佈,Gibbs Distribution)是描述理想氣體在受保守外力的作用(或保守外力的作用不可忽略)時,處於熱平衡態下的氣體分子按能量的分佈規律。
在統計學習中,如果我們將需要學習的模型看成高溫物體,將學習的過程看成一個降溫達到熱平衡的過程(熱平衡在物理學領域通常指溫度在時間或空間上的穩定),最終模型的能量將會收斂爲一個分佈,在全局極小能量上下波動,這個過程稱爲“模擬退火”,其名字來自冶金學的專有名詞“退火”,即將材料加熱後再以一定的速度退火冷卻,可以減少晶格中的缺陷,而模型能量收斂到的分佈即爲玻爾茲曼分佈。
聽起來很難理解的樣子,只需要記住一個關鍵點:能量收斂到最小後,熱平衡趨於穩定,也就是說,在能量最少的時候,網絡最穩定,此時網絡最優。

玻爾茲曼機(BM)是由隨機神經元全連接組成的反饋神經網絡,且對稱連接,由可見層、隱層組成,BM可以看做是一個無向圖,如下圖所示:
 
其中,x1、x2、x3爲可見層,x4、x5、x6爲隱層。
整個能量函數定義爲
 
其中,w爲權重,b爲偏置變量,x只有{0,1}兩種狀態。
根據玻爾茲曼分佈,給出的一個系統在特定狀態能量和系統溫度下的概率分佈,如下:
 
前面講過,“能量收斂到最小後,熱平衡趨於穩定”,因此:
1、簡單粗暴法
要尋找一個變量使得整個網絡的能量最小,一個簡單(但是低效)的做法是選擇一個變量,在其它變量保持不變的情況下,將這個變量設爲會導致整個網絡能量更低的狀態。那麼一個變量Xi的兩個狀態0(關閉)和1(打開)之間的能量差異爲:
 
這時,如果能量差異ΔE大於一定的閾值(比如0),我們就設Xi = 1(也即取能量小的),否則就設Xi = 0。這種簡單的方法通過反覆不斷運行,在一定時間之後收斂到一個解(可能是局部最優解)。
2、最大似然法
利用“模擬退火”原理尋找全局最優解,根據玻爾茲曼分佈,Xi=1的概率爲:
 
訓練集v的對數似然函數爲:
 
對每個訓練向量p(v)的對數似然對參數w求導數,得到梯度:
 
跟傳統的神經網絡類似,參數w的更新公式如下(a爲學習率):
     
好了好了,公式就講到這裏了,看上去挺複雜的,沒錯,確實計算很複雜,這個梯度很難精確計算,整個計算過程會十分地耗時。
目前,可以通過一些採樣方法(例如Gibbs採樣)來進行近似求解。

玻爾茲曼機(BM)可以用在監督學習和無監督學習中。在監督學習中,可見變量又可以分爲輸入和輸出變量,隱變量則隱式地描述了可見變量之間複雜的約束關係。在無監督學習中,隱變量可以看做是可見變量的內部特徵表示,能夠學習數據中複雜的規則。玻爾茲曼機代價是訓練時間很長很長很長

二、受限玻爾茲曼機(Restricted Boltzmann Machines,簡稱RBM)
 
所謂“受限玻爾茲曼機”(RBM)就是對“玻爾茲曼機”(BM)進行簡化,使玻爾茲曼機更容易更加簡單使用,原本玻爾茲曼機的可見元和隱元之間是全連接的,而且隱元和隱元之間也是全連接的,這樣就增加了計算量和計算難度。
“受限玻爾茲曼機”(RBM)同樣具有一個可見層,一個隱層,但層內無連接,層與層之間全連接,節點變量仍然取值爲0或1,是一個二分圖。也就是將“玻爾茲曼機”(BM)的層內連接去掉,對連接進行限制,就變成了“受限玻爾茲曼機”(RBM),這樣就使得計算量大大減小,使用起來也就方便了很多。如上圖。
“受限玻爾茲曼機”(RBM)的特點是:在給定可見層單元狀態(輸入數據)時,各隱層單元的激活條件是獨立的(層內無連接),同樣,在給定隱層單元狀態時,可見層單元的激活條件也是獨立的。

跟“玻爾茲曼機”(BM)類似,根據玻爾茲曼分佈,可見層(變量爲v,偏置量爲a)、隱層(變量爲h,偏置量爲b)的概率爲:
 
訓練樣本的對數似然函數爲:
 
求導數:
 
總之,還是挺複雜的,計算也還是挺花時間的。
同樣,可以通過Gibbs 採樣的方法來近似計算。雖然比一般的玻爾茲曼機速度有很大提高,但一般還是需要通過很多步採樣纔可以採集到符合真實分佈的樣本。這就使得受限玻爾茲曼機的訓練效率仍然不高。
2002年,大神Hinton再出手,提出了“對比散度”(Contrastive Divergence,簡稱CD)算法,這是一種比Gibbs採樣更加有效的學習算法,促使大家對RBM的關注和研究。

RBM的本質是非監督學習的利器,可以用於降維(隱層設置少一點)、學習提取特徵(隱層輸出就是特徵)、自編碼器(AutoEncoder)以及深度信念網絡(多個RBM堆疊而成)等等。

三、深度信念網絡(Deep Belief Network,簡稱DBN)
 
2006年,Hinton大神又又又出手了,提出了“深度信念網絡”(DBN),並給出了該模型一個高效的學習算法,這也成了深度學習算法的主要框架,在該算法中,一個DBN模型由若干個RBM堆疊而成,訓練過程由低到高逐層進行訓練,如下圖所示:
 
回想一下RBM,由可見層、隱層組成,顯元用於接受輸入,隱元用於提取特徵,因此隱元也有個別名,叫特徵檢測器。也就是說,通過RBM訓練之後,可以得到輸入數據的特徵。(感性對比:聯想一下主成分分析,提取特徵)
另外,RBM還通過學習將數據表示成概率模型,一旦模型通過無監督學習被訓練或收斂到一個穩定的狀態,它還可以被用於生成新數據。(感性對比:聯想一下曲線擬合,得出函數,可用於生成數據)

正是由於RBM的以上特點,使得DBN逐層進行訓練變得有效,通過隱層提取特徵使後面層次的訓練數據更加有代表性,通過可生成新數據能解決樣本量不足的問題。逐層的訓練過程如下:
(1)最底部RBM以原始輸入數據進行訓練
(2)將底部RBM抽取的特徵作爲頂部RBM的輸入繼續訓練
(3)重複這個過程訓練以儘可能多的RBM層
 
由於RBM可通過CD快速訓練,於是這個框架繞過直接從整體上對DBN高度複雜的訓練,而是將DBN的訓練簡化爲對多個RBM的訓練,從而簡化問題。而且通過這種方式訓練後,可以再通過傳統的全局學習算法(如BP算法)對網絡進行微調,從而使模型收斂到局部最優點,通過這種方式可高效訓練出一個深層網絡出來,如下圖所示:

Hinton提出,這種預訓練過程是一種無監督的逐層預訓練的通用技術,也就是說,不是隻有RBM可以堆疊成一個深度網絡,其它類型的網絡也可以使用相同的方法來生成網絡。

 

牆裂建議

Hinton 大神寫了一篇關於受限玻爾茲曼機的訓練實用指南(《A Practical Guide to Training Restricted Boltzmann Machines》),非常詳細地描述訓練過程,建議仔細閱讀下這篇論文,肯定大有收穫。

掃描以下二維碼關注本人公衆號“大數據與人工智能Lab”(BigdataAILab),然後回覆“論文”關鍵字可在線閱讀這兩篇經典論文的內容。

 

推薦相關閱讀


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章