四、卷積神經(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生物視覺(jué)模型的啟發(fā),尤其是模擬視覺(jué)皮層V1和V2層中Simple Cell和Complex Cell的行為。
LeNet-5手寫(xiě)數(shù)字識(shí)別結(jié)構(gòu)(上圖)分析:
1. 輸入層:N個(gè)32*32的訓(xùn)練樣本
輸入圖像為32*32大小。這要比Mnist數(shù)據(jù)庫(kù)中最大的字母還大。這樣做的原因是希望潛在的明顯特征如筆畫(huà)斷點(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的過(guò)濾器進(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
輸出下采樣圖大?。?4*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
卷積和子采樣過(guò)程:
(1)、卷積過(guò)程包括:用一個(gè)可訓(xùn)練的濾波器fx去卷積一個(gè)輸入的圖像(第一階段是輸入的圖像,后面的階段就是卷積特征map了),然后加一個(gè)偏置bx,得到卷積層Cx。
卷積運(yùn)算一個(gè)重要的特點(diǎn)就是,通過(guò)卷積運(yùn)算,可以使原信號(hào)特征增強(qiáng),并且降低噪音。
(2)、子采樣過(guò)程包括:每鄰域四個(gè)像素求和變?yōu)橐粋€(gè)像素,然后通過(guò)標(biāo)量Wx+1加權(quán),再增加偏置bx+1,然后通過(guò)一個(gè)sigmoid激活函數(shù),產(chǎn)生一個(gè)大概縮小四倍的特征映射圖Sx+1。
利用圖像局部相關(guān)性的原理,對(duì)圖像進(jìn)行子抽樣,可以減少數(shù)據(jù)處理量同時(shí)保留有用信息。
卷積之后進(jìn)行子抽樣的思想是受到動(dòng)物視覺(jué)系統(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é)果通過(guò)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è)卷積層,它同樣通過(guò)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大小(即84)的格式化圖片。這種表示對(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)問(wèn)題。
評(píng)論