Overview
深度信念網(wǎng)絡(luò)(DBN)是神經(jīng)網(wǎng)絡(luò)的一種:
- 無監(jiān)督學(xué)習(xí):自編碼機
- 有監(jiān)督學(xué)習(xí):分類器
DBNs是一個概率生成模型,與傳統(tǒng)的判別模型的神經(jīng)網(wǎng)絡(luò)相對搁嗓,生成模型是建立一個觀察數(shù)據(jù)和標(biāo)簽之間的聯(lián)合分布搂捧,對P(Observation|Label)和 P(Label|Observation)都做了評估星瘾,而判別模型僅僅而已評估了后者,也就是P(Label|Observation)。(缸夹?痪寻??并不明白神馬意思虽惭,但是不明覺厲的我決定搬過來)
作為一種神經(jīng)網(wǎng)絡(luò)橡类,其基礎(chǔ)構(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)。像堆積木一樣一層層壘上去咆课,就成了“深”度學(xué)習(xí)模型DBNs末誓。如下圖為一個RBM層的結(jié)構(gòu):
那么問題來了,我是誰傀蚌?基显。。我在哪善炫?。库继。我要干啥箩艺?。宪萄。這一層層輸入當(dāng)輸出的雙向連接層想搞個大新聞么艺谆?
數(shù)學(xué)原(bu)理(xiang)比(shou)較(da)枯(gong)燥(shi),詳細的推理請看這里拜英。
辣么其他不準(zhǔn)備自己手動實現(xiàn)DBN而是借用Keras之類封裝好的工具處理已有數(shù)據(jù)的孩紙請看向??看:
- 訓(xùn)練目標(biāo):通過訓(xùn)練静汤,使得隱層能較為精準(zhǔn)地顯示顯層的特征,甚至達到還原顯層的程度居凶。
- 訓(xùn)練參數(shù):h虫给、v、b侠碧、c抹估、w(后三個是學(xué)習(xí)得到的)
w - 任意兩個相連的神經(jīng)元之間有一個權(quán)值w表示其連接強度;
b弄兜、c - 每個神經(jīng)元自身有一個偏置系數(shù)b(對顯層神經(jīng)元)和c(對隱層神經(jīng)元)來表示其自身權(quán)重药蜻;
v - 輸入向量
h - 輸出向量
- 計算公式:(注意雙向連接層瓷式,因此可以互相激活)(σ 為 Sigmoid 函數(shù))
隱層神經(jīng)元hj被激活概率:
顯層神經(jīng)元vi被激活概率:
-
更新參數(shù)公式:此處給出一個訓(xùn)練過程例子幫助理解參數(shù)的更新過程:
Reference
[1] 深度學(xué)習(xí)-深度信念(置信)網(wǎng)絡(luò)(DBN)-從原理到實現(xiàn)(DeepLearnToolBox)
[2] DBN(深度置信網(wǎng)絡(luò)
end if
Source code: Keras + Theano => DBN
end