技術(shù)支持
來源:光虎
深度學(xué)習(xí)結(jié)構(gòu)模型
區(qū)別于傳統(tǒng)的淺層學(xué)習(xí),深度學(xué)習(xí)的不同在于:
(1)強(qiáng)調(diào)了模型結(jié)構(gòu)的深度,通常有5層、6層,甚至10多層的隱層節(jié)點(diǎn);
(2)明確了特征學(xué)習(xí)的重要性。也就是說,通過逐層特征變換,將樣本在原空間的特征表示變換到一個(gè)新特征空間,從而使分類或預(yù)測更容易。與人工規(guī)則構(gòu)造特征的方法相比,利用大數(shù)據(jù)來學(xué)習(xí)特征,更能夠刻畫數(shù)據(jù)豐富的內(nèi)在信息。
通過設(shè)計(jì)建立適量的神經(jīng)元計(jì)算節(jié)點(diǎn)和多層運(yùn)算層次結(jié)構(gòu),選擇合適的輸人層和輸出層,通過網(wǎng)絡(luò)的學(xué)習(xí)和調(diào)優(yōu),建立起從輸入到輸出的函數(shù)關(guān)系,雖然不能100%找到輸入與輸出的函數(shù)關(guān)系,但是可以盡可能地逼近現(xiàn)實(shí)的關(guān)聯(lián)關(guān)系。使用訓(xùn)練成功的網(wǎng)絡(luò)模型,就可以實(shí)現(xiàn)我們對復(fù)雜事務(wù)處理的自動(dòng)化要求。
典型的深度學(xué)習(xí)模型有卷積神經(jīng)網(wǎng)絡(luò)( convolutional neural network)、DBN和堆棧自編碼網(wǎng)絡(luò)(stacked auto-encoder network)模型等,下面對這些模型進(jìn)行描述。
在無監(jiān)督預(yù)訓(xùn)練出現(xiàn)之前,訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)通常非常困難,而其中一個(gè)特例是卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)受視覺系統(tǒng)的結(jié)構(gòu)啟發(fā)而產(chǎn)生。第一個(gè)卷積神經(jīng)網(wǎng)絡(luò)計(jì)算模型是在Fukushima的神經(jīng)認(rèn)知機(jī)中提出的,基于神經(jīng)元之間的局部連接和分層組織圖像轉(zhuǎn)換,將有相同參數(shù)的神經(jīng)元應(yīng)用于前一層神經(jīng)網(wǎng)絡(luò)的不同位置,得到一種平移不變神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)形式。后來,Le Cun等人在該思想的基礎(chǔ)上,用誤差梯度設(shè)計(jì)并訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),在一些模式識別任務(wù)上得到優(yōu)越的性能。至今,基于卷積神經(jīng)網(wǎng)絡(luò)的模式識別系統(tǒng)是最好的實(shí)現(xiàn)系統(tǒng)之一,尤其在手寫體字符識別任務(wù)上表現(xiàn)出非凡的性能。
DBN可以解釋為貝葉斯概率生成模型,由多層隨機(jī)隱變量組成,上面的兩層具有無向?qū)ΨQ連接,下面的層得到來自上一層的自頂向下的有向連接,最底層單元的狀態(tài)為可見輸入數(shù)據(jù)向量。DBN由若干2F結(jié)構(gòu)單元堆棧組成,結(jié)構(gòu)單元通常為RBM(Restricted Boltzmann Machine,受限玻爾茲曼機(jī))。堆棧中每個(gè)RBM單元的可視層神經(jīng)元數(shù)量等于前一RBM單元的隱層神經(jīng)元數(shù)量。根據(jù)深度學(xué)習(xí)機(jī)制,采用輸入樣例訓(xùn)練第一層RBM單元,并利用其輸出訓(xùn)練第二層RBM模型,將RBM模型進(jìn)行堆棧通過增加層來改善模型性能。在無監(jiān)督預(yù)訓(xùn)練過程中,DBN編碼輸入到頂層RBM后,解碼頂層的狀態(tài)到最底層的單元,實(shí)現(xiàn)輸入的重構(gòu)。RBM作為DBN的結(jié)構(gòu)單元,與每一層DBN共享參數(shù)。
堆棧自編碼網(wǎng)絡(luò)的結(jié)構(gòu)與DBN類似,由若干結(jié)構(gòu)單元堆棧組成,不同之處在于其結(jié)構(gòu)單元為自編碼模型( auto-en-coder)而不是RBM。自編碼模型是一個(gè)兩層的神經(jīng)網(wǎng)絡(luò),第一層稱為編碼層,第二層稱為解碼層。
2006年,Hinton提出了在非監(jiān)督數(shù)據(jù)上建立多層神經(jīng)網(wǎng)絡(luò)的一個(gè)有效方法,具體分為兩步:首先逐層構(gòu)建單層神經(jīng)元,這樣每次都是訓(xùn)練一個(gè)單層網(wǎng)絡(luò);當(dāng)所有層訓(xùn)練完后,使用wake-sleep算法進(jìn)行調(diào)優(yōu)。
將除最頂層的其他層間的權(quán)重變?yōu)殡p向的,這樣最頂層仍然是一個(gè)單層神經(jīng)網(wǎng)絡(luò),而其他層則變?yōu)榱藞D模型。向上的權(quán)重用于“認(rèn)知”,向下的權(quán)重用于“生成”。然后使用wake-sleep算法調(diào)整所有的權(quán)重。讓認(rèn)知和生成達(dá)成一致,也就是保證生成的最頂層表示能夠盡可能正確地復(fù)原底層的節(jié)點(diǎn)。比如頂層的一個(gè)節(jié)點(diǎn)表示人臉,那么所有人臉的圖像應(yīng)該激活這個(gè)節(jié)點(diǎn),并且這個(gè)結(jié)果向下生成的圖像應(yīng)該能夠表現(xiàn)為一個(gè)大概的人臉圖像。wake-sleep算法分為醒( wake)和睡(sleep)兩個(gè)部分。
wake階段:認(rèn)知過程,通過外界的特征和向上的權(quán)重產(chǎn)生每一層的抽象表示,并且使用梯度下降修改層間的下行權(quán)重。
sleep階段:生成過程,通過頂層表示和向下權(quán)重,生成底層的狀態(tài),同時(shí)修改層間向上的權(quán)重。
就是從底層開始,一層一層地往頂層訓(xùn)練。采用無標(biāo)定數(shù)據(jù)(有標(biāo)定數(shù)據(jù)也可)分層訓(xùn)練各層參數(shù),這一步可以看作是一個(gè)無監(jiān)督訓(xùn)練過程,這也是和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)區(qū)別最大的部分,可以看作是特征學(xué)習(xí)過程。具體的,先用無標(biāo)定數(shù)據(jù)訓(xùn)練第一層,訓(xùn)練時(shí)先學(xué)習(xí)第一層的參數(shù),這層可以看作是得到一個(gè)使得輸出和輸入差別最小的三層神經(jīng)網(wǎng)絡(luò)的隱層,由于模型容量的限制以及稀疏性約束,使得得到的模型能夠?qū)W習(xí)到數(shù)據(jù)本身的結(jié)構(gòu),從而得到比輸入更具有表示能力的特征;在學(xué)習(xí)得到n-1層后,將n-1層的輸出作為第n層的輸入,訓(xùn)練第n層,由此分別得到各層的參數(shù)。
就是通過帶標(biāo)簽的數(shù)據(jù)去訓(xùn)練,誤差自頂向下傳輸,對網(wǎng)絡(luò)進(jìn)行微調(diào)?;诘谝徊降玫降母鲗訁?shù)進(jìn)一步優(yōu)調(diào)整個(gè)多層模型的參數(shù),這一步是一個(gè)有監(jiān)督訓(xùn)練過程。第一步類似神經(jīng)網(wǎng)絡(luò)的隨機(jī)初始化初值過程,由于第一步不是隨機(jī)初始化,而是通過學(xué)習(xí)輸入數(shù)據(jù)的結(jié)構(gòu)得到的,因而這個(gè)初值更接近全局最優(yōu),從而能夠取得更好的效果。所以深度學(xué)習(xí)的良好效果在很大程度上歸功于第一步的特征學(xué)習(xí)的過程。
計(jì)算機(jī)視覺中比較成功的深度學(xué)習(xí)的應(yīng)用,包括人臉識別、圖像問答、物體檢測、物體跟蹤。
【來源:網(wǎng)絡(luò)】
http://www.andrewberkeley.com 光虎光電科技(天津)有限公司