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