Overview
深度信念網(wǎng)絡(DBN)是神經(jīng)網(wǎng)絡的一種:
- 無監(jiān)督學習:自編碼機
- 有監(jiān)督學習:分類器
DBNs是一個概率生成模型,與傳統(tǒng)的判別模型的神經(jīng)網(wǎng)絡相對,生成模型是建立一個觀察數(shù)據(jù)和標簽之間的聯(lián)合分布,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅而已評估了后者,也就是P(Label|Observation)。(???并不明白神馬意思,但是不明覺厲的我決定搬過來)
作為一種神經(jīng)網(wǎng)絡,其基礎構(gòu)建模型為受限玻爾茲曼機(Restricted Bolzman Machine),in short -> DBN是由多層RBM組成的。分析DBN表現(xiàn)出的性質(zhì)與其局限性均需從RBM入手。
受限玻爾茲曼機(RBM)
RBM是一種神經(jīng)感知器,由一個顯層和一個隱層構(gòu)成,顯層與隱層的神經(jīng)元之間為雙向全連接。如下圖所示:

上面這張圖是一個完整的DBN的模型,我簡化一下大概這樣:
- DBN = RBMs = Hs + V
- RBM = H + V
其中相鄰兩層即為一個RBM,每個RBM層以上一RBM層的輸出(h)為輸入(v),并向下一層RBM提供輸入(v)。像堆積木一樣一層層壘上去,就成了“深”度學習模型DBNs。如下圖為一個RBM層的結(jié)構(gòu):

那么問題來了,我是誰?。。我在哪?。。我要干啥?。。這一層層輸入當輸出的雙向連接層想搞個大新聞么?
數(shù)學原(bu)理(xiang)比(shou)較(da)枯(gong)燥(shi),詳細的推理請看這里。
辣么其他不準備自己手動實現(xiàn)DBN而是借用Keras之類封裝好的工具處理已有數(shù)據(jù)的孩紙請看向??看:
- 訓練目標:通過訓練,使得隱層能較為精準地顯示顯層的特征,甚至達到還原顯層的程度。
- 訓練參數(shù):h、v、b、c、w(后三個是學習得到的)
w - 任意兩個相連的神經(jīng)元之間有一個權值w表示其連接強度;
b、c - 每個神經(jīng)元自身有一個偏置系數(shù)b(對顯層神經(jīng)元)和c(對隱層神經(jīng)元)來表示其自身權重;
v - 輸入向量
h - 輸出向量
- 計算公式:(注意雙向連接層,因此可以互相激活)(σ 為 Sigmoid 函數(shù))
隱層神經(jīng)元hj被激活概率:
顯層神經(jīng)元vi被激活概率:
-
更新參數(shù)公式:此處給出一個訓練過程例子幫助理解參數(shù)的更新過程:
Reference
[1] 深度學習-深度信念(置信)網(wǎng)絡(DBN)-從原理到實現(xiàn)(DeepLearnToolBox)
[2] DBN(深度置信網(wǎng)絡
end if
Source code: Keras + Theano => DBN
end


