DBN深度置信網(wǎng)絡(luò)是神經(jīng)網(wǎng)絡(luò)(請參見人工智能(23))的一種,既可以用于非監(jiān)督學(xué)習(xí),類似于一個Autoencoder自編碼機(請參見人工智能(55));也可以用于監(jiān)督學(xué)習(xí),作為分類器來使用。因此十分值得研究。
DBN深度置信網(wǎng)絡(luò)是一個概率生成模型,與傳統(tǒng)的判別模型的神經(jīng)網(wǎng)絡(luò)相對,生成模型是建立一個觀察數(shù)據(jù)和標簽之間的聯(lián)合分布,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅評估了后者P(Label|Observation)。
DBN算法概念:
DBN深度置信網(wǎng)絡(luò)(Deep BeliefNets)是一種生成模型,也是神經(jīng)網(wǎng)絡(luò)(請參見人工智能(23))的一種,通過訓(xùn)練其神經(jīng)元間的權(quán)重,可以讓整個神經(jīng)網(wǎng)絡(luò)按照最大概率來生成訓(xùn)練數(shù)據(jù)。不僅可以使用DBN來識別特征、分類數(shù)據(jù),還可以用它來生成數(shù)據(jù)。
DBN由多層神經(jīng)元構(gòu)成,這些神經(jīng)元又分為2種:顯性神經(jīng)元和隱性神經(jīng)元。顯性神經(jīng)元用于接收輸入,隱性神經(jīng)元用于提取特征,因此隱性神經(jīng)元也叫特征檢測器(Feature Detectors)。最頂上的兩層間的連接是無向的,組成聯(lián)合內(nèi)存(associative memory)。較低的其他層之間有連接上下的有向連接。最底層代表了數(shù)據(jù)向量(data vectors),每一個神經(jīng)元代表數(shù)據(jù)向量的一維。
DBN組成元件是RBM受限玻爾茲曼機 (請參見人工智能(37)。訓(xùn)練DBN的過程是一層一層地進行的。在每一層中,用數(shù)據(jù)向量來推斷隱層,再把這一隱層當作下一層 (高一層)的數(shù)據(jù)向量。
作為神經(jīng)網(wǎng)絡(luò),神經(jīng)元自然是其必不可少的組成部分。DBN由若干層神經(jīng)元構(gòu)成,組成元件是RBM受限玻爾茲曼機, DBN網(wǎng)絡(luò)結(jié)構(gòu)限制為兩層:可視層和隱層,層與層之間存在連接,但層內(nèi)的單元間不存在連接,隱層單元被訓(xùn)練去捕捉在可視層表現(xiàn)出來的高階數(shù)據(jù)的相關(guān)性。具體DBN網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示。
DBN算法本質(zhì):
從非監(jiān)督學(xué)習(xí)來講,其目的是盡可能地保留原始特征的特點,同時降低特征的維度。從監(jiān)督學(xué)習(xí)來講,其目的在于使得分類錯誤率盡可能地小。而不論是監(jiān)督學(xué)習(xí)還是非監(jiān)督學(xué)習(xí),DBN算法本質(zhì)都是Feature Learning的過程,即如何得到更好的特征表達。
DBN訓(xùn)練過程:
DBN 是由多層 RBM 組成的一個神經(jīng)網(wǎng)絡(luò),它既可以被看作一個生成模型,也可以當作判別模型,其訓(xùn)練過程是:使用非監(jiān)督貪婪逐層方法去預(yù)訓(xùn)練獲得權(quán)值。
DBN訓(xùn)練過程如下:
1)充分訓(xùn)練第一個RBM;
2)固定第一個RBM的權(quán)重和偏移量,然后使用其隱性神經(jīng)元的狀態(tài),作為第二個RBM的輸入向量;
3)充分訓(xùn)練第二個RBM后,將第二個RBM堆疊在第一個RBM的上方;
4)重復(fù)以上1)~3)任意多次;
5)如果訓(xùn)練集中的數(shù)據(jù)有標簽,那么在頂層的RBM訓(xùn)練時,這個RBM的顯層中除了顯性神經(jīng)元,還需要有代表分類標簽的神經(jīng)元,一起進行訓(xùn)練;
6)DBN 訓(xùn)練完成。
最終訓(xùn)練成的生成模型如下圖所示:
用公式表示為:
概括的說,將若干個RBM“串聯(lián)”起來則構(gòu)成了一個DBN。上一個RBM的隱層即為下一個RBM的顯層,上一個RBM的輸出即為下一個RBM的輸入。訓(xùn)練過程中,需要充分訓(xùn)練上一層的RBM后才能訓(xùn)練當前層的RBM,直至最后一層。
注:隱層激活單元和可視層輸入之間的相關(guān)性差別就作為權(quán)值更新的主要依據(jù)。
DBN訓(xùn)練過程非常重要,這種逐層疊加RBM的方式叫做Greedy Layer-Wise Training,它是最開始提出深度學(xué)習(xí)時候的核心!
DBN調(diào)優(yōu)過程:
DBN生成模型使用ContrastiveWake-Sleep算法進行調(diào)優(yōu),其算法調(diào)優(yōu)過程是:
1) 除了頂層 RBM,其他層RBM的權(quán)重被分成向上的認知權(quán)重和向下的生成權(quán)重;
2)Wake階段(認知過程):通過外界的特征和向上的權(quán)重 (認知權(quán)重)產(chǎn)生每一層的抽象表示 (結(jié)點狀態(tài)) ,并且使用梯度下降修改層間的下行權(quán)重 (生成權(quán)重) 。
3)Sleep 階段(生成過程):通過頂層表示和向下權(quán)重,生成底層的狀態(tài),同時修改層間向上的權(quán)重。
DBN使用過程:
1)使用隨機隱性神經(jīng)元狀態(tài)值,在頂層 RBM 中進行足夠多次的Gibbs吉布斯抽樣;
2)向下傳播,得到每層的狀態(tài)。
DBN算法優(yōu)點:
1)靈活性好;
2)擴展容易;
3)性能較好;
4)并行計算;
5)相比前向神經(jīng)網(wǎng)絡(luò),訓(xùn)練較快,收斂時間較少。
DBN算法缺點:
1)只能是一維的數(shù)據(jù);
2)需要為訓(xùn)練提供一個有標簽的樣本集;
3)學(xué)習(xí)過程較慢;
4)不適當?shù)膮?shù)選擇會導(dǎo)致收斂于局部最優(yōu)解;
5)沒有明確地處理對觀察變量時間聯(lián)系的學(xué)習(xí)。
注:擴展的CDBNs(卷積DBNs) 考慮到2維數(shù)據(jù)結(jié)構(gòu)。
DBN算法應(yīng)用:
很多的情況下,DBN是作為無監(jiān)督學(xué)習(xí)框架來使用的,它的應(yīng)用范圍較廣,擴展性也強,可應(yīng)用于機器學(xué)習(xí)之手寫字識別、語音識別和圖像處理等領(lǐng)域。且在語音識別中取得了很好的效果。
語音識別:微軟研究人員通過與hinton合作,首先將RBM和DBN引入到語音識別聲學(xué)模型訓(xùn)練中,并且在大詞匯量語音識別系統(tǒng)中獲得巨大成功,使得語音識別的錯誤率相對減低30%。
結(jié)語:
DBN算法是機器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)的一種,既可以用于非監(jiān)督學(xué)習(xí),也可以用于監(jiān)督學(xué)習(xí),值得深入研究。DBN是一個概率生成模型,與傳統(tǒng)的判別模型的神經(jīng)網(wǎng)絡(luò)相對,生成模型是建立一個觀察數(shù)據(jù)和標簽之間的聯(lián)合分布。通過訓(xùn)練其神經(jīng)元間的權(quán)重,可以讓整個神經(jīng)網(wǎng)絡(luò)按照最大概率來生成訓(xùn)練數(shù)據(jù)。不僅可以使用DBN來識別特征、分類數(shù)據(jù),還可以用它來生成數(shù)據(jù)。DBN算法是一種非常實用的學(xué)習(xí)算法,應(yīng)用范圍較廣,擴展性也強,可應(yīng)用于機器學(xué)習(xí)之手寫字識別、語音識別和圖像處理等領(lǐng)域。