Artificial Intelligence,,也就是人工智能,就像長生不老和星際漫游一樣,,是人類最美好的夢想之一,。雖然計(jì)算機(jī)技術(shù)已經(jīng)取得了長足的進(jìn)步,但是到目前為止,,還沒有一臺(tái)電腦能產(chǎn)生“自我”的意識(shí),。是的,在人類和大量現(xiàn)成數(shù)據(jù)的幫助下,,電腦可以表現(xiàn)的十分強(qiáng)大,,但是離開了這兩者,它甚至都不能分辨一個(gè)喵星人和一個(gè)汪星人,。
圖靈(圖靈,,大家都知道吧,。計(jì)算機(jī)和人工智能的鼻祖,分別對應(yīng)于其著名的“圖靈機(jī)”和“圖靈測試”)在 1950 年的論文里,,提出圖靈試驗(yàn)的設(shè)想,,即,隔墻對話,,你將不知道與你談話的,,是人還是電腦。這無疑給計(jì)算機(jī),,尤其是人工智能,,預(yù)設(shè)了一個(gè)很高的期望值。但是半個(gè)世紀(jì)過去了,,人工智能的進(jìn)展,,遠(yuǎn)遠(yuǎn)沒有達(dá)到圖靈試驗(yàn)的標(biāo)準(zhǔn)。這不僅讓多年翹首以待的人們,,心灰意冷,,認(rèn)為人工智能是忽悠,相關(guān)領(lǐng)域是“偽科學(xué)”,。
但是自 2006 年以來,,機(jī)器學(xué)習(xí)領(lǐng)域,取得了突破性的進(jìn)展,。圖靈試驗(yàn),,至少不是那么可望而不可及了。至于技術(shù)手段,,不僅僅依賴于云計(jì)算對大數(shù)據(jù)的并行處理能力,,而且依賴于算法。這個(gè)算法就是,,Deep Learning,。借助于 Deep Learning 算法,人類終于找到了如何處理“抽象概念”這個(gè)亙古難題的方法,。
詳細(xì)過程請參考:UFLDL Tutorial稀疏編碼 )
從最大似然到EM算法淺解 ”),。
訓(xùn)練過程就是一個(gè)重復(fù)迭代的過程,按上面所說,,我們交替的更改a和Φ使得下面這個(gè)目標(biāo)函數(shù)最小,。
聯(lián)合組態(tài)(jointconfiguration)的能量可以表示為:
而某個(gè)組態(tài)的聯(lián)合概率分布可以通過Boltzmann 分布(和這個(gè)組態(tài)的能量)來確定:
因?yàn)殡[藏節(jié)點(diǎn)之間是條件獨(dú)立的(因?yàn)楣?jié)點(diǎn)之間不存在連接),即:
然后我們可以比較容易(對上式進(jìn)行因子分解Factorizes)得到在給定可視層v的基礎(chǔ)上,,隱層第j個(gè)節(jié)點(diǎn)為1或者為0的概率:
同理,,在給定隱層h的基礎(chǔ)上,可視層第i個(gè)節(jié)點(diǎn)為1或者為0的概率也可以容易得到:
給定一個(gè)滿足獨(dú)立同分布的樣本集:D={ v (1) , v (2) ,…, v (N) },,我們需要學(xué)習(xí)參數(shù)θ={W,a,b},。
我們最大化以下對數(shù)似然函數(shù)(最大似然估計(jì):對于某個(gè)概率模型,我們需要選擇一個(gè)參數(shù),,讓我們當(dāng)前的觀測樣本的概率最大):
也就是對最大對數(shù)似然函數(shù)求導(dǎo),,就可以得到L最大時(shí)對應(yīng)的參數(shù)W了。
如果,,我們把隱藏層的層數(shù)增加,,我們可以得到Deep Boltzmann Machine(DBM);如果我們在靠近可視層的部分使用貝葉斯信念網(wǎng)絡(luò)(即有向圖模型,當(dāng)然這里依然限制層中節(jié)點(diǎn)之間沒有鏈接),,而在最遠(yuǎn)離可視層的部分使用Restricted Boltzmann Machine,,我們可以得到DeepBelief Net(DBN)。
9.4,、Deep Belief Networks深信度網(wǎng)絡(luò)
DBNs是一個(gè)概率生成模型,,與傳統(tǒng)的判別模型的神經(jīng)網(wǎng)絡(luò)相對,生成模型是建立一個(gè)觀察數(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算法的時(shí)候,,DBNs遇到了以下問題:
(1)需要為訓(xùn)練提供一個(gè)有標(biāo)簽的樣本集;
(2)學(xué)習(xí)過程較慢,;
(3)不適當(dāng)?shù)膮?shù)選擇會(huì)導(dǎo)致學(xué)習(xí)收斂于局部最優(yōu)解,。
DBNs由多個(gè)限制玻爾茲曼機(jī)(Restricted Boltzmann Machines)層組成,一個(gè)典型的神經(jīng)網(wǎng)絡(luò)類型如圖三所示,。這些網(wǎng)絡(luò)被“限制”為一個(gè)可視層和一個(gè)隱層,,層間存在連接,但層內(nèi)的單元間不存在連接,。隱層單元被訓(xùn)練去捕捉在可視層表現(xiàn)出來的高階數(shù)據(jù)的相關(guān)性,。
首先,先不考慮最頂構(gòu)成一個(gè)聯(lián)想記憶(associative memory)的兩層,,一個(gè)DBN的連接是通過自頂向下的生成權(quán)值來指導(dǎo)確定的,,RBMs就像一個(gè)建筑塊一樣,相比傳統(tǒng)和深度分層的sigmoid信念網(wǎng)絡(luò),,它能易于連接權(quán)值的學(xué)習(xí),。
最開始的時(shí)候,通過一個(gè)非監(jiān)督貪婪逐層方法去預(yù)訓(xùn)練獲得生成模型的權(quán)值,,非監(jiān)督貪婪逐層方法被Hinton證明是有效的,,并被其稱為對比分歧(contrastive divergence)。
在這個(gè)訓(xùn)練階段,,在可視層會(huì)產(chǎn)生一個(gè)向量v,,通過它將值傳遞到隱層。反過來,,可視層的輸入會(huì)被隨機(jī)的選擇,,以嘗試去重構(gòu)原始的輸入信號。最后,,這些新的可視的神經(jīng)元激活單元將前向傳遞重構(gòu)隱層激活單元,,獲得h(在訓(xùn)練過程中,,首先將可視向量值映射給隱單元,;然后可視單元由隱層單元重建,;這些新可視單元再次映射給隱單元,這樣就獲取新的隱單元,。執(zhí)行這種反復(fù)步驟叫做吉布斯采樣),。這些后退和前進(jìn)的步驟就是我們熟悉的Gibbs采樣,而隱層激活單元和可視層輸入之間的相關(guān)性差別就作為權(quán)值更新的主要依據(jù),。
訓(xùn)練時(shí)間會(huì)顯著的減少,,因?yàn)橹恍枰獑蝹€(gè)步驟就可以接近最大似然學(xué)習(xí)。增加進(jìn)網(wǎng)絡(luò)的每一層都會(huì)改進(jìn)訓(xùn)練數(shù)據(jù)的對數(shù)概率,,我們可以理解為越來越接近能量的真實(shí)表達(dá),。這個(gè)有意義的拓展,和無標(biāo)簽數(shù)據(jù)的使用,,是任何一個(gè)深度學(xué)習(xí)應(yīng)用的決定性的因素,。
在最高兩層,權(quán)值被連接到一起,,這樣更低層的輸出將會(huì)提供一個(gè)參考的線索或者關(guān)聯(lián)給頂層,,這樣頂層就會(huì)將其聯(lián)系到它的記憶內(nèi)容。而我們最關(guān)心的,,最后想得到的就是判別性能,,例如分類任務(wù)里面。
在預(yù)訓(xùn)練后,,DBN可以通過利用帶標(biāo)簽數(shù)據(jù)用BP算法去對判別性能做調(diào)整,。在這里,一個(gè)標(biāo)簽集將被附加到頂層(推廣聯(lián)想記憶),,通過一個(gè)自下向上的,,學(xué)習(xí)到的識(shí)別權(quán)值獲得一個(gè)網(wǎng)絡(luò)的分類面。這個(gè)性能會(huì)比單純的BP算法訓(xùn)練的網(wǎng)絡(luò)好,。這可以很直觀的解釋,,DBNs的BP算法只需要對權(quán)值參數(shù)空間進(jìn)行一個(gè)局部的搜索,這相比前向神經(jīng)網(wǎng)絡(luò)來說,,訓(xùn)練是要快的,,而且收斂的時(shí)間也少。
DBNs的靈活性使得它的拓展比較容易,。一個(gè)拓展就是卷積DBNs(Convolutional Deep Belief Networks(CDBNs)),。DBNs并沒有考慮到圖像的2維結(jié)構(gòu)信息,因?yàn)檩斎胧呛唵蔚膹囊粋€(gè)圖像矩陣一維向量化的,。而CDBNs就是考慮到了這個(gè)問題,,它利用鄰域像素的空域關(guān)系,,通過一個(gè)稱為卷積RBMs的模型區(qū)達(dá)到生成模型的變換不變性,而且可以容易得變換到高維圖像,。DBNs并沒有明確地處理對觀察變量的時(shí)間聯(lián)系的學(xué)習(xí)上,,雖然目前已經(jīng)有這方面的研究,例如堆疊時(shí)間RBMs,,以此為推廣,,有序列學(xué)習(xí)的dubbed temporal convolutionmachines,這種序列學(xué)習(xí)的應(yīng)用,,給語音信號處理問題帶來了一個(gè)讓人激動(dòng)的未來研究方向,。
目前,和DBNs有關(guān)的研究包括堆疊自動(dòng)編碼器,,它是通過用堆疊自動(dòng)編碼器來替換傳統(tǒng)DBNs里面的RBMs,。這就使得可以通過同樣的規(guī)則來訓(xùn)練產(chǎn)生深度多層神經(jīng)網(wǎng)絡(luò)架構(gòu),但它缺少層的參數(shù)化的嚴(yán)格要求,。與DBNs不同,,自動(dòng)編碼器使用判別模型,這樣這個(gè)結(jié)構(gòu)就很難采樣輸入采樣空間,,這就使得網(wǎng)絡(luò)更難捕捉它的內(nèi)部表達(dá),。但是,降噪自動(dòng)編碼器卻能很好的避免這個(gè)問題,,并且比傳統(tǒng)的DBNs更優(yōu),。它通過在訓(xùn)練過程添加隨機(jī)的污染并堆疊產(chǎn)生場泛化性能。訓(xùn)練單一的降噪自動(dòng)編碼器的過程和RBMs訓(xùn)練生成模型的過程一樣,。
9.5,、Convolutional Neural Networks卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是人工神經(jīng)網(wǎng)絡(luò)的一種,已成為當(dāng)前語音分析和圖像識(shí)別領(lǐng)域的研究熱點(diǎn),。它的權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)使之更類似于生物神經(jīng)網(wǎng)絡(luò),,降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了權(quán)值的數(shù)量,。該優(yōu)點(diǎn)在網(wǎng)絡(luò)的輸入是多維圖像時(shí)表現(xiàn)的更為明顯,,使圖像可以直接作為網(wǎng)絡(luò)的輸入,避免了傳統(tǒng)識(shí)別算法中復(fù)雜的特征提取和數(shù)據(jù)重建過程,。卷積網(wǎng)絡(luò)是為識(shí)別二維形狀而特殊設(shè)計(jì)的一個(gè)多層感知器,,這種網(wǎng)絡(luò)結(jié)構(gòu)對平移、比例縮放,、傾斜或者共他形式的變形具有高度不變性,。
CNNs是受早期的延時(shí)神經(jīng)網(wǎng)絡(luò)(TDNN)的影響。延時(shí)神經(jīng)網(wǎng)絡(luò)通過在時(shí)間維度上共享權(quán)值降低學(xué)習(xí)復(fù)雜度,,適用于語音和時(shí)間序列信號的處理,。
CNNs是第一個(gè)真正成功訓(xùn)練多層網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí)算法,。它利用空間關(guān)系減少需要學(xué)習(xí)的參數(shù)數(shù)目以提高一般前向BP算法的訓(xùn)練性能。CNNs作為一個(gè)深度學(xué)習(xí)架構(gòu)提出是為了最小化數(shù)據(jù)的預(yù)處理要求,。在CNN中,,圖像的一小部分(局部感受區(qū)域)作為層級結(jié)構(gòu)的最低層的輸入,信息再依次傳輸?shù)讲煌膶?,每層通過一個(gè)數(shù)字濾波器去獲得觀測數(shù)據(jù)的最顯著的特征,。這個(gè)方法能夠獲取對平移、縮放和旋轉(zhuǎn)不變的觀測數(shù)據(jù)的顯著特征,,因?yàn)閳D像的局部感受區(qū)域允許神經(jīng)元或者處理單元可以訪問到最基礎(chǔ)的特征,例如定向邊緣或者角點(diǎn),。
1)卷積神經(jīng)網(wǎng)絡(luò)的歷史
1962年Hubel和Wiesel通過對貓視覺皮層細(xì)胞的研究,,提出了感受野(receptive field)的概念,1984年日本學(xué)者Fukushima基于感受野概念提出的神經(jīng)認(rèn)知機(jī)(neocognitron)可以看作是卷積神經(jīng)網(wǎng)絡(luò)的第一個(gè)實(shí)現(xiàn)網(wǎng)絡(luò),,也是感受野概念在人工神經(jīng)網(wǎng)絡(luò)領(lǐng)域的首次應(yīng)用,。神經(jīng)認(rèn)知機(jī)將一個(gè)視覺模式分解成許多子模式(特征),然后進(jìn)入分層遞階式相連的特征平面進(jìn)行處理,,它試圖將視覺系統(tǒng)模型化,,使其能夠在即使物體有位移或輕微變形的時(shí)候,也能完成識(shí)別,。
通常神經(jīng)認(rèn)知機(jī)包含兩類神經(jīng)元,,即承擔(dān)特征抽取的S-元和抗變形的C-元。S-元中涉及兩個(gè)重要參數(shù),,即感受野與閾值參數(shù),,前者確定輸入連接的數(shù)目,后者則控制對特征子模式的反應(yīng)程度,。許多學(xué)者一直致力于提高神經(jīng)認(rèn)知機(jī)的性能的研究:在傳統(tǒng)的神經(jīng)認(rèn)知機(jī)中,,每個(gè)S-元的感光區(qū)中由C-元帶來的視覺模糊量呈正態(tài)分布。如果感光區(qū)的邊緣所產(chǎn)生的模糊效果要比中央來得大,,S-元將會(huì)接受這種非正態(tài)模糊所導(dǎo)致的更大的變形容忍性,。我們希望得到的是,訓(xùn)練模式與變形刺激模式在感受野的邊緣與其中心所產(chǎn)生的效果之間的差異變得越來越大,。為了有效地形成這種非正態(tài)模糊,,F(xiàn)ukushima提出了帶雙C-元層的改進(jìn)型神經(jīng)認(rèn)知機(jī)。
Van Ooyen和Niehuis為提高神經(jīng)認(rèn)知機(jī)的區(qū)別能力引入了一個(gè)新的參數(shù),。事實(shí)上,,該參數(shù)作為一種抑制信號,抑制了神經(jīng)元對重復(fù)激勵(lì)特征的激勵(lì),。多數(shù)神經(jīng)網(wǎng)絡(luò)在權(quán)值中記憶訓(xùn)練信息,。根據(jù)Hebb學(xué)習(xí)規(guī)則,,某種特征訓(xùn)練的次數(shù)越多,在以后的識(shí)別過程中就越容易被檢測,。也有學(xué)者將進(jìn)化計(jì)算理論與神經(jīng)認(rèn)知機(jī)結(jié)合,,通過減弱對重復(fù)性激勵(lì)特征的訓(xùn)練學(xué)習(xí),而使得網(wǎng)絡(luò)注意那些不同的特征以助于提高區(qū)分能力,。上述都是神經(jīng)認(rèn)知機(jī)的發(fā)展過程,,而卷積神經(jīng)網(wǎng)絡(luò)可看作是神經(jīng)認(rèn)知機(jī)的推廣形式,神經(jīng)認(rèn)知機(jī)是卷積神經(jīng)網(wǎng)絡(luò)的一種特例,。
2)卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)是一個(gè)多層的神經(jīng)網(wǎng)絡(luò),,每層由多個(gè)二維平面組成,而每個(gè)平面由多個(gè)獨(dú)立神經(jīng)元組成,。
圖:卷積神經(jīng)網(wǎng)絡(luò)的概念示范:輸入圖像通過和三個(gè)可訓(xùn)練的濾波器和可加偏置進(jìn)行卷積,,濾波過程如圖一,卷積后在C1層產(chǎn)生三個(gè)特征映射圖,,然后特征映射圖中每組的四個(gè)像素再進(jìn)行求和,,加權(quán)值,加偏置,,通過一個(gè)Sigmoid函數(shù)得到三個(gè)S2層的特征映射圖,。這些映射圖再進(jìn)過濾波得到C3層。這個(gè)層級結(jié)構(gòu)再和S2一樣產(chǎn)生S4,。最終,,這些像素值被光柵化,并連接成一個(gè)向量輸入到傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),,得到輸出,。
一般地,C層為特征提取層,,每個(gè)神經(jīng)元的輸入與前一層的局部感受野相連,,并提取該局部的特征,一旦該局部特征被提取后,,它與其他特征間的位置關(guān)系也隨之確定下來,;S層是特征映射層,網(wǎng)絡(luò)的每個(gè)計(jì)算層由多個(gè)特征映射組成,,每個(gè)特征映射為一個(gè)平面,,平面上所有神經(jīng)元的權(quán)值相等。特征映射結(jié)構(gòu)采用影響函數(shù)核小的sigmoid函數(shù)作為卷積網(wǎng)絡(luò)的激活函數(shù),,使得特征映射具有位移不變性,。
此外,由于一個(gè)映射面上的神經(jīng)元共享權(quán)值,,因而減少了網(wǎng)絡(luò)自由參數(shù)的個(gè)數(shù),,降低了網(wǎng)絡(luò)參數(shù)選擇的復(fù)雜度,。卷積神經(jīng)網(wǎng)絡(luò)中的每一個(gè)特征提取層(C-層)都緊跟著一個(gè)用來求局部平均與二次提取的計(jì)算層(S-層),這種特有的兩次特征提取結(jié)構(gòu)使網(wǎng)絡(luò)在識(shí)別時(shí)對輸入樣本有較高的畸變?nèi)萑棠芰Α?
3)關(guān)于參數(shù)減少與權(quán)值共享
上面聊到,,好像CNN一個(gè)牛逼的地方就在于通過感受野和權(quán)值共享減少了神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)的個(gè)數(shù),。那究竟是啥的呢?
下圖左:如果我們有1000×1000像素的圖像,,有1百萬個(gè)隱層神經(jīng)元,,那么他們?nèi)B接的話(每個(gè)隱層神經(jīng)元都連接圖像的每一個(gè)像素點(diǎn)),就有1000x1000x1000000=10^12個(gè)連接,,也就是10^12個(gè)權(quán)值參數(shù),。然而圖像的空間聯(lián)系是局部的,就像人是通過一個(gè)局部的感受野去感受外界圖像一樣,,每一個(gè)神經(jīng)元都不需要對全局圖像做感受,,每個(gè)神經(jīng)元只感受局部的圖像區(qū)域,然后在更高層,,將這些感受不同局部的神經(jīng)元綜合起來就可以得到全局的信息了。這樣,,我們就可以減少連接的數(shù)目,,也就是減少神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的權(quán)值參數(shù)的個(gè)數(shù)了。如下圖右:假如局部感受野是10×10,,隱層每個(gè)感受野只需要和這10×10的局部圖像相連接,,所以1百萬個(gè)隱層神經(jīng)元就只有一億個(gè)連接,即10^8個(gè)參數(shù),。比原來減少了四個(gè)0(數(shù)量級),,這樣訓(xùn)練起來就沒那么費(fèi)力了,但還是感覺很多的啊,,那還有啥辦法沒,?
我們知道,隱含層的每一個(gè)神經(jīng)元都連接10×10個(gè)圖像區(qū)域,,也就是說每一個(gè)神經(jīng)元存在10×10=100個(gè)連接權(quán)值參數(shù),。那如果我們每個(gè)神經(jīng)元這100個(gè)參數(shù)是相同的呢?也就是說每個(gè)神經(jīng)元用的是同一個(gè)卷積核去卷積圖像,。這樣我們就只有多少個(gè)參數(shù),??只有100個(gè)參數(shù)?。,。?!親,!不管你隱層的神經(jīng)元個(gè)數(shù)有多少,,兩層間的連接我只有100個(gè)參數(shù)啊,!親,!這就是權(quán)值共享啊,!親,!這就是卷積神經(jīng)網(wǎng)絡(luò)的主打賣點(diǎn)啊,!親?。ㄓ悬c(diǎn)煩了,呵呵)也許你會(huì)問,,這樣做靠譜嗎,?為什么可行呢?這個(gè)……共同學(xué)習(xí),。
好了,,你就會(huì)想,這樣提取特征也忒不靠譜吧,,這樣你只提取了一種特征?。繉α?,真聰明,,我們需要提取多種特征對不?假如一種濾波器,,也就是一種卷積核就是提出圖像的一種特征,,例如某個(gè)方向的邊緣。那么我們需要提取不同的特征,,怎么辦,,加多幾種濾波器不就行了嗎?對了,。所以假設(shè)我們加到100種濾波器,,每種濾波器的參數(shù)不一樣,表示它提出輸入圖像的不同特征,,例如不同的邊緣,。這樣每種濾波器去卷積圖像就得到對圖像的不同特征的放映,我們稱之為Feature Map,。所以100種卷積核就有100個(gè)Feature Map,。這100個(gè)Feature Map就組成了一層神經(jīng)元。到這個(gè)時(shí)候明了了吧。我們這一層有多少個(gè)參數(shù)了,?100種卷積核x每種卷積核共享100個(gè)參數(shù)=100×100=10K,,也就是1萬個(gè)參數(shù)。才1萬個(gè)參數(shù)??!親!(又來了,,受不了了?。┮娤聢D右:不同的顏色表達(dá)不同的濾波器。
嘿喲,,遺漏一個(gè)問題了,。剛才說隱層的參數(shù)個(gè)數(shù)和隱層的神經(jīng)元個(gè)數(shù)無關(guān),只和濾波器的大小和濾波器種類的多少有關(guān),。那么隱層的神經(jīng)元個(gè)數(shù)怎么確定呢,?它和原圖像,也就是輸入的大?。ㄉ窠?jīng)元個(gè)數(shù)),、濾波器的大小和濾波器在圖像中的滑動(dòng)步長都有關(guān)!例如,,我的圖像是1000×1000像素,,而濾波器大小是10×10,假設(shè)濾波器沒有重疊,,也就是步長為10,這樣隱層的神經(jīng)元個(gè)數(shù)就是(1000×1000 )/ (10×10)=100×100個(gè)神經(jīng)元了,,假設(shè)步長是8,,也就是卷積核會(huì)重疊兩個(gè)像素,那么……我就不算了,,思想懂了就好,。注意了,這只是一種濾波器,,也就是一個(gè)Feature Map的神經(jīng)元個(gè)數(shù)哦,,如果100個(gè)Feature Map就是100倍了。由此可見,,圖像越大,,神經(jīng)元個(gè)數(shù)和需要訓(xùn)練的權(quán)值參數(shù)個(gè)數(shù)的貧富差距就越大。
需要注意的一點(diǎn)是,,上面的討論都沒有考慮每個(gè)神經(jīng)元的偏置部分,。所以權(quán)值個(gè)數(shù)需要加1 。這個(gè)也是同一種濾波器共享的。
總之,,卷積網(wǎng)絡(luò)的核心思想是將:局部感受野,、權(quán)值共享(或者權(quán)值復(fù)制)以及時(shí)間或空間亞采樣這三種結(jié)構(gòu)思想結(jié)合起來獲得了某種程度的位移、尺度,、形變不變性,。
4)一個(gè)典型的例子說明
一種典型的用來識(shí)別數(shù)字的卷積網(wǎng)絡(luò)是LeNet-5( 效果和paper等見這 )。當(dāng)年美國大多數(shù)銀行就是用它來識(shí)別支票上面的手寫數(shù)字的,。能夠達(dá)到這種商用的地步,,它的準(zhǔn)確性可想而知。畢竟目前學(xué)術(shù)界和工業(yè)界的結(jié)合是最受爭議的,。
那下面咱們也用這個(gè)例子來說明下,。
LeNet-5共有7層,不包含輸入,,每層都包含可訓(xùn)練參數(shù)(連接權(quán)重),。輸入圖像為32*32大小。這要比 Mnist數(shù)據(jù)庫 (一個(gè)公認(rèn)的手寫數(shù)據(jù)庫)中最大的字母還大,。這樣做的原因是希望潛在的明顯特征如筆畫斷電或角點(diǎn)能夠出現(xiàn)在最高層特征監(jiān)測子感受野的中心,。
我們先要明確一點(diǎn):每個(gè)層有多個(gè)Feature Map,每個(gè)Feature Map通過一種卷積濾波器提取輸入的一種特征,,然后每個(gè)Feature Map有多個(gè)神經(jīng)元,。
C1層是一個(gè)卷積層(為什么是卷積?卷積運(yùn)算一個(gè)重要的特點(diǎn)就是,,通過卷積運(yùn)算,,可以使原信號特征增強(qiáng),并且降低噪音),,由6個(gè)特征圖Feature Map構(gòu)成,。特征圖中每個(gè)神經(jīng)元與輸入中5*5的鄰域相連。特征圖的大小為28*28,,這樣能防止輸入的連接掉到邊界之外(是為了BP反饋時(shí)的計(jì)算,,不致梯度損失,個(gè)人見解),。C1有156個(gè)可訓(xùn)練參數(shù)(每個(gè)濾波器5*5=25個(gè)unit參數(shù)和一個(gè)bias參數(shù),,一共6個(gè)濾波器,共(5*5+1)*6=156個(gè)參數(shù)),,共156*(28*28)=122,304個(gè)連接,。
S2層是一個(gè)下采樣層(為什么是下采樣?利用圖像局部相關(guān)性的原理,,對圖像進(jìn)行子抽樣,,可以減少數(shù)據(jù)處理量同時(shí)保留有用信息),,有6個(gè)14*14的特征圖。特征圖中的每個(gè)單元與C1中相對應(yīng)特征圖的2*2鄰域相連接,。S2層每個(gè)單元的4個(gè)輸入相加,,乘以一個(gè)可訓(xùn)練參數(shù),再加上一個(gè)可訓(xùn)練偏置,。結(jié)果通過sigmoid函數(shù)計(jì)算,。可訓(xùn)練系數(shù)和偏置控制著sigmoid函數(shù)的非線性程度,。如果系數(shù)比較小,,那么運(yùn)算近似于線性運(yùn)算,亞采樣相當(dāng)于模糊圖像,。如果系數(shù)比較大,,根據(jù)偏置的大小亞采樣可以被看成是有噪聲的“或”運(yùn)算或者有噪聲的“與”運(yùn)算。每個(gè)單元的2*2感受野并不重疊,,因此S2中每個(gè)特征圖的大小是C1中特征圖大小的1/4(行和列各1/2),。S2層有12個(gè)可訓(xùn)練參數(shù)和5880個(gè)連接。
圖:卷積和子采樣過程:卷積過程包括:用一個(gè)可訓(xùn)練的濾波器f x 去卷積一個(gè)輸入的圖像(第一階段是輸入的圖像,,后面的階段就是卷積特征map了),,然后加一個(gè)偏置b x ,得到卷積層C x ,。子采樣過程包括:每鄰域四個(gè)像素求和變?yōu)橐粋€(gè)像素,,然后通過標(biāo)量W x+1 加權(quán),再增加偏置b x+1 ,,然后通過一個(gè)sigmoid激活函數(shù),,產(chǎn)生一個(gè)大概縮小四倍的特征映射圖S x+1 。
所以從一個(gè)平面到下一個(gè)平面的映射可以看作是作卷積運(yùn)算,,S-層可看作是模糊濾波器,,起到二次特征提取的作用。隱層與隱層之間空間分辨率遞減,,而每層所含的平面數(shù)遞增,這樣可用于檢測更多的特征信息,。
C3層也是一個(gè)卷積層,,它同樣通過5×5的卷積核去卷積層S2,然后得到的特征map就只有10×10個(gè)神經(jīng)元,,但是它有16種不同的卷積核,,所以就存在16個(gè)特征map了。這里需要注意的一點(diǎn)是:C3中的每個(gè)特征map是連接到S2中的所有6個(gè)或者幾個(gè)特征map的,,表示本層的特征map是上一層提取到的特征map的不同組合(這個(gè)做法也并不是唯一的),。(看到?jīng)]有,這里是組合,就像之前聊到的人的視覺系統(tǒng)一樣,,底層的結(jié)構(gòu)構(gòu)成上層更抽象的結(jié)構(gòu),,例如邊緣構(gòu)成形狀或者目標(biāo)的部分)。
剛才說C3中每個(gè)特征圖由S2中所有6個(gè)或者幾個(gè)特征map組合而成,。為什么不把S2中的每個(gè)特征圖連接到每個(gè)C3的特征圖呢,?原因有2點(diǎn)。第一,,不完全的連接機(jī)制將連接的數(shù)量保持在合理的范圍內(nèi),。第二,也是最重要的,,其破壞了網(wǎng)絡(luò)的對稱性,。由于不同的特征圖有不同的輸入,所以迫使他們抽取不同的特征(希望是互補(bǔ)的),。
例如,,存在的一個(gè)方式是:C3的前6個(gè)特征圖以S2中3個(gè)相鄰的特征圖子集為輸入。接下來6個(gè)特征圖以S2中4個(gè)相鄰特征圖子集為輸入,。然后的3個(gè)以不相鄰的4個(gè)特征圖子集為輸入,。最后一個(gè)將S2中所有特征圖為輸入。這樣C3層有1516個(gè)可訓(xùn)練參數(shù)和151600個(gè)連接,。
S4層是一個(gè)下采樣層,,由16個(gè)5*5大小的特征圖構(gòu)成。特征圖中的每個(gè)單元與C3中相應(yīng)特征圖的2*2鄰域相連接,,跟C1和S2之間的連接一樣,。S4層有32個(gè)可訓(xùn)練參數(shù)(每個(gè)特征圖1個(gè)因子和一個(gè)偏置)和2000個(gè)連接。
C5層是一個(gè)卷積層,,有120個(gè)特征圖,。每個(gè)單元與S4層的全部16個(gè)單元的5*5鄰域相連。由于S4層特征圖的大小也為5*5(同濾波器一樣),,故C5特征圖的大小為1*1:這構(gòu)成了S4和C5之間的全連接,。之所以仍將C5標(biāo)示為卷積層而非全相聯(lián)層,是因?yàn)槿绻鸏eNet-5的輸入變大,,而其他的保持不變,,那么此時(shí)特征圖的維數(shù)就會(huì)比1*1大。C5層有48120個(gè)可訓(xùn)練連接,。
F6層有84個(gè)單元(之所以選這個(gè)數(shù)字的原因來自于輸出層的設(shè)計(jì)),,與C5層全相連。有10164個(gè)可訓(xùn)練參數(shù),。如同經(jīng)典神經(jīng)網(wǎng)絡(luò),,F(xiàn)6層計(jì)算輸入向量和權(quán)重向量之間的點(diǎn)積,,再加上一個(gè)偏置。然后將其傳遞給sigmoid函數(shù)產(chǎn)生單元i的一個(gè)狀態(tài),。
最后,,輸出層由歐式徑向基函數(shù)(Euclidean Radial Basis Function)單元組成,每類一個(gè)單元,,每個(gè)有84個(gè)輸入,。換句話說,每個(gè)輸出RBF單元計(jì)算輸入向量和參數(shù)向量之間的歐式距離,。輸入離參數(shù)向量越遠(yuǎn),,RBF輸出的越大。一個(gè)RBF輸出可以被理解為衡量輸入模式和與RBF相關(guān)聯(lián)類的一個(gè)模型的匹配程度的懲罰項(xiàng),。用概率術(shù)語來說,,RBF輸出可以被理解為F6層配置空間的高斯分布的負(fù)log-likelihood。給定一個(gè)輸入模式,,損失函數(shù)應(yīng)能使得F6的配置與RBF參數(shù)向量(即模式的期望分類)足夠接近,。這些單元的參數(shù)是人工選取并保持固定的(至少初始時(shí)候如此)。這些參數(shù)向量的成分被設(shè)為-1或1,。雖然這些參數(shù)可以以-1和1等概率的方式任選,,或者構(gòu)成一個(gè)糾錯(cuò)碼,但是被設(shè)計(jì)成一個(gè)相應(yīng)字符類的7*12大?。?4)的格式化圖片,。這種表示對識(shí)別單獨(dú)的數(shù)字不是很有用,但是對識(shí)別可打印ASCII集中的字符串很有用,。
使用這種分布編碼而非更常用的“1 of N”編碼用于產(chǎn)生輸出的另一個(gè)原因是,,當(dāng)類別比較大的時(shí)候,非分布編碼的效果比較差,。原因是大多數(shù)時(shí)間非分布編碼的輸出必須為0,。這使得用sigmoid單元很難實(shí)現(xiàn)。另一個(gè)原因是分類器不僅用于識(shí)別字母,,也用于拒絕非字母,。使用分布編碼的RBF更適合該目標(biāo)。因?yàn)榕csigmoid不同,,他們在輸入空間的較好限制的區(qū)域內(nèi)興奮,,而非典型模式更容易落到外邊。
RBF參數(shù)向量起著F6層目標(biāo)向量的角色,。需要指出這些向量的成分是+1或-1,這正好在F6 sigmoid的范圍內(nèi),,因此可以防止sigmoid函數(shù)飽和,。實(shí)際上,,+1和-1是sigmoid函數(shù)的最大彎曲的點(diǎn)處。這使得F6單元運(yùn)行在最大非線性范圍內(nèi),。必須避免sigmoid函數(shù)的飽和,,因?yàn)檫@將會(huì)導(dǎo)致?lián)p失函數(shù)較慢的收斂和病態(tài)問題。
5)訓(xùn)練過程
神經(jīng)網(wǎng)絡(luò)用于模式識(shí)別的主流是有指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò),,無指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò)更多的是用于聚類分析,。對于有指導(dǎo)的模式識(shí)別,由于任一樣本的類別是已知的,,樣本在空間的分布不再是依據(jù)其自然分布傾向來劃分,,而是要根據(jù)同類樣本在空間的分布及不同類樣本之間的分離程度找一種適當(dāng)?shù)目臻g劃分方法,或者找到一個(gè)分類邊界,,使得不同類樣本分別位于不同的區(qū)域內(nèi),。這就需要一個(gè)長時(shí)間且復(fù)雜的學(xué)習(xí)過程,不斷調(diào)整用以劃分樣本空間的分類邊界的位置,,使盡可能少的樣本被劃分到非同類區(qū)域中,。
卷積網(wǎng)絡(luò)在本質(zhì)上是一種輸入到輸出的映射,它能夠?qū)W習(xí)大量的輸入與輸出之間的映射關(guān)系,,而不需要任何輸入和輸出之間的精確的數(shù)學(xué)表達(dá)式,,只要用已知的模式對卷積網(wǎng)絡(luò)加以訓(xùn)練,網(wǎng)絡(luò)就具有輸入輸出對之間的映射能力,。卷積網(wǎng)絡(luò)執(zhí)行的是有導(dǎo)師訓(xùn)練,,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對構(gòu)成的,。所有這些向量對,,都應(yīng)該是來源于網(wǎng)絡(luò)即將模擬的系統(tǒng)的實(shí)際“運(yùn)行”結(jié)果。它們可以是從實(shí)際運(yùn)行系統(tǒng)中采集來的,。在開始訓(xùn)練前,,所有的權(quán)都應(yīng)該用一些不同的小隨機(jī)數(shù)進(jìn)行初始化?!靶‰S機(jī)數(shù)”用來保證網(wǎng)絡(luò)不會(huì)因權(quán)值過大而進(jìn)入飽和狀態(tài),,從而導(dǎo)致訓(xùn)練失敗,;“不同”用來保證網(wǎng)絡(luò)可以正常地學(xué)習(xí),。實(shí)際上,如果用相同的數(shù)去初始化權(quán)矩陣,,則網(wǎng)絡(luò)無能力學(xué)習(xí),。
訓(xùn)練算法與傳統(tǒng)的BP算法差不多。主要包括4步,,這4步被分為兩個(gè)階段:
第一階段,,向前傳播階段:
a)從樣本集中取一個(gè)樣本(X,Y p ),,將X輸入網(wǎng)絡(luò);
b)計(jì)算相應(yīng)的實(shí)際輸出O p ,。
在此階段,,信息從輸入層經(jīng)過逐級的變換,傳送到輸出層,。這個(gè)過程也是網(wǎng)絡(luò)在完成訓(xùn)練后正常運(yùn)行時(shí)執(zhí)行的過程,。在此過程中,網(wǎng)絡(luò)執(zhí)行的是計(jì)算(實(shí)際上就是輸入與每層的權(quán)值矩陣相點(diǎn)乘,,得到最后的輸出結(jié)果):
O p =F n (…(F 2 (F 1 (X p W (1) )W (2) )…)W (n) )
第二階段,,向后傳播階段
a)算實(shí)際輸出O p 與相應(yīng)的理想輸出Y p 的差;
b)按極小化誤差的方法反向傳播調(diào)整權(quán)矩陣,。
6)卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點(diǎn)
卷積神經(jīng)網(wǎng)絡(luò)CNN主要用來識(shí)別位移,、縮放及其他形式扭曲不變性的二維圖形。由于CNN的特征檢測層通過訓(xùn)練數(shù)據(jù)進(jìn)行學(xué)習(xí),,所以在使用CNN時(shí),,避免了顯式的特征抽取,而隱式地從訓(xùn)練數(shù)據(jù)中進(jìn)行學(xué)習(xí),;再者由于同一特征映射面上的神經(jīng)元權(quán)值相同,,所以網(wǎng)絡(luò)可以并行學(xué)習(xí),這也是卷積網(wǎng)絡(luò)相對于神經(jīng)元彼此相連網(wǎng)絡(luò)的一大優(yōu)勢,。卷積神經(jīng)網(wǎng)絡(luò)以其局部權(quán)值共享的特殊結(jié)構(gòu)在語音識(shí)別和圖像處理方面有著獨(dú)特的優(yōu)越性,,其布局更接近于實(shí)際的生物神經(jīng)網(wǎng)絡(luò),權(quán)值共享降低了網(wǎng)絡(luò)的復(fù)雜性,,特別是多維輸入向量的圖像可以直接輸入網(wǎng)絡(luò)這一特點(diǎn)避免了特征提取和分類過程中數(shù)據(jù)重建的復(fù)雜度,。
流的分類方式幾乎都是基于統(tǒng)計(jì)特征的,這就意味著在進(jìn)行分辨前必須提取某些特征,。然而,,顯式的特征提取并不容易,在一些應(yīng)用問題中也并非總是可靠的,。卷積神經(jīng)網(wǎng)絡(luò),,它避免了顯式的特征取樣,隱式地從訓(xùn)練數(shù)據(jù)中進(jìn)行學(xué)習(xí),。這使得卷積神經(jīng)網(wǎng)絡(luò)明顯有別于其他基于神經(jīng)網(wǎng)絡(luò)的分類器,,通過結(jié)構(gòu)重組和減少權(quán)值將特征提取功能融合進(jìn)多層感知器。它可以直接處理灰度圖片,,能夠直接用于處理基于圖像的分類,。
卷積網(wǎng)絡(luò)較一般神經(jīng)網(wǎng)絡(luò)在圖像處理方面有如下優(yōu)點(diǎn): a)輸入圖像和網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)能很好的吻合;b)特征提取和模式分類同時(shí)進(jìn)行,并同時(shí)在訓(xùn)練中產(chǎn)生,;c)權(quán)重共享可以減少網(wǎng)絡(luò)的訓(xùn)練參數(shù),,使神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)變得更簡單,適應(yīng)性更強(qiáng),。
7)小結(jié)
CNNs中這種層間聯(lián)系和空域信息的緊密關(guān)系,使其適于圖像處理和理解,。而且,,其在自動(dòng)提取圖像的顯著特征方面還表現(xiàn)出了比較優(yōu)的性能。在一些例子當(dāng)中,,Gabor濾波器已經(jīng)被使用在一個(gè)初始化預(yù)處理的步驟中,,以達(dá)到模擬人類視覺系統(tǒng)對視覺刺激的響應(yīng)。在目前大部分的工作中,,研究者將CNNs應(yīng)用到了多種機(jī)器學(xué)習(xí)問題中,,包括人臉識(shí)別,文檔分析和語言檢測等,。為了達(dá)到尋找視頻中幀與幀之間的相干性的目的,,目前CNNs通過一個(gè)時(shí)間相干性去訓(xùn)練,但這個(gè)不是CNNs特有的,。
呵呵,,這部分講得太啰嗦了,又沒講到點(diǎn)上,。沒辦法了,,先這樣的,這樣這個(gè)過程我還沒有走過,,所以自己水平有限啊,,望各位明察。需要后面再改了,,呵呵,。
十、總結(jié)與展望
1)Deep learning總結(jié)
深度學(xué)習(xí)是關(guān)于自動(dòng)學(xué)習(xí)要建模的數(shù)據(jù)的潛在(隱含)分布的多層(復(fù)雜)表達(dá)的算法,。換句話來說,,深度學(xué)習(xí)算法自動(dòng)的提取分類需要的低層次或者高層次特征。高層次特征,,一是指該特征可以分級(層次)地依賴其他特征,,例如:對于機(jī)器視覺,深度學(xué)習(xí)算法從原始圖像去學(xué)習(xí)得到它的一個(gè)低層次表達(dá),,例如邊緣檢測器,,小波濾波器等,然后在這些低層次表達(dá)的基礎(chǔ)上再建立表達(dá),,例如這些低層次表達(dá)的線性或者非線性組合,,然后重復(fù)這個(gè)過程,,最后得到一個(gè)高層次的表達(dá)。
Deep learning能夠得到更好地表示數(shù)據(jù)的feature,,同時(shí)由于模型的層次,、參數(shù)很多,capacity足夠,,因此,,模型有能力表示大規(guī)模數(shù)據(jù),所以對于圖像,、語音這種特征不明顯(需要手工設(shè)計(jì)且很多沒有直觀物理含義)的問題,,能夠在大規(guī)模訓(xùn)練數(shù)據(jù)上取得更好的效果。此外,,從模式識(shí)別特征和分類器的角度,,deep learning框架將feature和分類器結(jié)合到一個(gè)框架中,用數(shù)據(jù)去學(xué)習(xí)feature,,在使用中減少了手工設(shè)計(jì)feature的巨大工作量(這是目前工業(yè)界工程師付出努力最多的方面),,因此,不僅僅效果可以更好,,而且,,使用起來也有很多方便之處,因此,,是十分值得關(guān)注的一套框架,,每個(gè)做ML的人都應(yīng)該關(guān)注了解一下。
當(dāng)然,,deep learning本身也不是完美的,,也不是解決世間任何ML問題的利器,不應(yīng)該被放大到一個(gè)無所不能的程度,。
2)Deep learning未來
深度學(xué)習(xí)目前仍有大量工作需要研究,。目前的關(guān)注點(diǎn)還是從機(jī)器學(xué)習(xí)的領(lǐng)域借鑒一些可以在深度學(xué)習(xí)使用的方法,特別是降維領(lǐng)域,。例如:目前一個(gè)工作就是稀疏編碼,,通過壓縮感知理論對高維數(shù)據(jù)進(jìn)行降維,使得非常少的元素的向量就可以精確的代表原來的高維信號,。另一個(gè)例子就是半監(jiān)督流行學(xué)習(xí),,通過測量訓(xùn)練樣本的相似性,將高維數(shù)據(jù)的這種相似性投影到低維空間,。另外一個(gè)比較鼓舞人心的方向就是evolutionary programming approaches(遺傳編程方法),,它可以通過最小化工程能量去進(jìn)行概念性自適應(yīng)學(xué)習(xí)和改變核心架構(gòu)。
Deep learning還有很多核心的問題需要解決:
(1)對于一個(gè)特定的框架,對于多少維的輸入它可以表現(xiàn)得較優(yōu)(如果是圖像,,可能是上百萬維),?
(2)對捕捉短時(shí)或者長時(shí)間的時(shí)間依賴,哪種架構(gòu)才是有效的,?
(3)如何對于一個(gè)給定的深度學(xué)習(xí)架構(gòu),,融合多種感知的信息?
(4)有什么正確的機(jī)理可以去增強(qiáng)一個(gè)給定的深度學(xué)習(xí)架構(gòu),,以改進(jìn)其魯棒性和對扭曲和數(shù)據(jù)丟失的不變性,?
(5)模型方面是否有其他更為有效且有理論依據(jù)的深度模型學(xué)習(xí)算法?
探索新的特征提取模型是值得深入研究的內(nèi)容,。此外有效的可并行訓(xùn)練算法也是值得研究的一個(gè)方向。當(dāng)前基于最小批處理的隨機(jī)梯度優(yōu)化算法很難在多計(jì)算機(jī)中進(jìn)行并行訓(xùn)練,。通常辦法是利用圖形處理單元加速學(xué)習(xí)過程,。然而單個(gè)機(jī)器GPU對大規(guī)模數(shù)據(jù)識(shí)別或相似任務(wù)數(shù)據(jù)集并不適用。在深度學(xué)習(xí)應(yīng)用拓展方面,,如何合理充分利用深度學(xué)習(xí)在增強(qiáng)傳統(tǒng)學(xué)習(xí)算法的性能仍是目前各領(lǐng)域的研究重點(diǎn),。
十一、參考文獻(xiàn)和Deep Learning學(xué)習(xí)資源 ( 持續(xù)更新…… )
先是機(jī)器學(xué)習(xí)領(lǐng)域大牛的微博:@余凱_西二旗民工,;@老師木,;@梁斌penny;@張棟_機(jī)器學(xué)習(xí),;@鄧侃,;@大數(shù)據(jù)皮東;@djvu9……
(