分類: 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
Deep Learning(深度學(xué)習(xí))學(xué)習(xí)筆記整理系列
zouxy09@QQ.com
http://blog.csdn.net/zouxy09
作者:Zouxy
version 1.0 2013-04-08
聲明:
1)該Deep Learning的學(xué)習(xí)系列是整理自網(wǎng)上很大牛和機器學(xué)習(xí)專家所無私奉獻的資料的。具體引用的資料請看參考文獻。具體的版本聲明也參考原文獻。
2)本文僅供學(xué)術(shù)交流,非商用。所以每一部分具體的參考資料并沒有詳細對應(yīng)。如果某部分不小心侵犯了大家的利益,還望海涵,并聯(lián)系博主刪除。
3)本人才疏學(xué)淺,整理總結(jié)的時候難免出錯,還望各位前輩不吝指正,謝謝。
4)閱讀本文需要機器學(xué)習(xí)、計算機視覺、神經(jīng)網(wǎng)絡(luò)等等基礎(chǔ)(如果沒有也沒關(guān)系了,沒有就看看,能不能看懂,呵呵)。
5)此屬于第一版本,若有錯誤,還需繼續(xù)修正與增刪。還望大家多多指點。大家都共享一點點,一起為祖國科研的推進添磚加瓦(呵呵,好高尚的目標(biāo)啊)。請聯(lián)系:zouxy09@qq.com
目錄:
一、概述
二、背景
三、人腦視覺機理
四、關(guān)于特征
4.1、特征表示的粒度
4.2、初級(淺層)特征表示
4.3、結(jié)構(gòu)性特征表示
4.4、需要有多少個特征?
五、Deep Learning的基本思想
六、淺層學(xué)習(xí)(Shallow Learning)和深度學(xué)習(xí)(Deep Learning)
七、Deep learning與Neural Network
八、Deep learning訓(xùn)練過程
8.1、傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法
8.2、deep learning訓(xùn)練過程
九、Deep Learning的常用模型或者方法
9.1、AutoEncoder自動編碼器
9.2、Sparse Coding稀疏編碼
9.3、Restricted Boltzmann Machine(RBM)限制波爾茲曼機
9.4、Deep BeliefNetworks深信度網(wǎng)絡(luò)
9.5、Convolutional Neural Networks卷積神經(jīng)網(wǎng)絡(luò)
十、總結(jié)與展望
十一、參考文獻和Deep Learning學(xué)習(xí)資源
接上
注:下面的兩個Deep Learning方法說明需要完善,但為了保證文章的連續(xù)性和完整性,先貼一些上來,后面再修改好了。
9.3、Restricted Boltzmann Machine (RBM)限制波爾茲曼機
假設(shè)有一個二部圖,每一層的節(jié)點之間沒有鏈接,一層是可視層,即輸入數(shù)據(jù)層(v),一層是隱藏層(h),如果假設(shè)所有的節(jié)點都是隨機二值變量節(jié)點(只能取0或者1值),同時假設(shè)全概率分布p(v,h)滿足Boltzmann 分布,我們稱這個模型是Restricted BoltzmannMachine (RBM)。

下面我們來看看為什么它是Deep Learning方法。首先,這個模型因為是二部圖,所以在已知v的情況下,所有的隱藏節(jié)點之間是條件獨立的(因為節(jié)點之間不存在連接),即p(h|v)=p(h1|v)…p(hn|v)。同理,在已知隱藏層h的情況下,所有的可視節(jié)點都是條件獨立的。同時又由于所有的v和h滿足Boltzmann 分布,因此,當(dāng)輸入v的時候,通過p(h|v) 可以得到隱藏層h,而得到隱藏層h之后,通過p(v|h)又能得到可視層,通過調(diào)整參數(shù),我們就是要使得從隱藏層得到的可視層v1與原來的可視層v如果一樣,那么得到的隱藏層就是可視層另外一種表達,因此隱藏層可以作為可視層輸入數(shù)據(jù)的特征,所以它就是一種Deep Learning方法。

如何訓(xùn)練呢?也就是可視層節(jié)點和隱節(jié)點間的權(quán)值怎么確定呢?我們需要做一些數(shù)學(xué)分析。也就是模型了。

聯(lián)合組態(tài)(jointconfiguration)的能量可以表示為:

而某個組態(tài)的聯(lián)合概率分布可以通過Boltzmann 分布(和這個組態(tài)的能量)來確定:

因為隱藏節(jié)點之間是條件獨立的(因為節(jié)點之間不存在連接),即:

然后我們可以比較容易(對上式進行因子分解Factorizes)得到在給定可視層v的基礎(chǔ)上,隱層第j個節(jié)點為1或者為0的概率:

同理,在給定隱層h的基礎(chǔ)上,可視層第i個節(jié)點為1或者為0的概率也可以容易得到:

給定一個滿足獨立同分布的樣本集:D={v(1), v(2),…, v(N)},我們需要學(xué)習(xí)參數(shù)θ={W,a,b}。
我們最大化以下對數(shù)似然函數(shù)(最大似然估計:對于某個概率模型,我們需要選擇一個參數(shù),讓我們當(dāng)前的觀測樣本的概率最大):

也就是對最大對數(shù)似然函數(shù)求導(dǎo),就可以得到L最大時對應(yīng)的參數(shù)W了。

如果,我們把隱藏層的層數(shù)增加,我們可以得到Deep Boltzmann Machine(DBM);如果我們在靠近可視層的部分使用貝葉斯信念網(wǎng)絡(luò)(即有向圖模型,當(dāng)然這里依然限制層中節(jié)點之間沒有鏈接),而在最遠離可視層的部分使用Restricted Boltzmann Machine,我們可以得到DeepBelief Net(DBN)。

9.4、Deep Belief Networks深信度網(wǎng)絡(luò)
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ò)應(yīng)用傳統(tǒng)的BP算法的時候,DBNs遇到了以下問題:
(1)需要為訓(xùn)練提供一個有標(biāo)簽的樣本集;
(2)學(xué)習(xí)過程較慢;
(3)不適當(dāng)?shù)膮?shù)選擇會導(dǎo)致學(xué)習(xí)收斂于局部最優(yōu)解。

DBNs由多個限制玻爾茲曼機(Restricted Boltzmann Machines)層組成,一個典型的神經(jīng)網(wǎng)絡(luò)類型如圖三所示。這些網(wǎng)絡(luò)被“限制”為一個可視層和一個隱層,層間存在連接,但層內(nèi)的單元間不存在連接。隱層單元被訓(xùn)練去捕捉在可視層表現(xiàn)出來的高階數(shù)據(jù)的相關(guān)性。
首先,先不考慮最頂構(gòu)成一個聯(lián)想記憶(associative memory)的兩層,一個DBN的連接是通過自頂向下的生成權(quán)值來指導(dǎo)確定的,RBMs就像一個建筑塊一樣,相比傳統(tǒng)和深度分層的sigmoid信念網(wǎng)絡(luò),它能易于連接權(quán)值的學(xué)習(xí)。
最開始的時候,通過一個非監(jiān)督貪婪逐層方法去預(yù)訓(xùn)練獲得生成模型的權(quán)值,非監(jiān)督貪婪逐層方法被Hinton證明是有效的,并被其稱為對比分歧(contrastive divergence)。
在這個訓(xùn)練階段,在可視層會產(chǎn)生一個向量v,通過它將值傳遞到隱層。反過來,可視層的輸入會被隨機的選擇,以嘗試去重構(gòu)原始的輸入信號。最后,這些新的可視的神經(jīng)元激活單元將前向傳遞重構(gòu)隱層激活單元,獲得h(在訓(xùn)練過程中,首先將可視向量值映射給隱單元;然后可視單元由隱層單元重建;這些新可視單元再次映射給隱單元,這樣就獲取新的隱單元。執(zhí)行這種反復(fù)步驟叫做吉布斯采樣)。這些后退和前進的步驟就是我們熟悉的Gibbs采樣,而隱層激活單元和可視層輸入之間的相關(guān)性差別就作為權(quán)值更新的主要依據(jù)。
訓(xùn)練時間會顯著的減少,因為只需要單個步驟就可以接近最大似然學(xué)習(xí)。增加進網(wǎng)絡(luò)的每一層都會改進訓(xùn)練數(shù)據(jù)的對數(shù)概率,我們可以理解為越來越接近能量的真實表達。這個有意義的拓展,和無標(biāo)簽數(shù)據(jù)的使用,是任何一個深度學(xué)習(xí)應(yīng)用的決定性的因素。

在最高兩層,權(quán)值被連接到一起,這樣更低層的輸出將會提供一個參考的線索或者關(guān)聯(lián)給頂層,這樣頂層就會將其聯(lián)系到它的記憶內(nèi)容。而我們最關(guān)心的,最后想得到的就是判別性能,例如分類任務(wù)里面。
在預(yù)訓(xùn)練后,DBN可以通過利用帶標(biāo)簽數(shù)據(jù)用BP算法去對判別性能做調(diào)整。在這里,一個標(biāo)簽集將被附加到頂層(推廣聯(lián)想記憶),通過一個自下向上的,學(xué)習(xí)到的識別權(quán)值獲得一個網(wǎng)絡(luò)的分類面。這個性能會比單純的BP算法訓(xùn)練的網(wǎng)絡(luò)好。這可以很直觀的解釋,DBNs的BP算法只需要對權(quán)值參數(shù)空間進行一個局部的搜索,這相比前向神經(jīng)網(wǎng)絡(luò)來說,訓(xùn)練是要快的,而且收斂的時間也少。
DBNs的靈活性使得它的拓展比較容易。一個拓展就是卷積DBNs(Convolutional Deep Belief Networks(CDBNs))。DBNs并沒有考慮到圖像的2維結(jié)構(gòu)信息,因為輸入是簡單的從一個圖像矩陣一維向量化的。而CDBNs就是考慮到了這個問題,它利用鄰域像素的空域關(guān)系,通過一個稱為卷積RBMs的模型區(qū)達到生成模型的變換不變性,而且可以容易得變換到高維圖像。DBNs并沒有明確地處理對觀察變量的時間聯(lián)系的學(xué)習(xí)上,雖然目前已經(jīng)有這方面的研究,例如堆疊時間RBMs,以此為推廣,有序列學(xué)習(xí)的dubbed temporal convolutionmachines,這種序列學(xué)習(xí)的應(yīng)用,給語音信號處理問題帶來了一個讓人激動的未來研究方向。
目前,和DBNs有關(guān)的研究包括堆疊自動編碼器,它是通過用堆疊自動編碼器來替換傳統(tǒng)DBNs里面的RBMs。這就使得可以通過同樣的規(guī)則來訓(xùn)練產(chǎn)生深度多層神經(jīng)網(wǎng)絡(luò)架構(gòu),但它缺少層的參數(shù)化的嚴(yán)格要求。與DBNs不同,自動編碼器使用判別模型,這樣這個結(jié)構(gòu)就很難采樣輸入采樣空間,這就使得網(wǎng)絡(luò)更難捕捉它的內(nèi)部表達。但是,降噪自動編碼器卻能很好的避免這個問題,并且比傳統(tǒng)的DBNs更優(yōu)。它通過在訓(xùn)練過程添加隨機的污染并堆疊產(chǎn)生場泛化性能。訓(xùn)練單一的降噪自動編碼器的過程和RBMs訓(xùn)練生成模型的過程一樣。
下續(xù)
新聞熱點
疑難解答