常見的五種神經網絡(4)-深度信念網絡(下)篇之深度信念網絡的原理解讀、參數學習

該系列的其他文章:

在上一篇文章中介紹了玻爾茲曼機和受限玻爾茲曼機(閱讀詳情),這篇文章中介紹一下深度信念網絡。

深度信念網絡介紹

深度信念網絡(Deep Belief Netword, DBN)是一種深層的概率有向圖模型,其圖結構有多層的節點構成。每層節點的內部沒有連接,相鄰兩層的節點之間爲全連接。網絡的最底層爲可觀測的變量,其他層節點都爲隱變量。最頂部的兩層間的連接是無向的,其他層之間的連接是有向的。下圖給出了一個深度信念網絡的示例。

4層結構的深度信念網絡

對一個有LL層隱變量的深度信念網絡,令v=h(0)v=h^{(0)}表示最底層(第0層)爲可觀測變量,h(1),...,h(L)h^{(1)}, ..., h^{(L)}表示其餘每層的變量。頂部的兩層是一個無向圖,可以看作是一個受限玻爾茲曼機,用來產生p(h(L1))p(h^{(L-1)})的先驗分佈。除了最頂上兩層外,每一層變量h(l)h^{(l)}依賴於其上面一層h(l+1)h^{(l+1)},即:
p(h(l)h(l+1),...,h(L))=p(h(l)h(l+1)) p(h^{(l)} | h^{(l+1)}, ..., h^{(L)}) = p(h^{(l)} | h^{(l+1)})
其中l={0,...,L2}l=\{0,...,L-2\}

深度信念網絡中所有變量的聯合概率可以分解爲:
p(v,h(1),...,h(L))=p(vh(1))(l=1L2p(h(l)h(l+1)))p(h(L1),h(L))=l=0L1p(h(l)h(l+1))p(h(L1),h(L)) p(v,h^{(1)},...,h^{(L)}) = p(v|h^{(1)})( \prod_{l=1}^{L-2} p(h^{(l)} | h^{(l+1)} ) )p( h^{(L-1)}, h^{(L)}) \\ = \prod_{l=0}^{L-1} p(h^{(l)} | h^{(l+1)} ) p(h^{(L-1)},h^{(L)})

其中p(hlh(l+1))p(h^{l} | h^{(l+1)})爲sigmoid型條件概率分佈爲:
p(h(l)h(l+1))=σ(a(l)+W(l+1)h(l+1)) p(h^{(l)} | h^{(l+1)}) = \sigma (a^{(l)}+W^{(l+1)} h^{(l+1)})
其中σ(.)\sigma(.) 爲按位計算的logistic sigmoid函數,a(l)a^{(l)}爲偏置參數,W(l+1)W^{(l+1)}爲權重參數。這樣,每一個層都可以看作是一個Sigmoid信念網絡。

生成模型

DBN是一個生成模型,可以用來生成符合特定分佈的樣本。隱變量用來描述在可觀測變量之間的高階相關性。假如訓練數據服從分佈p(v)p(v),通過訓練得到一個深度信念網絡。

在生成樣本時,首先在最頂兩層進行足夠多次的吉布斯採樣,生成h(L1)h^{(L-1)},然後依次計算下一層隱變量的分佈。因爲在給定上一層變量取值時,下一層的變量是條件獨立的,因爲可以獨立採樣。這樣我們就可以從第L1L-1層開始,自頂向下進行逐層採樣,最終得到可觀測層的樣本。

參數學習

DBN最直接的訓練方式可以通過最大似然方法使得可觀測變量的邊際分佈p(v)p(v)在訓練集合上的似然達到最大。但在深度信念網絡中,隱變量hh之間的關係十分複雜,由於“貢獻度分配問題”,很難直接學習。即使對於簡單的單層Sigmoid信念網絡
p(v=1h)=σ(b+wTh) p(v=1 | h) = \sigma (b + w^Th)
在已知可觀察變量時,其隱變量的聯合後驗概率p(hv)p(h|v)不再相互獨立,因此很難精確估計所有隱變量的後驗概率。早起深度信念網絡的後驗概率一般通過蒙特卡洛方法或變分方法來近似估計,但是效率比較低,而導致其參數學習比較困難。

爲了有效地訓練深度信念網絡,我們將每一層的Sigmoid信念網絡轉換爲受限玻爾茲曼機。這樣做的好處是隱變量的後驗概率是相互獨立的,從而可以很容易地進行採樣。這樣,深度信念網絡可以看作是由多個受限玻爾茲曼機從上到下進行堆疊,第ll層受限玻爾茲曼機的隱層作爲第l+1l+1層受限玻爾茲曼機可觀測層。進一步地,深度信念網絡可以採用逐層訓練的方式來快速訓練,即從最底層開始,每次只訓練一層,直到最後一層。

深度信念網絡的訓練過程可以分爲預訓練和精調兩個階段。先通過逐層預訓練將模型的參數初始化爲較優的值,再通過傳統學習方法對參數進行精調。

逐層預訓練
在預訓練階段,採用逐層訓練的方式,將深度信念網絡的訓練簡化爲多個玻爾茲曼機的訓練。下圖給出了深度信念網絡的逐層預訓練過程。

深度信念網絡的逐層預訓練過程

具體的逐層訓練過程爲自下而上依次訓練每一層的受限玻爾茲曼機。假設我們已經訓練好了前l1l-1層的受限玻爾茲曼機,那麼可以計算隱變量自下而上的條件概率
p(h(i)h(i1))=σ(b(i)+W(i)h(i1)),1i(l1) p(h^{(i)} | h^{(i-1)}) = \sigma( b^{(i)} + W^{(i) h^{(i-1)}} ), 1 \leq i \leq (l-1)
其中b(i)b^{(i)}爲第ii層受限玻爾茲曼機的偏置,W(i)W^{(i)}爲連接權重。這樣,可以按照 v=h(0)>h(1)>...>h(l1)v=h^{(0)} -> h^{(1)} -> ... -> h^{(l-1)}的順序生成一組h(l1)h^{(l-1)}的樣本,記爲H^(l1)=h^(l,1),...,h^(l,M)\hat{H} ^{(l-1)} = {\hat{h}^{(l,1)}, ..., \hat{h}^{(l,M)} }。然後將h(l1)h^{(l-1)}h(l)h^{(l)}組成一個受限玻爾茲曼機,用H^(l1)\hat{H}^{(l-1)}作爲訓練集充分訓練第ll層的受限玻爾茲曼機。

下圖的算法流程給出了一種深度信念網絡的逐層預訓練方法。大量的實踐表明,逐層預訓練可以產生非常好的參數初始值,從而極大的降低了模型的學習難度。

算法流程

精調

經過預訓練之後,再結合具體的任務(監督學習或無監督學習),通過傳統的全局學習算法對網絡進行精調(fin-tuning),使模型收斂到更好的局部最優點。

作爲生成模型的精調,除了頂層的受限玻爾茲曼機,其他層之間的權重被分成向上的認知權重(recognition weights)WW'和向下的生成權重(generative weights)WW。認知權重用來進行後驗概率計算,而生成權重用來進行定義模型。認知權重的初始值W(l)=W(l)TW'^{(l)}=W^{(l)T}

深度信念網絡一般採用contrastive wake-sleep算法進行精調,其算法過程是:

  • Wake階段:認知過程,通過外界輸入(可觀測變量)和向上認知權重,計算每一層隱變量的後驗概率並採樣。然後,修改下行的生成權重使得下一層的變量的後驗概率最大。也就是“如果現實跟我想象的不一樣,改變我的權重使得我想象的東西就是這樣的”
  • Sleep階段:生成過程,通過頂層的採樣和向下的生成權重,逐層計算每一層的後驗概率並採樣。然後,修改向上的認知權重使得上一層變量的後驗概率最大。也就是“如果夢中的景象不是我鬧中的相應概念,改變我的認知權重使得這種景象在我看來就是這個概念”
  • 交替進行Wake和Sleep過程,直到收斂

作爲深度神經網絡的精調 深度信念網絡的一個應用是作爲深度神經網絡的預訓練部分,提供神經網絡的初始權重。

在深度信念網絡的最頂層再增加一層輸出層,然後再使用反向傳播算法對這些權重進行調優。特別是在訓練數據比較少的時候,預訓練的作用非常大。因爲不恰當的初始化權重會顯著影響最終模型的性能,而預訓練獲得的權重在權重空間中比隨機權重更接近最優的權重,避免了反向傳播算法因隨機初始化權重參數而容易陷入局部最優和訓練時間長的缺點。這不僅僅提升了模型的性能,也加快了調優階段的收斂速度。

下圖給出了深度信念網絡作爲生成模型和判斷模型的精調過程。

精調過程

總結

玻爾茲曼機能夠學習數據的內部表示,並且其參數學習的方式和赫布型學習十分類似。沒有任何約束的玻爾茲曼機因爲過於複雜,難以應用在實際問題上。通過引入一定的約束(即變爲二分圖),受限玻爾茲曼機在特徵提取、協同過濾、分類等多個任務上取得了廣泛的應用。

和深度信念網絡十分類似的一種深度概率模型是深度玻爾茲曼機(deep Boltzmann Machines ,DBM)。深度玻爾茲曼機是由多層的受限玻爾茲曼機堆疊而成,是真正的無向圖模型,其聯合概率是通過能量函數來定義。和深度信念網絡相比,深度玻爾茲曼機的學習和推斷要更加困難。

儘管深度信念網絡作爲一種深度學習模型已經很少使用,但其在深度學習發展過程中的貢獻十分巨大,並且其理論基礎爲概率圖模型,有非常好的解釋性,依然是一種值得深入研究的模型。


掃一掃 關注微信公衆號!號主 專注於搜索和推薦系統,嘗試使用算法去更好的服務於用戶,包括但不侷限於機器學習,深度學習,強化學習,自然語言理解,知識圖譜,還不定時分享技術,資料,思考等文章!

掃一掃 關注微信公衆號!號主 專注於搜索和推薦系統,嘗試使用算法去更好的服務於用戶,包括但不侷限於機器學習,深度學習,強化學習,自然語言理解,知識圖譜,還不定時分享技術,資料,思考等文章!

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