深度學習基礎--不同網路種類--深度置信網路(DBN)
深度置信網路(DBN)
RBM的作用就是用來生成似然分佈的互補先驗分佈,使得其後驗分佈具有因子形式。 因此,DBN演算法解決了Wake-Sleep演算法表示分佈難以匹配生成分佈的難題,通過RBM使得訓練資料的生成分佈具有因子形式,從而提高了學習效率。 深度置信網路(Deep Belief Nets,簡稱DBNs)就是一種無監督學習下的機器學習模型。
應用領域
通常,DBN主要用於對一維資料的建模比較有效,例如語音。而通過級聯多層卷積網路組成深度網路的模型主要用於二維資料,例如影象等。 基於深度信念網路的資源檢索與推薦系統 之前微軟的語音識別就是基於DBN
研究現狀
1)CNN和RNN流行之後就很少有人用DBN和SAE了。那麼DBN和SAE真的過時了嗎? 答:DBN之流,在理論上還有人在做,但是從效果看好像用處不大。 DBN與RBM在訓練資料量變的越來越大之後,到現在,所有的深度學習這一塊基本上都不用當時所用的 RBM/DBN pretraining的方法。為了保證我們這麼做是有比較好的理論根據,我們當時還做了非常強的分析,從理論上看出來大資料確實可以不需要那麼複雜的pretraining。 你們看文獻的時候,你們要注意在2012年之前的文獻常常把DBN和DNN混合在一起。我們微軟同多倫多大學在2012年合寫的文章中其實才把DBN和DNN正確地分開。"
2)pretraining除了在DBN和SAE這兩個模型中用,是不是幾乎沒用處了(比如CNN/RNN中會用pre training嗎)? 答:有預訓練才能利用大量沒有標籤的資料集作半監督學習, 防止只有少數標籤的資料集過擬合或擬合不足。 stacked denoised autoencoder (SDA),和DBN類似,都是使用無監督的網路“堆疊”起來的,他有分層預訓練來尋找更好的引數,最後使用BP來微調網路。 比dnn利用各種演算法來初始化權值矩陣,從經驗上來看是有幫助的。但是缺點也很明顯,每層的貪婪學習權值矩陣,也帶來了過長的訓練時間。在大量的資料面前 dnn(relu)的效果已經不差於預訓練的深度學習結構了。 最終DBN也是看成是“生成模型”。CNN 也沒有pre-train過程,訓練演算法也是用BP。 因為加入卷積 可以更好的處理2D資料,例如影象和語音。並且目前看來 相比其它網路有更好的表現。dnn/dbn/sda 等都是處理1D的資料。
DBN與CNN兩者異同
1)同:無論是DBN還是CNN,這種多隱層堆疊,每層對上一層的輸出進行處理的機制,可看作是在對輸入訊號進行逐層加工,從而把初始的、與輸出目標之間聯絡不大的輸入表示,轉化成與輸出目標聯絡密切的表示。即:通過多層處理,逐漸將初始的低層特徵表示轉化成高層的特徵表示後,用“簡單模型”就可以完成複雜的分類等學習任務。
2)異:網路結構和訓練過程不同。 DBN:全連線,有pre-train過程; CNN:區域性連線,沒有預訓練過程,但加了卷積。