大話深度信念網絡(DBN)

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

 


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

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

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

那這個神器是什麼呢?那就是「深度信念網絡」(Deep Belief Network,簡稱DBN)。分佈式

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

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

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

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

2、受限玻爾茲曼機(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堆疊而成)等等。

3、深度信念網絡(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),而後回覆「論文」關鍵字可在線閱讀這兩篇經典論文的內容。

 

推薦相關閱讀

相關文章
相關標籤/搜索