本文是對(duì)卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)進(jìn)行介紹,主要內(nèi)容包括卷積神經(jīng)網(wǎng)絡(luò)概念、卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、卷積神經(jīng)網(wǎng)絡(luò)求解、卷積神經(jīng)網(wǎng)絡(luò)LeNet-5結(jié)構(gòu)分析、卷積神經(jīng)網(wǎng)絡(luò)注意事項(xiàng)。
一、卷積神經(jīng)網(wǎng)絡(luò)概念
上世紀(jì)60年代,Hubel等人通過對(duì)貓視覺皮層細(xì)胞的研究,提出了感受野這個(gè)概念,到80年代,F(xiàn)ukushima在感受野概念的基礎(chǔ)之上提出了神經(jīng)認(rèn)知機(jī)的概念,可以看作是卷積神經(jīng)網(wǎng)絡(luò)的第一個(gè)實(shí)現(xiàn)網(wǎng)絡(luò),神經(jīng)認(rèn)知機(jī)將一個(gè)視覺模式分解成許多子模式(特征),然后進(jìn)入分層遞階式相連的特征平面進(jìn)行處理,它試圖將視覺系統(tǒng)模型化,使其能夠在即使物體有位移或輕微變形的時(shí)候,也能完成識(shí)別。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)是多層感知機(jī)(MLP)的變種。由生物學(xué)家休博爾和維瑟爾在早期關(guān)于貓視覺皮層的研究發(fā)展而來(lái)。視覺皮層的細(xì)胞存在一個(gè)復(fù)雜的構(gòu)造。這些細(xì)胞對(duì)視覺輸入空間的子區(qū)域非常敏感,我們稱之為感受野,以這種方式平鋪覆蓋到整個(gè)視野區(qū)域。這些細(xì)胞可以分為兩種基本類型,簡(jiǎn)單細(xì)胞和復(fù)雜細(xì)胞。簡(jiǎn)單細(xì)胞最大程度響應(yīng)來(lái)自感受野范圍內(nèi)的邊緣刺激模式。復(fù)雜細(xì)胞有更大的接受域,它對(duì)來(lái)自確切位置的刺激具有局部不變性。
通常神經(jīng)認(rèn)知機(jī)包含兩類神經(jīng)元,即承擔(dān)特征提取的采樣元和抗變形的卷積元,采樣元中涉及兩個(gè)重要參數(shù),即感受野與閾值參數(shù),前者確定輸入連接的數(shù)目,后者則控制對(duì)特征子模式的反應(yīng)程度。卷積神經(jīng)網(wǎng)絡(luò)可以看作是神經(jīng)認(rèn)知機(jī)的推廣形式,神經(jīng)認(rèn)知機(jī)是卷積神經(jīng)網(wǎng)絡(luò)的一種特例。
CNN由紐約大學(xué)的Yann LeCun于1998年提出。CNN本質(zhì)上是一個(gè)多層感知機(jī),其成功的原因關(guān)鍵在于它所采用的局部連接和共享權(quán)值的方式,一方面減少了的權(quán)值的數(shù)量使得網(wǎng)絡(luò)易于優(yōu)化,另一方面降低了過擬合的風(fēng)險(xiǎn)。CNN是神經(jīng)網(wǎng)絡(luò)中的一種,它的權(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ù)重建過程。在二維圖像處理上有眾多優(yōu)勢(shì),如網(wǎng)絡(luò)能自行抽取圖像特征包括顏色、紋理、形狀及圖像的拓?fù)浣Y(jié)構(gòu);在處理二維圖像問題上,特別是識(shí)別位移、縮放及其它形式扭曲不變性的應(yīng)用上具有良好的魯棒性和運(yùn)算效率等。
CNN本身可以采用不同的神經(jīng)元和學(xué)習(xí)規(guī)則的組合形式。
CNN具有一些傳統(tǒng)技術(shù)所沒有的優(yōu)點(diǎn):良好的容錯(cuò)能力、并行處理能力和自學(xué)習(xí)能力,可處理環(huán)境信息復(fù)雜,背景知識(shí)不清楚,推理規(guī)則不明確情況下的問題,允許樣品有較大的缺損、畸變,運(yùn)行速度快,自適應(yīng)性能好,具有較高的分辨率。它是通過結(jié)構(gòu)重組和減少權(quán)值將特征抽取功能融合進(jìn)多層感知器,省略識(shí)別前復(fù)雜的圖像特征抽取過程。
CNN的泛化能力要顯著優(yōu)于其它方法,卷積神經(jīng)網(wǎng)絡(luò)已被應(yīng)用于模式分類,物體檢測(cè)和物體識(shí)別等方面。利用卷積神經(jīng)網(wǎng)絡(luò)建立模式分類器,將卷積神經(jīng)網(wǎng)絡(luò)作為通用的模式分類器,直接用于灰度圖像。
CNN是一個(gè)前潰式神經(jīng)網(wǎng)絡(luò),能從一個(gè)二維圖像中提取其拓?fù)浣Y(jié)構(gòu),采用反向傳播算法來(lái)優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),求解網(wǎng)絡(luò)中的未知參數(shù)。
CNN是一類特別設(shè)計(jì)用來(lái)處理二維數(shù)據(jù)的多層神經(jīng)網(wǎng)絡(luò)。CNN被認(rèn)為是第一個(gè)真正成功的采用多層層次結(jié)構(gòu)網(wǎng)絡(luò)的具有魯棒性的深度學(xué)習(xí)方法。CNN通過挖掘數(shù)據(jù)中的空間上的相關(guān)性,來(lái)減少網(wǎng)絡(luò)中的可訓(xùn)練參數(shù)的數(shù)量,達(dá)到改進(jìn)前向傳播網(wǎng)絡(luò)的反向傳播算法效率,因?yàn)镃NN需要非常少的數(shù)據(jù)預(yù)處理工作,所以也被認(rèn)為是一種深度學(xué)習(xí)的方法。在CNN中,圖像中的小塊區(qū)域(也叫做“局部感知區(qū)域”)被當(dāng)做層次結(jié)構(gòu)中的底層的輸入數(shù)據(jù),信息通過前向傳播經(jīng)過網(wǎng)絡(luò)中的各個(gè)層,在每一層中都由過濾器構(gòu)成,以便能夠獲得觀測(cè)數(shù)據(jù)的一些顯著特征。因?yàn)榫植扛兄獏^(qū)域能夠獲得一些基礎(chǔ)的特征,比如圖像中的邊界和角落等,這種方法能夠提供一定程度對(duì)位移、拉伸和旋轉(zhuǎn)的相對(duì)不變性。
CNN中層次之間的緊密聯(lián)系和空間信息使得其特別適用于圖像的處理和理解,并且能夠自動(dòng)的從圖像抽取出豐富的相關(guān)特性。
CNN通過結(jié)合局部感知區(qū)域、共享權(quán)重、空間或者時(shí)間上的降采樣來(lái)充分利用數(shù)據(jù)本身包含的局部性等特征,優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),并且保證一定程度上的位移和變形的不變性。
CNN受視覺神經(jīng)機(jī)制的啟發(fā)而設(shè)計(jì),是為識(shí)別二維或三維信號(hào)而設(shè)計(jì)的一個(gè)多層感知器,這種網(wǎng)絡(luò)結(jié)構(gòu)對(duì)平移、縮放、傾斜等變形具有高度不變性。
CNN可以用來(lái)識(shí)別位移、縮放及其它形式扭曲不變性的二維或三維圖像。CNN的特征提取層參數(shù)是通過訓(xùn)練數(shù)據(jù)學(xué)習(xí)得到的,所以其避免了人工特征提取,而是從訓(xùn)練數(shù)據(jù)中進(jìn)行學(xué)習(xí);其次同一特征圖的神經(jīng)元共享權(quán)值,減少了網(wǎng)絡(luò)參數(shù),這也是卷積網(wǎng)絡(luò)相對(duì)于全連接網(wǎng)絡(luò)的一大優(yōu)勢(shì)。共享局部權(quán)值這一特殊結(jié)構(gòu)更接近于真實(shí)的生物神經(jīng)網(wǎng)絡(luò)使CNN在圖像處理、語(yǔ)音識(shí)別領(lǐng)域有著獨(dú)特的優(yōu)越性,另一方面權(quán)值共享同時(shí)降低了網(wǎng)絡(luò)的復(fù)雜性,且多維輸入信號(hào)(語(yǔ)音、圖像)可以直接輸入網(wǎng)絡(luò)的特點(diǎn)避免了特征提取和分類過程中數(shù)據(jù)重排的過程。
CNN是一種特殊的深層的神經(jīng)網(wǎng)絡(luò)模型,它的特殊性體現(xiàn)在兩個(gè)方面,一方面它的神經(jīng)元的連接是非全連接的,另一方面同一層中某些神經(jīng)元之間的連接的權(quán)重是共享的(即相同的)。它的非全連接和權(quán)值共享的網(wǎng)絡(luò)結(jié)構(gòu)使之更類似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度(對(duì)于很難學(xué)習(xí)的深層結(jié)構(gòu)來(lái)說(shuō),這是非常重要的),減少了權(quán)值的數(shù)量。
CNN是一種深度的監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型,具有極強(qiáng)的適應(yīng)性,善于挖掘數(shù)據(jù)局部特征,提取全局訓(xùn)練特征和分類,它的權(quán)值共享結(jié)構(gòu)網(wǎng)絡(luò)使之更類似于生物神經(jīng)網(wǎng)絡(luò),在模式識(shí)別各個(gè)領(lǐng)域都取得了很好的成果。
稀疏連接:在BP神經(jīng)網(wǎng)絡(luò)中,每一層的神經(jīng)元節(jié)點(diǎn)是一個(gè)線性一維排列結(jié)構(gòu),層與層各神經(jīng)元節(jié)點(diǎn)之間是全連接的。卷積神經(jīng)網(wǎng)絡(luò)中,層與層之間的神經(jīng)元節(jié)點(diǎn)不再是全連接形式,利用層間局部空間相關(guān)性將相鄰每一層的神經(jīng)元節(jié)點(diǎn)只與和它相近的上層神經(jīng)元節(jié)點(diǎn)連接,即局部連接。這樣大大降低了神經(jīng)網(wǎng)絡(luò)架構(gòu)的參數(shù)規(guī)模。
權(quán)重共享:在卷積神經(jīng)網(wǎng)絡(luò)中,卷積層的每一個(gè)卷積濾波器重復(fù)的作用于整個(gè)感受野中,對(duì)輸入圖像進(jìn)行卷積,卷積結(jié)果構(gòu)成了輸入圖像的特征圖,提取出圖像的局部特征。每一個(gè)卷積濾波器共享相同的參數(shù),包括相同的權(quán)重矩陣和偏置項(xiàng)。共享權(quán)重的好處是在對(duì)圖像進(jìn)行特征提取時(shí)不用考慮局部特征的位置。而且權(quán)重共享提供了一種有效的方式,使要學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù)數(shù)量大大降低。
最大池采樣:它是一種非線性降采樣方法。在通過卷積獲取圖像特征之后是利用這些特征進(jìn)行分類??梢杂盟刑崛〉降奶卣鲾?shù)據(jù)進(jìn)行分類器的訓(xùn)練,但這通常會(huì)產(chǎn)生極大的計(jì)算量。所以在獲取圖像的卷積特征后,要通過最大池采樣方法對(duì)卷積特征進(jìn)行降維。將卷積特征劃分為數(shù)個(gè)n*n的不相交區(qū)域,用這些區(qū)域的最大(或平均)特征來(lái)表示降維后的卷積特征。這些降維后的特征更容易進(jìn)行分類。
最大池采樣在計(jì)算機(jī)視覺中的價(jià)值體現(xiàn)在兩個(gè)方面:(1)、它減小了來(lái)自上層隱藏層的計(jì)算復(fù)雜度;(2)、這些池化單元具有平移不變性,即使圖像有小的位移,提取到的特征依然會(huì)保持不變。由于增強(qiáng)了對(duì)位移的魯棒性,最大池采樣方法是一個(gè)高效的降低數(shù)據(jù)維度的采樣方法。
Softmax回歸:它是在邏輯回歸的基礎(chǔ)上擴(kuò)張而來(lái),它的目的是為了解決多分類問題。在這類問題中,訓(xùn)練樣本的種類一般在兩個(gè)以上。Softmax回歸是有監(jiān)督學(xué)習(xí)算法,它也可以與深度學(xué)習(xí)或無(wú)監(jiān)督學(xué)習(xí)方法結(jié)合使用。
CNN是一種帶有卷積結(jié)構(gòu)的深度神經(jīng)網(wǎng)絡(luò),通常至少有兩個(gè)非線性可訓(xùn)練的卷積層,兩個(gè)非線性的固定卷積層(又叫Pooling Laye)和一個(gè)全連接層,一共至少5個(gè)隱含層。
卷積神經(jīng)網(wǎng)絡(luò)中,輸入就是一幅幅的圖像,權(quán)值W就是卷積模板,一般是卷積層和下采樣層交替,最后是全連接的神經(jīng)網(wǎng)絡(luò)。
局部區(qū)域感知能夠發(fā)現(xiàn)數(shù)據(jù)的一些局部特征,比如圖片上的一個(gè)角,一段弧,這些基本特征是構(gòu)成動(dòng)物視覺的基礎(chǔ)。
CNN中每一層的由多個(gè)map組成,每個(gè)map由多個(gè)神經(jīng)單元組成,同一個(gè)map的所有神經(jīng)單元共用一個(gè)卷積核(即權(quán)重),卷積核往往代表一個(gè)特征,比如某個(gè)卷積核代表一段弧,那么把這個(gè)卷積核在整個(gè)圖片上滾一下,卷積值較大的區(qū)域就很有可能是一段弧。注意卷積核其實(shí)就是權(quán)重,我們并不需要單獨(dú)去計(jì)算一個(gè)卷積,而是一個(gè)固定大小的權(quán)重矩陣去圖像上匹配時(shí),這個(gè)操作與卷積類似,因此我們稱為卷積神經(jīng)網(wǎng)絡(luò),實(shí)際上,BP也可以看作一種特殊的卷積神經(jīng)網(wǎng)絡(luò),只是這個(gè)卷積核就是某層的所有權(quán)重,即感知區(qū)域是整個(gè)圖像。權(quán)重共享策略減少了需要訓(xùn)練的參數(shù),使得訓(xùn)練出來(lái)的模型的泛華能力更強(qiáng)。
CNN一般采用卷積層與采樣層交替設(shè)置,即一層卷積層接一層采樣層,采樣層后接一層卷積...這樣卷積層提取出特征,再進(jìn)行組合形成更抽象的特征,最后形成對(duì)圖片對(duì)象的描述特征,CNN后面還可以跟全連接層,全連接層跟BP一樣。
CNN的最大特點(diǎn)就是稀疏連接(局部感受)和權(quán)值共享。稀疏連接和權(quán)值共享可以減少所要訓(xùn)練的參數(shù),減少計(jì)算復(fù)雜度。
卷積神經(jīng)網(wǎng)絡(luò)是一個(gè)多層的神經(jīng)網(wǎng)絡(luò),每層由多個(gè)二維平面組成,而每個(gè)平面由多個(gè)獨(dú)立神經(jīng)元組成。
卷積網(wǎng)絡(luò)在本質(zhì)上是一種輸入到輸出的映射,它能夠?qū)W習(xí)大量的輸入與輸出之間的映射關(guān)系,而不需要任何輸入和輸出之間的精確的數(shù)學(xué)表達(dá)式,只要用已知的模式對(duì)卷積網(wǎng)絡(luò)加以訓(xùn)練,網(wǎng)絡(luò)就具有輸入輸出對(duì)之間的映射能力。卷積網(wǎng)絡(luò)執(zhí)行的是有導(dǎo)師訓(xùn)練,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對(duì)構(gòu)成的。所有這些向量對(duì),都應(yīng)該是來(lái)源于網(wǎng)絡(luò)即將模擬的系統(tǒng)的實(shí)際“運(yùn)行”結(jié)果。它們可以是從實(shí)際運(yùn)行系統(tǒng)中采集來(lái)的。在開始訓(xùn)練前,所有的權(quán)都應(yīng)該用一些不同的小隨機(jī)數(shù)進(jìn)行初始化?!靶‰S機(jī)數(shù)”用來(lái)保證網(wǎng)絡(luò)不會(huì)因權(quán)值過大而進(jìn)入飽和狀態(tài),從而導(dǎo)致訓(xùn)練失敗;“不同”用來(lái)保證網(wǎng)絡(luò)可以正常地學(xué)習(xí)。實(shí)際上,如果用相同的數(shù)去初始化權(quán)矩陣,則網(wǎng)絡(luò)無(wú)能力學(xué)習(xí)。訓(xùn)練算法與傳統(tǒng)的BP算法差不多。
二、卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)整體架構(gòu):卷積神經(jīng)網(wǎng)絡(luò)是一種多層的監(jiān)督學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),隱含層的卷積層和池采樣層是實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)特征提取功能的核心模塊。該網(wǎng)絡(luò)模型通過采用梯度下降法最小化損失函數(shù)對(duì)網(wǎng)絡(luò)中的權(quán)重參數(shù)逐層反向調(diào)節(jié),通過頻繁的迭代訓(xùn)練提高網(wǎng)絡(luò)的精度。卷積神經(jīng)網(wǎng)絡(luò)的低隱層是由卷積層和最大池采樣層交替組成,高層是全連接層對(duì)應(yīng)傳統(tǒng)多層感知器的隱含層和邏輯回歸分類器。第一個(gè)全連接層的輸入是由卷積層和子采樣層進(jìn)行特征提取得到的特征圖像。最后一層輸出層是一個(gè)分類器,可以采用邏輯回歸,Softmax回歸甚至是支持向量機(jī)對(duì)輸入圖像進(jìn)行分類。
卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)包括:卷積層,降采樣層,全鏈接層。每一層有多個(gè)特征圖,每個(gè)特征圖通過一種卷積濾波器提取輸入的一種特征,每個(gè)特征圖有多個(gè)神經(jīng)元。
卷積層:使用卷積層的原因是卷積運(yùn)算的一個(gè)重要特點(diǎn)是,通過卷積運(yùn)算,可以使原信號(hào)特征增強(qiáng),并且降低噪音。
降采樣層:使用降采樣的原因是,根據(jù)圖像局部相關(guān)性的原理,對(duì)圖像進(jìn)行子采樣可以減少計(jì)算量,同時(shí)保持圖像旋轉(zhuǎn)不變性。
采樣的目的主要是混淆特征的具體位置,因?yàn)槟硞€(gè)特征找出來(lái)后,它的具體位置已經(jīng)不重要了,我們只需要這個(gè)特征與其他的相對(duì)位置,比如一個(gè)“8”,當(dāng)我們得到了上面一個(gè)"o"時(shí),我們不需要知道它在圖像的具體位置,只需要知道它下面又是一個(gè)“o”我們就可以知道是一個(gè)'8'了,因?yàn)閳D片中"8"在圖片中偏左或者偏右都不影響我們認(rèn)識(shí)它,這種混淆具體位置的策略能對(duì)變形和扭曲的圖片進(jìn)行識(shí)別。
全連接層:采用softmax全連接,得到的激活值即卷積神經(jīng)網(wǎng)絡(luò)提取到的圖片特征。
卷積層的map個(gè)數(shù)是在網(wǎng)絡(luò)初始化指定的,而卷積層的map的大小是由卷積核和上一層輸入map的大小決定的,假設(shè)上一層的map大小是n*n、卷積核的大小是k*k,則該層的map大小是(n-k+1)*(n-k+1)。
采樣層是對(duì)上一層map的一個(gè)采樣處理,這里的采樣方式是對(duì)上一層map的相鄰小區(qū)域進(jìn)行聚合統(tǒng)計(jì),區(qū)域大小為scale*scale,有些實(shí)現(xiàn)是取小區(qū)域的最大值,而ToolBox里面的實(shí)現(xiàn)是采用2*2小區(qū)域的均值。注意,卷積的計(jì)算窗口是有重疊的,而采樣的計(jì)算窗口沒有重疊,ToolBox里面計(jì)算采樣也是用卷積(conv2(A,K,'valid'))來(lái)實(shí)現(xiàn)的,卷積核是2*2,每個(gè)元素都是1/4,去掉計(jì)算得到的卷積結(jié)果中有重疊的部分。
CNN的基本結(jié)構(gòu)包括兩種特殊的神經(jīng)元層,其一為卷積層,每個(gè)神經(jīng)元的輸入與前一層的局部相連,并提取該局部的特征;其二是池化層,用來(lái)求局部敏感性與二次特征提取的計(jì)算層。這種兩次特征提取結(jié)構(gòu)減少了特征分辨率,減少了需要優(yōu)化的參數(shù)數(shù)目。
CNN是部分連接網(wǎng)絡(luò),其最底層是特征提取層(卷積層),接著是池化層(Pooling),然后可以繼續(xù)增加卷積、池化或全連接層。用于模式分類的CNN,通常在最后層使用softmax.
一般情況下,CNN的結(jié)構(gòu)形式是:輸入層--> Conv層 --> Pooling層 --> (重復(fù)Conv、Pooling層) … --> FC(Full-connected)層 --> 輸出結(jié)果。通常輸入層大小一般為2的整數(shù)倍,如32,64,96,224,384等。通常卷積層使用較小的filter,如3*3,最大也就5*5。Pooling層用于對(duì)卷積結(jié)果進(jìn)行降低維度,例如選擇2*2的區(qū)域?qū)矸e層進(jìn)行降低維度,則選擇2*2區(qū)域的最大值作為輸出,這樣卷積層的維度就降為之前一半。
一般地,CNN的基本結(jié)構(gòu)包括兩層,其一為特征提取層,每個(gè)神經(jīng)元的輸入與前一層的局部接受域相連,并提取該局部的特征。一旦該局部特征被提取后,它與其它特征間的位置關(guān)系也隨之確定下來(lái);其二是特征映射層,網(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ù)。卷積神經(jīng)網(wǎng)絡(luò)中的每一個(gè)卷積層都緊跟著一個(gè)用來(lái)求局部平均與二次提取的計(jì)算層,這種特有的兩次特征提取結(jié)構(gòu)減小了特征分辨率。
對(duì)于圖像識(shí)別任務(wù),卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)一般如下圖所示。輸入層讀入經(jīng)過簡(jiǎn)單的規(guī)則化(統(tǒng)一大小)的圖像。每一層中的單元將前一層中的一組小的局部近鄰的單元作為輸入。這種局部連接觀點(diǎn)來(lái)源于早期的感知器,并且和Hubel、Wiesel從貓科動(dòng)物的視覺系統(tǒng)中發(fā)現(xiàn)的局部感知、方向選擇神經(jīng)元相一致。通過局部感知場(chǎng),神經(jīng)元能夠抽取一些基本的視覺特征,比如有向邊、結(jié)束點(diǎn)、邊角等等。這些特征然后被更高層的神經(jīng)元所使用。并且,適用于某個(gè)局部的基礎(chǔ)特征抽取器同樣也傾向于適用于整個(gè)圖像。通過利用這種特征,卷積神經(jīng)網(wǎng)絡(luò)利用一組分布于圖像各個(gè)不同位置但具有相同權(quán)值向量的單元,來(lái)獲取圖像的特征并構(gòu)成一幅特征圖(Feature Map)。在每個(gè)位置,來(lái)自不同特征圖的單元得到各自不同類型的特征。一個(gè)特征圖中的不同單元被限制為對(duì)輸入圖中的各個(gè)不同位置的局部數(shù)據(jù)進(jìn)行同樣的操作。這種操作等同于將輸入圖像對(duì)于一個(gè)小的核進(jìn)行卷積。一個(gè)卷積層中通常包含多個(gè)具有不同權(quán)值向量的特征圖,使得在同一個(gè)位置能夠獲得多種不同的特征。如下圖,第一個(gè)隱含層包含4個(gè)特征圖,每個(gè)特征圖由5*5的局部感知區(qū)域構(gòu)成。一旦一個(gè)特征被檢測(cè)到,只要其相對(duì)于其他特征的相對(duì)位置沒有改變,那么其在圖像中的絕對(duì)位置就變得不是特別重要。因此,每個(gè)卷積層后面跟隨著一個(gè)降采樣層。降采樣層進(jìn)行局部平均和降采樣的操作,降低特征圖的分辨率,同時(shí)降低了網(wǎng)絡(luò)輸出對(duì)于位移和變形的敏感程度。第二個(gè)隱含層進(jìn)行2*2的平均化降采樣的操作。后續(xù)的卷積層和降采樣層都交替分布連接,構(gòu)成一個(gè)“雙金字塔”結(jié)構(gòu):特征圖的數(shù)目逐漸增多,而且特征圖的分辨率逐漸降低。
由于所有權(quán)重都是通過反向傳播算法訓(xùn)練得到 ,卷積神經(jīng)網(wǎng)絡(luò)可以被看作自動(dòng)合成其自身的特征抽取器。
一般情況下卷積神經(jīng)網(wǎng)絡(luò)中,卷積層和降采樣層交替連接在一起,用于降低計(jì)算時(shí)間并逐步建立起更高的空間和數(shù)據(jù)結(jié)構(gòu)不變性,并通過比較小的降采樣系數(shù)使得這些特性得以維持。
CNN的分類模型與傳統(tǒng)模型的不同點(diǎn)在于其可以直接將一幅二維圖像輸入模型中,接著在輸出端即給出分類結(jié)果。其優(yōu)勢(shì)在于不需復(fù)雜的預(yù)處理,將特征抽取,模式分類完全放入一個(gè)黑匣子中,通過不斷的優(yōu)化來(lái)獲得網(wǎng)絡(luò)所需參數(shù),在輸出層給出所需分類,網(wǎng)絡(luò)核心就是網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計(jì)與網(wǎng)絡(luò)的求解。這種求解結(jié)構(gòu)比以往多種算法性能更高。
CNN是一個(gè)多層的神經(jīng)網(wǎng)絡(luò),每層由多個(gè)二維平面組成,而每個(gè)平面由多個(gè)獨(dú)立神經(jīng)元組成。網(wǎng)絡(luò)中包含簡(jiǎn)單元(S-元)和復(fù)雜元(C-元),S-元聚合在一起組成S-面,S-面聚合在一起組成S-層。C-元、C-面和C-層之間存在類似的關(guān)系。網(wǎng)絡(luò)的中間部分由S-層與C-層串接而成,輸入級(jí)只含一層,它直接接受二維視覺模式。樣本特征提取步驟已嵌入到卷積神經(jīng)網(wǎng)絡(luò)模型的互聯(lián)結(jié)構(gòu)中。
一般,S為特征提取層,每個(gè)神經(jīng)元的輸入與前一層的局部感受野相連接,并提取該局部的特征,一旦該局部特征被提取,它與其它特征之間的位置關(guān)系就被確定;C是特征映射層,網(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ù)數(shù)目,降低了網(wǎng)絡(luò)參數(shù)選擇的復(fù)雜度。CNN中的每一個(gè)特征提取層(S-層)都跟著一個(gè)用來(lái)求局部平均與二次提取的計(jì)算層(C-層),這種特有的兩次特征提取結(jié)構(gòu)使網(wǎng)絡(luò)在識(shí)別時(shí)對(duì)輸入樣本有較高的畸變?nèi)萑棠芰Α?/p>
CNN網(wǎng)絡(luò)除了輸入輸出層,還有中間的卷積層,抽樣層與全連接層,將原始圖像直接輸入到輸入層,原始圖像的大小決定了輸入向量的尺寸,神經(jīng)元提取圖像的局部特征,每個(gè)神經(jīng)元都與前一層的局部感受野相連,通過交替出現(xiàn)的抽樣層(S)與卷積層(C)和最后的全連接層,在輸出層給出網(wǎng)絡(luò)的輸出。在卷積層和抽樣層中有若干個(gè)特征圖,每一層有多個(gè)平面,每層中各平面的神經(jīng)元提取圖像中特定區(qū)域的局部特征,如邊緣特征,方向特征等,在訓(xùn)練時(shí)不斷修正S-層神經(jīng)元的權(quán)值。同一層面上的神經(jīng)元權(quán)值相同,這樣可以有相同程度的位移、旋轉(zhuǎn)不變性。由于權(quán)值共享,所以從一個(gè)平面到下個(gè)平面的映射可以看做是作卷積運(yùn)算,S-層可看作是模糊濾波器,起到二次特征提取的作用。隱層與隱層之間空間分辨率遞減,每層所含的平面數(shù)遞增,這樣可用于檢測(cè)更多的特征信息。
卷積層中,前一層的特征圖與一個(gè)可學(xué)習(xí)的核進(jìn)行卷積,卷積的結(jié)果經(jīng)過激活函數(shù)后的輸出形成這一層的神經(jīng)元,從而構(gòu)成該層特征圖。卷積層與抽樣層間隔出現(xiàn),卷積層每一個(gè)輸出的特征圖可能與前一層的幾個(gè)特征圖的卷積建立關(guān)系。每個(gè)特征圖可以有不同的卷積核。卷積層主要的任務(wù)就是從不同的角度來(lái)選擇前一層特征圖的各角度特征使其具有位移不變性。卷積的本質(zhì)就是對(duì)前一層的特征圖進(jìn)行處理,來(lái)得到這一層的特征圖。抽樣層主要作用是降低網(wǎng)絡(luò)的空間分辨率,通過降低圖像的空間分辨率來(lái)消除偏移和圖像的扭曲。
隱層的參數(shù)個(gè)數(shù)和隱層的神經(jīng)元個(gè)數(shù)無(wú)關(guān),只和濾波器的大小和濾波器種類的多少有關(guān)。隱層的神經(jīng)元個(gè)數(shù),它和原圖像,也就是輸入的大小(神經(jīng)元個(gè)數(shù))、濾波器的大小和濾波器在圖像中的滑動(dòng)步長(zhǎng)都有關(guān)。
三、卷積神經(jīng)網(wǎng)絡(luò)求解
CNN通過三個(gè)方法來(lái)實(shí)現(xiàn)識(shí)別圖像的位移、縮放和扭曲不變性,即局域感受野、權(quán)值共享和次抽樣。局域感受野指的是每一層網(wǎng)絡(luò)的神經(jīng)元只與上一層的一個(gè)小鄰域內(nèi)的神經(jīng)單元連接,通過局域感受野,每個(gè)神經(jīng)元可以提取初級(jí)的視覺特征,如方向線段,端點(diǎn)和角點(diǎn)等;權(quán)值共享使得CNN具有更少的參數(shù),需要相對(duì)少的訓(xùn)練數(shù)據(jù);次抽樣可以減少特征的分辨率,實(shí)現(xiàn)對(duì)位移、縮放和其它形式扭曲的不變性。卷積層之后通常用一個(gè)次抽樣層來(lái)減少計(jì)算時(shí)間、建立空間和結(jié)構(gòu)上的不變性。
構(gòu)造好網(wǎng)絡(luò)之后,需要對(duì)網(wǎng)絡(luò)進(jìn)行求解,如果像傳統(tǒng)神經(jīng)網(wǎng)絡(luò)一樣分配參數(shù),則每一個(gè)連接都會(huì)有未知參數(shù)。而CNN采用的是權(quán)值共享,這樣一來(lái)通過一幅特征圖上的神經(jīng)元共享同樣的權(quán)值就可以大大減少自由參數(shù),這可以用來(lái)檢測(cè)相同的特征在不同角度表示的效果。在網(wǎng)絡(luò)設(shè)計(jì)中通常都是抽樣層與卷積層交替出現(xiàn),全連接層的前一層通常為卷積層。
在CNN中,權(quán)值更新是基于反向傳播算法。
CNN在本質(zhì)上是一種輸入到輸出的映射,它能夠?qū)W習(xí)大量的輸入與輸出之間的映射關(guān)系,而不需要任何輸入和輸出之間的精確的數(shù)學(xué)表達(dá)式,只要用已知的模式對(duì)卷積網(wǎng)絡(luò)加以訓(xùn)練,網(wǎng)絡(luò)就具有輸入輸出對(duì)之間的映射能力。卷積網(wǎng)絡(luò)執(zhí)行的是監(jiān)督訓(xùn)練,所以其樣本集是由形如:輸入向量,理想輸出向量的向量對(duì)構(gòu)成的。所有這些向量對(duì),都應(yīng)該是來(lái)源于網(wǎng)絡(luò)即將模擬系統(tǒng)的實(shí)際“運(yùn)行”結(jié)構(gòu),它們可以是從實(shí)際運(yùn)行系統(tǒng)中采集來(lái)。在開始訓(xùn)練前,所有的權(quán)都應(yīng)該用一些不同的隨機(jī)數(shù)進(jìn)行初始化?!靶‰S機(jī)數(shù)”用來(lái)保證網(wǎng)絡(luò)不會(huì)因權(quán)值過大而進(jìn)入飽和狀態(tài),從而導(dǎo)致訓(xùn)練失敗;“不同”用來(lái)保證網(wǎng)絡(luò)可以正常地學(xué)習(xí)。實(shí)際上,如果用相同的數(shù)去初始化權(quán)矩陣,則網(wǎng)絡(luò)無(wú)學(xué)習(xí)能力。
訓(xùn)練算法主要包括四步,這四步被分為兩個(gè)階段:
第一階段,向前傳播階段:
(1)、從樣本集中取一個(gè)樣本,輸入網(wǎng)絡(luò);
(2)、計(jì)算相應(yīng)的實(shí)際輸出;在此階段,信息從輸入層經(jīng)過逐級(jí)的變換,傳送到輸出層。這個(gè)過程也是網(wǎng)絡(luò)在完成訓(xùn)練后正常執(zhí)行時(shí)執(zhí)行的過程。
第二階段,向后傳播階段:
(1)、計(jì)算實(shí)際輸出與相應(yīng)的理想輸出的差;
(2)、按極小化誤差的方法調(diào)整權(quán)矩陣。
這兩個(gè)階段的工作一般應(yīng)受到精度要求的控制。
網(wǎng)絡(luò)的訓(xùn)練過程如下:
(1)、選定訓(xùn)練組,從樣本集中分別隨機(jī)地尋求N個(gè)樣本作為訓(xùn)練組;
(2)、將各權(quán)值、閾值,置成小的接近于0的隨機(jī)值,并初始化精度控制參數(shù)和學(xué)習(xí)率;
(3)、從訓(xùn)練組中取一個(gè)輸入模式加到網(wǎng)絡(luò),并給出它的目標(biāo)輸出向量;
(4)、計(jì)算出中間層輸出向量,計(jì)算出網(wǎng)絡(luò)的實(shí)際輸出向量;
(5)、將輸出向量中的元素與目標(biāo)向量中的元素進(jìn)行比較,計(jì)算出輸出誤差;對(duì)于中間層的隱單元也需要計(jì)算出誤差;
(6)、依次計(jì)算出各權(quán)值的調(diào)整量和閾值的調(diào)整量;
(7)、調(diào)整權(quán)值和調(diào)整閾值;
(8)、當(dāng)經(jīng)歷M后,判斷指標(biāo)是否滿足精度要求,如果不滿足,則返回(3),繼續(xù)迭代;如果滿足就進(jìn)入下一步;
(9)、訓(xùn)練結(jié)束,將權(quán)值和閾值保存在文件中。這時(shí)可以認(rèn)為各個(gè)權(quán)值已經(jīng)達(dá)到穩(wěn)定,分類器已經(jīng)形成。再一次進(jìn)行訓(xùn)練,直接從文件導(dǎo)出權(quán)值和閾值進(jìn)行訓(xùn)練,不需要進(jìn)行初始化。
四、卷積神經(jīng)網(wǎng)絡(luò)LeNet-5結(jié)構(gòu)分析
CNN是一種帶有卷積結(jié)構(gòu)的深度神經(jīng)網(wǎng)絡(luò),通常至少有兩個(gè)非線性可訓(xùn)練的卷積層,兩個(gè)非線性的固定卷積層(又叫Pooling Layer或降采樣層)和一個(gè)全連接層,一共至少5個(gè)隱含層。
CNN的結(jié)構(gòu)受到著名的Hubel-Wiesel生物視覺模型的啟發(fā),尤其是模擬視覺皮層V1和V2層中Simple Cell和Complex Cell的行為。
LeNet-5手寫數(shù)字識(shí)別結(jié)構(gòu)(上圖)分析:
1. 輸入層:N個(gè)32*32的訓(xùn)練樣本
輸入圖像為32*32大小。這要比Mnist數(shù)據(jù)庫(kù)中最大的字母還大。這樣做的原因是希望潛在的明顯特征如筆畫斷點(diǎn)或角點(diǎn)能夠出現(xiàn)在最高層特征監(jiān)測(cè)子感受野的中心。
2. C1層:
輸入圖片大小: 32*32
卷積窗大小: 5*5
卷積窗種類: 6
輸出特征圖數(shù)量: 6
輸出特征圖大?。?28*28 (32-5+1)
神經(jīng)元數(shù)量: 4707 (28*28)*6)
連接數(shù): 122304 (28*28*5*5*6)+(28*28*6)
可訓(xùn)練參數(shù): 156 5*5*6+6
用6個(gè)5×5的過濾器進(jìn)行卷積,結(jié)果是在卷積層C1中,得到6張?zhí)卣鲌D,特征圖的每個(gè)神經(jīng)元與輸入圖片中的5×5的鄰域相連,即用5×5的卷積核去卷積輸入層,由卷積運(yùn)算可得C1層輸出的特征圖大小為(32-5+1)×(32-5+1)=28×28。
3. S2層:
輸入圖片大?。?(28*28)*6
卷積窗大?。?2*2
卷積窗種類: 6
輸出下采樣圖數(shù)量:6
輸出下采樣圖大小:14*14 (28/2)*(28/2)
神經(jīng)元數(shù)量: 1176 (14*14)*6
連接數(shù): 5880 2*2*14*14*6+14*14*6
可訓(xùn)練參數(shù): 12 1*6+6
卷積和子采樣過程:
(1)、卷積過程包括:用一個(gè)可訓(xùn)練的濾波器fx去卷積一個(gè)輸入的圖像(第一階段是輸入的圖像,后面的階段就是卷積特征map了),然后加一個(gè)偏置bx,得到卷積層Cx。
卷積運(yùn)算一個(gè)重要的特點(diǎn)就是,通過卷積運(yùn)算,可以使原信號(hào)特征增強(qiáng),并且降低噪音。
(2)、子采樣過程包括:每鄰域四個(gè)像素求和變?yōu)橐粋€(gè)像素,然后通過標(biāo)量Wx+1加權(quán),再增加偏置bx+1,然后通過一個(gè)sigmoid激活函數(shù),產(chǎn)生一個(gè)大概縮小四倍的特征映射圖Sx+1。
利用圖像局部相關(guān)性的原理,對(duì)圖像進(jìn)行子抽樣,可以減少數(shù)據(jù)處理量同時(shí)保留有用信息。
卷積之后進(jìn)行子抽樣的思想是受到動(dòng)物視覺系統(tǒng)中的“簡(jiǎn)單的”細(xì)胞后面跟著“復(fù)雜的”細(xì)胞的想法的啟發(fā)而產(chǎn)生的。
降采樣后,降采樣層S2的輸出特征圖大小為(28÷2)×(28÷2)=14×14。
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)。
從一個(gè)平面到下一個(gè)平面的映射可以看作是作卷積運(yùn)算,S-層可看作是模糊濾波器,起到二次特征提取的作用。隱層與隱層之間空間分辨率遞減,而每層所含的平面數(shù)遞增,這樣可用于檢測(cè)更多的特征信息。
4. C3層:
輸入圖片大小: (14*14)*6
卷積窗大?。?5*5
卷積窗種類: 16
輸出特征圖數(shù)量: 16
輸出特征圖大?。?10*10 (14-5+1)
神經(jīng)元數(shù)量: 1600 (10*10)*16)
連接數(shù): 151600 1516*10*10
可訓(xùn)練參數(shù): 1516 6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+1*(6*25+1)
C3層也是一個(gè)卷積層,它同樣通過5x5的卷積核去卷積S2層,然后得到的特征map就只有10x10個(gè)神經(jīng)元,但是它有16種不同的卷積核,所以就存在16個(gè)特征map了。這里需要注意的一點(diǎn)是:C3中的每個(gè)特征map是連接到S2中的所有6個(gè)或者幾個(gè)特征map的,表示本層的特征map是上一層提取到的特征map的不同組合(這個(gè)做法也并不是唯一的)。
C3中每個(gè)特征圖由S2中所有6個(gè)或者幾個(gè)特征map組合而成。為什么不把S2中的每個(gè)特征圖連接到每個(gè)C3的特征圖呢?原因有2點(diǎn)。第一,不完全的連接機(jī)制將連接的數(shù)量保持在合理的范圍內(nèi)。第二,也是最重要的,其破壞了網(wǎng)絡(luò)的對(duì)稱性。由于不同的特征圖有不同的輸入,所以迫使他們抽取不同的特征。
5. S4層:
輸入圖片大?。?(10*10)*16
卷積窗大?。?2*2
卷積窗種類: 16
輸出下采樣圖數(shù)量: 16
輸出下采樣圖大小: (5*5)*16
神經(jīng)元數(shù)量: 400 (5*5)*16
連接數(shù): 2000 (2*2*5*5*16)+(5*5*16)
可訓(xùn)練參數(shù): 32 (1+1)*16
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è)連接。
6. C5層:
輸入圖片大小: (5*5)*16
卷積窗大?。?5*5
卷積窗種類: 120
輸出特征圖數(shù)量: 120
輸出特征圖大小: 1*1 (5-5+1)
神經(jīng)元數(shù)量: 120 (1*120)
連接數(shù): 48120 5*5*16*120*1+120*1
可訓(xùn)練參數(shù): 48120 5*5*16*120+120
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)練連接。
7. F6層:
輸入圖片大?。?(1*1)*120
卷積窗大小: 1*1
卷積窗種類: 84
輸出特征圖數(shù)量: 1
輸出特征圖大?。?84
神經(jīng)元數(shù)量: 84
連接數(shù): 10164 120*84+84
可訓(xùn)練參數(shù): 10164 120*84+84
F6層有84個(gè)單元(之所以選這個(gè)數(shù)字的原因來(lái)自于輸出層的設(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)。
8. OUTPUT層:
輸入圖片大小: 1*84
輸出特征圖數(shù)量: 1*10
最后,輸出層由歐式徑向基函數(shù)(EuclideanRadial Basis Function)單元組成,每類一個(gè)單元,每個(gè)有84個(gè)輸入。換句話說(shuō),每個(gè)輸出RBF單元計(jì)算輸入向量和參數(shù)向量之間的歐式距離。輸入離參數(shù)向量越遠(yuǎn),RBF輸出的越大。一個(gè)RBF輸出可以被理解為衡量輸入模式和與RBF相關(guān)聯(lián)類的一個(gè)模型的匹配程度的懲罰項(xiàng)。用概率術(shù)語(yǔ)來(lái)說(shuō),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)的格式化圖片。這種表示對(duì)識(shí)別單獨(dú)的數(shù)字不是很有用,但是對(duì)識(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不同,他們?cè)谳斎肟臻g的較好限制的區(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)問題。
五、卷積神經(jīng)網(wǎng)絡(luò)注意事項(xiàng)
1. 數(shù)據(jù)集的大小和分塊
數(shù)據(jù)驅(qū)動(dòng)的模型一般依賴于數(shù)據(jù)集的大小,CNN和其它經(jīng)驗(yàn)?zāi)P鸵粯樱苓m用于任意大小的數(shù)據(jù)集,但用于訓(xùn)練的數(shù)據(jù)集應(yīng)該足夠大,能夠覆蓋問題域中所有已知可能出現(xiàn)的問題。設(shè)計(jì)CNN的時(shí)候,數(shù)據(jù)集中應(yīng)該包含三個(gè)子集:訓(xùn)練集、測(cè)試集、驗(yàn)證集。訓(xùn)練集應(yīng)該包含問題域中的所有數(shù)據(jù),并在訓(xùn)練階段用來(lái)調(diào)整網(wǎng)絡(luò)權(quán)值。測(cè)試集用來(lái)在訓(xùn)練過程中測(cè)試網(wǎng)絡(luò)對(duì)于訓(xùn)練集中未出現(xiàn)的數(shù)據(jù)的分類性能。根據(jù)網(wǎng)絡(luò)在測(cè)試集上的性能情況,網(wǎng)絡(luò)的結(jié)構(gòu)可能需要做出調(diào)整,或者增加訓(xùn)練循環(huán)的次數(shù)。驗(yàn)證集中的數(shù)據(jù)同樣應(yīng)該包含在測(cè)試集合訓(xùn)練集中沒有出現(xiàn)過的數(shù)據(jù),用于在確定網(wǎng)絡(luò)結(jié)構(gòu)后能夠更加好的測(cè)試和衡量網(wǎng)絡(luò)的性能。Looney等人建議,數(shù)據(jù)集中的65%用于訓(xùn)練,25%用于測(cè)試,剩余的10%用于驗(yàn)證。
2. 數(shù)據(jù)預(yù)處理
為了加速訓(xùn)練算法的收斂速度,一般都會(huì)采用一些數(shù)據(jù)預(yù)處理技術(shù),這其中包括:去除噪聲、輸入數(shù)據(jù)降維、刪除無(wú)關(guān)數(shù)據(jù)等。數(shù)據(jù)的平衡化在分類問題中異常重要,一般認(rèn)為訓(xùn)練集中的數(shù)據(jù)應(yīng)該相對(duì)于標(biāo)簽類別近似于平均分布,也就是每一個(gè)類別標(biāo)簽所對(duì)應(yīng)的數(shù)據(jù)量在訓(xùn)練集中是基本相等的,以避免網(wǎng)絡(luò)過于傾向于表現(xiàn)某些分類的特點(diǎn)。為了平衡數(shù)據(jù)集,應(yīng)該移除一些過度富余的分類中的數(shù)據(jù),并相應(yīng)的補(bǔ)充一些相對(duì)樣例稀少的分類中的數(shù)據(jù)。還有一個(gè)辦法就是復(fù)制一部分這些樣例稀少分類中的數(shù)據(jù),并在這些輸入數(shù)據(jù)中加入隨機(jī)噪聲。
3. 數(shù)據(jù)規(guī)則化
將數(shù)據(jù)規(guī)則化到一個(gè)統(tǒng)一的區(qū)間(如[0,1])中具有很重要的優(yōu)點(diǎn):防止數(shù)據(jù)中存在較大數(shù)值的數(shù)據(jù)造成數(shù)值較小的數(shù)據(jù)對(duì)于訓(xùn)練效果減弱甚至無(wú)效化。一個(gè)常用的方法是將輸入和輸出數(shù)據(jù)按比例調(diào)整到一個(gè)和激活函數(shù)(sigmoid函數(shù)等)相對(duì)應(yīng)的區(qū)間。
4. 網(wǎng)絡(luò)權(quán)值初始化
CNN的初始化主要是初始化卷積層和輸出層的卷積核(權(quán)重)和偏置。
網(wǎng)絡(luò)權(quán)值初始化就是將網(wǎng)絡(luò)中的所有連接權(quán)值(包括閾值)賦予一個(gè)初始值。如果初始權(quán)值向量處在誤差曲面的一個(gè)相對(duì)平緩的區(qū)域的時(shí)候,網(wǎng)絡(luò)訓(xùn)練的收斂速度可能會(huì)異常緩慢。一般情況下,網(wǎng)絡(luò)的連接權(quán)值和閾值被初始化在一個(gè)具有0均值的相對(duì)小的區(qū)間內(nèi)均勻分布,比如[-0.30, +0.30]這樣的區(qū)間內(nèi)。
5. BP算法的學(xué)習(xí)速率
如果學(xué)習(xí)速率n選取的比較大則會(huì)在訓(xùn)練過程中較大幅度的調(diào)整權(quán)值w,從而加快網(wǎng)絡(luò)訓(xùn)練的速度,但這會(huì)造成網(wǎng)絡(luò)在誤差曲面上搜索過程中頻繁抖動(dòng)且有可能使得訓(xùn)練過程不能收斂,而且可能越過一些接近優(yōu)化w。同樣,比較小的學(xué)習(xí)速率能夠穩(wěn)定的使得網(wǎng)絡(luò)逼近于全局最優(yōu)點(diǎn),但也有可能陷入一些局部最優(yōu)區(qū)域。對(duì)于不同的學(xué)習(xí)速率設(shè)定都有各自的優(yōu)缺點(diǎn),而且還有一種自適應(yīng)的學(xué)習(xí)速率方法,即n隨著訓(xùn)練算法的運(yùn)行過程而自行調(diào)整。
6. 收斂條件
有幾個(gè)條件可以作為停止訓(xùn)練的判定條件,訓(xùn)練誤差、誤差梯度和交叉驗(yàn)證。一般來(lái)說(shuō),訓(xùn)練集的誤差會(huì)隨著網(wǎng)絡(luò)訓(xùn)練的進(jìn)行而逐步降低。
7. 訓(xùn)練方式
訓(xùn)練樣例可以有兩種基本的方式提供給網(wǎng)絡(luò)訓(xùn)練使用,也可以是兩者的結(jié)合:逐個(gè)樣例訓(xùn)練(EET)、批量樣例訓(xùn)練(BT)。在EET中,先將第一個(gè)樣例提供給網(wǎng)絡(luò),然后開始應(yīng)用BP算法訓(xùn)練網(wǎng)絡(luò),直到訓(xùn)練誤差降低到一個(gè)可以接受的范圍,或者進(jìn)行了指定步驟的訓(xùn)練次數(shù)。然后再將第二個(gè)樣例提供給網(wǎng)絡(luò)訓(xùn)練。EET的優(yōu)點(diǎn)是相對(duì)于BT只需要很少的存儲(chǔ)空間,并且有更好的隨機(jī)搜索能力,防止訓(xùn)練過程陷入局部最小區(qū)域。EET的缺點(diǎn)是如果網(wǎng)絡(luò)接收到的第一個(gè)樣例就是劣質(zhì)(有可能是噪音數(shù)據(jù)或者特征不明顯)的數(shù)據(jù),可能使得網(wǎng)絡(luò)訓(xùn)練過程朝著全局誤差最小化的反方向進(jìn)行搜索。相對(duì)的,BT方法是在所有訓(xùn)練樣例都經(jīng)過網(wǎng)絡(luò)傳播后才更新一次權(quán)值,因此每一次學(xué)習(xí)周期就包含了所有的訓(xùn)練樣例數(shù)據(jù)。BT方法的缺點(diǎn)也很明顯,需要大量的存儲(chǔ)空間,而且相比EET更容易陷入局部最小區(qū)域。而隨機(jī)訓(xùn)練(ST)則是相對(duì)于EET和BT一種折衷的方法,ST和EET一樣也是一次只接受一個(gè)訓(xùn)練樣例,但只進(jìn)行一次BP算法并更新權(quán)值,然后接受下一個(gè)樣例重復(fù)同樣的步驟計(jì)算并更新權(quán)值,并且在接受訓(xùn)練集最后一個(gè)樣例后,重新回到第一個(gè)樣例進(jìn)行計(jì)算。ST和EET相比,保留了隨機(jī)搜索的能力,同時(shí)又避免了訓(xùn)練樣例中最開始幾個(gè)樣例如果出現(xiàn)劣質(zhì)數(shù)據(jù)對(duì)訓(xùn)練過程的過度不良影響。
以上整理的內(nèi)容主要摘自:
1. 《Gradient-Based Learning Applied to Document Recognition》,1998,Yann LeCun
2. 《卷積神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別上的應(yīng)用研究》,2012,碩論,浙江大學(xué)
3. 《卷積神經(jīng)網(wǎng)絡(luò)的研究與應(yīng)用》,2013,碩論,南京林業(yè)大學(xué)
4. 《卷積神經(jīng)網(wǎng)絡(luò)及其應(yīng)用》,2014,碩論,大連理工大學(xué)
5. 《基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)算法與應(yīng)用研究》,2014,碩論,浙江工商大學(xué)
評(píng)論