C3層也是一個卷積層,它同樣通過5x5的卷積核去卷積S2層,然后得到的特征map就只有10x10個神經(jīng)元,但是它有16種不同的卷積核,所以就存在16個特征map了。這里需要注意的一點(diǎn)是:C3中的每個特征map是連接到S2中的所有6個或者幾個特征map的,表示本層的特征map是上一層提取到的特征map的不同組合(這個做法也并不是唯一的)。
C3中每個特征圖由S2中所有6個或者幾個特征map組合而成。為什么不把S2中的每個特征圖連接到每個C3的特征圖呢?原因有2點(diǎn)。第一,不完全的連接機(jī)制將連接的數(shù)量保持在合理的范圍內(nèi)。第二,也是最重要的,其破壞了網(wǎng)絡(luò)的對稱性。由于不同的特征圖有不同的輸入,所以迫使他們抽取不同的特征。
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層是一個下采樣層,由16個5*5大小的特征圖構(gòu)成。特征圖中的每個單元與C3中相應(yīng)特征圖的2*2鄰域相連接,跟C1和S2之間的連接一樣。S4層有32個可訓(xùn)練參數(shù)(每個特征圖1個因子和一個偏置)和2000個連接。
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層是一個卷積層,有120個特征圖。每個單元與S4層的全部16個單元的5*5鄰域相連。由于S4層特征圖的大小也為5*5(同濾波器一樣),故C5特征圖的大小為1*1,這構(gòu)成了S4和C5之間的全連接。之所以仍將C5標(biāo)示為卷積層而非全相聯(lián)層,是因?yàn)槿绻鸏eNet-5的輸入變大,而其他的保持不變,那么此時特征圖的維數(shù)就會比1*1大。C5層有48120個可訓(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個單元(之所以選這個數(shù)字的原因來自于輸出層的設(shè)計(jì)),與C5層全相連。有10164個可訓(xùn)練參數(shù)。如同經(jīng)典神經(jīng)網(wǎng)絡(luò),F(xiàn)6層計(jì)算輸入向量和權(quán)重向量之間的點(diǎn)積,再加上一個偏置。然后將其傳遞給sigmoid函數(shù)產(chǎn)生單元i的一個狀態(tài)。
8. OUTPUT層:
輸入圖片大小: 1*84
輸出特征圖數(shù)量: 1*10
最后,輸出層由歐式徑向基函數(shù)(EuclideanRadial Basis Function)單元組成,每類一個單元,每個有84個輸入。換句話說,每個輸出RBF單元計(jì)算輸入向量和參數(shù)向量之間的歐式距離。輸入離參數(shù)向量越遠(yuǎn),RBF輸出的越大。一個RBF輸出可以被理解為衡量輸入模式和與RBF相關(guān)聯(lián)類的一個模型的匹配程度的懲罰項(xiàng)。用概率術(shù)語來說,RBF輸出可以被理解為F6層配置空間的高斯分布的負(fù)log-likelihood。給定一個輸入模式,損失函數(shù)應(yīng)能使得F6的配置與RBF參數(shù)向量(即模式的期望分類)足夠接近。這些單元的參數(shù)是人工選取并保持固定的(至少初始時候如此)。這些參數(shù)向量的成分被設(shè)為-1或1。雖然這些參數(shù)可以以-1和1等概率的方式任選,或者構(gòu)成一個糾錯碼,但是被設(shè)計(jì)成一個相應(yīng)字符類的7*12大?。?4)的格式化圖片。這種表示對識別單獨(dú)的數(shù)字不是很有用,但是對識別可打印ASCII集中的字符串很有用。
使用這種分布編碼而非更常用的“1 of N”編碼用于產(chǎn)生輸出的另一個原因是,當(dāng)類別比較大的時候,非分布編碼的效果比較差。原因是大多數(shù)時間非分布編碼的輸出必須為0。這使得用sigmoid單元很難實(shí)現(xiàn)。另一個原因是分類器不僅用于識別字母,也用于拒絕非字母。使用分布編碼的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)檫@將會導(dǎo)致?lián)p失函數(shù)較慢的收斂和病態(tài)問題。
五、卷積神經(jīng)網(wǎng)絡(luò)注意事項(xiàng)
1. 數(shù)據(jù)集的大小和分塊
數(shù)據(jù)驅(qū)動的模型一般依賴于數(shù)據(jù)集的大小,CNN和其它經(jīng)驗(yàn)?zāi)P鸵粯?,能適用于任意大小的數(shù)據(jù)集,但用于訓(xùn)練的數(shù)據(jù)集應(yīng)該足夠大,能夠覆蓋問題域中所有已知可能出現(xiàn)的問題。設(shè)計(jì)CNN的時候,數(shù)據(jù)集中應(yīng)該包含三個子集:訓(xùn)練集、測試集、驗(yàn)證集。訓(xùn)練集應(yīng)該包含問題域中的所有數(shù)據(jù),并在訓(xùn)練階段用來調(diào)整網(wǎng)絡(luò)權(quán)值。測試集用來在訓(xùn)練過程中測試網(wǎng)絡(luò)對于訓(xùn)練集中未出現(xiàn)的數(shù)據(jù)的分類性能。根據(jù)網(wǎng)絡(luò)在測試集上的性能情況,網(wǎng)絡(luò)的結(jié)構(gòu)可能需要做出調(diào)整,或者增加訓(xùn)練循環(huán)的次數(shù)。驗(yàn)證集中的數(shù)據(jù)同樣應(yīng)該包含在測試集合訓(xùn)練集中沒有出現(xiàn)過的數(shù)據(jù),用于在確定網(wǎng)絡(luò)結(jié)構(gòu)后能夠更加好的測試和衡量網(wǎng)絡(luò)的性能。Looney等人建議,數(shù)據(jù)集中的65%用于訓(xùn)練,25%用于測試,剩余的10%用于驗(yàn)證。
2. 數(shù)據(jù)預(yù)處理
為了加速訓(xùn)練算法的收斂速度,一般都會采用一些數(shù)據(jù)預(yù)處理技術(shù),這其中包括:去除噪聲、輸入數(shù)據(jù)降維、刪除無關(guān)數(shù)據(jù)等。數(shù)據(jù)的平衡化在分類問題中異常重要,一般認(rèn)為訓(xùn)練集中的數(shù)據(jù)應(yīng)該相對于標(biāo)簽類別近似于平均分布,也就是每一個類別標(biāo)簽所對應(yīng)的數(shù)據(jù)量在訓(xùn)練集中是基本相等的,以避免網(wǎng)絡(luò)過于傾向于表現(xiàn)某些分類的特點(diǎn)。為了平衡數(shù)據(jù)集,應(yīng)該移除一些過度富余的分類中的數(shù)據(jù),并相應(yīng)的補(bǔ)充一些相對樣例稀少的分類中的數(shù)據(jù)。還有一個辦法就是復(fù)制一部分這些樣例稀少分類中的數(shù)據(jù),并在這些輸入數(shù)據(jù)中加入隨機(jī)噪聲。
3. 數(shù)據(jù)規(guī)則化
將數(shù)據(jù)規(guī)則化到一個統(tǒng)一的區(qū)間(如[0,1])中具有很重要的優(yōu)點(diǎn):防止數(shù)據(jù)中存在較大數(shù)值的數(shù)據(jù)造成數(shù)值較小的數(shù)據(jù)對于訓(xùn)練效果減弱甚至無效化。一個常用的方法是將輸入和輸出數(shù)據(jù)按比例調(diào)整到一個和激活函數(shù)(sigmoid函數(shù)等)相對應(yīng)的區(qū)間。
4. 網(wǎng)絡(luò)權(quán)值初始化
CNN的初始化主要是初始化卷積層和輸出層的卷積核(權(quán)重)和偏置。
網(wǎng)絡(luò)權(quán)值初始化就是將網(wǎng)絡(luò)中的所有連接權(quán)值(包括閾值)賦予一個初始值。如果初始權(quán)值向量處在誤差曲面的一個相對平緩的區(qū)域的時候,網(wǎng)絡(luò)訓(xùn)練的收斂速度可能會異常緩慢。一般情況下,網(wǎng)絡(luò)的連接權(quán)值和閾值被初始化在一個具有0均值的相對小的區(qū)間內(nèi)均勻分布,比如[-0.30, +0.30]這樣的區(qū)間內(nèi)。
5. BP算法的學(xué)習(xí)速率
如果學(xué)習(xí)速率n選取的比較大則會在訓(xùn)練過程中較大幅度的調(diào)整權(quán)值w,從而加快網(wǎng)絡(luò)訓(xùn)練的速度,但這會造成網(wǎng)絡(luò)在誤差曲面上搜索過程中頻繁抖動且有可能使得訓(xùn)練過程不能收斂,而且可能越過一些接近優(yōu)化w。同樣,比較小的學(xué)習(xí)速率能夠穩(wěn)定的使得網(wǎng)絡(luò)逼近于全局最優(yōu)點(diǎn),但也有可能陷入一些局部最優(yōu)區(qū)域。對于不同的學(xué)習(xí)速率設(shè)定都有各自的優(yōu)缺點(diǎn),而且還有一種自適應(yīng)的學(xué)習(xí)速率方法,即n隨著訓(xùn)練算法的運(yùn)行過程而自行調(diào)整。
6. 收斂條件
有幾個條件可以作為停止訓(xùn)練的判定條件,訓(xùn)練誤差、誤差梯度和交叉驗(yàn)證。一般來說,訓(xùn)練集的誤差會隨著網(wǎng)絡(luò)訓(xùn)練的進(jìn)行而逐步降低。
7. 訓(xùn)練方式
訓(xùn)練樣例可以有兩種基本的方式提供給網(wǎng)絡(luò)訓(xùn)練使用,也可以是兩者的結(jié)合:逐個樣例訓(xùn)練(EET)、批量樣例訓(xùn)練(BT)。在EET中,先將第一個樣例提供給網(wǎng)絡(luò),然后開始應(yīng)用BP算法訓(xùn)練網(wǎng)絡(luò),直到訓(xùn)練誤差降低到一個可以接受的范圍,或者進(jìn)行了指定步驟的訓(xùn)練次數(shù)。然后再將第二個樣例提供給網(wǎng)絡(luò)訓(xùn)練。EET的優(yōu)點(diǎn)是相對于BT只需要很少的存儲空間,并且有更好的隨機(jī)搜索能力,防止訓(xùn)練過程陷入局部最小區(qū)域。EET的缺點(diǎn)是如果網(wǎng)絡(luò)接收到的第一個樣例就是劣質(zhì)(有可能是噪音數(shù)據(jù)或者特征不明顯)的數(shù)據(jù),可能使得網(wǎng)絡(luò)訓(xùn)練過程朝著全局誤差最小化的反方向進(jìn)行搜索。相對的,BT方法是在所有訓(xùn)練樣例都經(jīng)過網(wǎng)絡(luò)傳播后才更新一次權(quán)值,因此每一次學(xué)習(xí)周期就包含了所有的訓(xùn)練樣例數(shù)據(jù)。BT方法的缺點(diǎn)也很明顯,需要大量的存儲空間,而且相比EET更容易陷入局部最小區(qū)域。而隨機(jī)訓(xùn)練(ST)則是相對于EET和BT一種折衷的方法,ST和EET一樣也是一次只接受一個訓(xùn)練樣例,但只進(jìn)行一次BP算法并更新權(quán)值,然后接受下一個樣例重復(fù)同樣的步驟計(jì)算并更新權(quán)值,并且在接受訓(xùn)練集最后一個樣例后,重新回到第一個樣例進(jìn)行計(jì)算。ST和EET相比,保留了隨機(jī)搜索的能力,同時又避免了訓(xùn)練樣例中最開始幾個樣例如果出現(xiàn)劣質(zhì)數(shù)據(jù)對訓(xùn)練過程的過度不良影響。
以上整理的內(nèi)容主要摘自:
1. 《Gradient-Based Learning Applied to Document Recognition》,1998,Yann LeCun
2. 《卷積神經(jīng)網(wǎng)絡(luò)在圖像識別上的應(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é)
電子發(fā)燒友App











評論