本文介紹以下幾個CNN經(jīng)典模型:Lenet(1986年)、Alexnet(2012年)、GoogleNet(2014年)、VGG(2014年)、Deep Residual Learning(2015年)
1.LeNet-5
Lenet-5是一個經(jīng)典的CNN網(wǎng)絡(luò)模型,幾乎所有講CNN的資料都會提到該模型;該模型是為了識別手寫字體和計算機(jī)打印字符而設(shè)計的,而且該模型確實在手寫體識別領(lǐng)域非常成功,曾被廣泛應(yīng)用于美國銀行支票手寫體識別。具體的論文和例子可以參考:http://yann.lecun.com/exdb/lenet/index.html
1)LeNet-5結(jié)構(gòu)
1. 輸入層:N個32*32的訓(xùn)練樣本
輸入圖像為32*32大小。這要比Mnist數(shù)據(jù)庫中最大的字母還大。這樣做的原因是希望潛在的明顯特征如筆畫斷點或角點能夠出現(xiàn)在最高層特征監(jiān)測子感受野的中心。
2. C1層:
輸入圖片大?。?nbsp; 32*32
卷積窗大?。?nbsp; 5*5
卷積窗種類: 6
輸出特征圖數(shù)量: 6
輸出特征圖大?。?nbsp; 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個5×5的過濾器進(jìn)行卷積,結(jié)果是在卷積層C1中,得到6張?zhí)卣鲌D,特征圖的每個神經(jīng)元與輸入圖片中的5×5的鄰域相連,即用5×5的卷積核去卷積輸入層,由卷積運算可得C1層輸出的特征圖大小為(32-5+1)×(32-5+1)=28×28。
3. S2層:
輸入圖片大?。?nbsp; (28*28)*6
卷積窗大?。?nbsp; 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
卷積和子采樣過程:
(1)、卷積過程包括:用一個可訓(xùn)練的濾波器fx去卷積一個輸入的圖像(第一階段是輸入的圖像,后面的階段就是卷積特征map了),然后加一個偏置bx,得到卷積層Cx。
卷積運算一個重要的特點就是,通過卷積運算,可以使原信號特征增強(qiáng),并且降低噪音。
(2)、子采樣過程包括:每鄰域四個像素求和變?yōu)橐粋€像素,然后通過標(biāo)量Wx+1加權(quán),再增加偏置bx+1,然后通過一個sigmoid激活函數(shù),產(chǎn)生一個大概縮小四倍的特征映射圖Sx+1。
利用圖像局部相關(guān)性的原理,對圖像進(jìn)行子抽樣,可以減少數(shù)據(jù)處理量同時保留有用信息。
卷積之后進(jìn)行子抽樣的思想是受到動物視覺系統(tǒng)中的“簡單的”細(xì)胞后面跟著“復(fù)雜的”細(xì)胞的想法的啟發(fā)而產(chǎn)生的。
降采樣后,降采樣層S2的輸出特征圖大小為(28÷2)×(28÷2)=14×14。
S2層每個單元的4個輸入相加,乘以一個可訓(xùn)練參數(shù),再加上一個可訓(xùn)練偏置。結(jié)果通過sigmoid函數(shù)計算??捎?xùn)練系數(shù)和偏置控制著sigmoid函數(shù)的非線性程度。如果系數(shù)比較小,那么運算近似于線性運算,下采樣相當(dāng)于模糊圖像。如果系數(shù)比較大,根據(jù)偏置的大小下采樣可以被看成是有噪聲的“或”運算或者有噪聲的“與”運算。每個單元的2*2感受野并不重疊,因此S2中每個特征圖的大小是C1中特征圖大小的1/4(行和列各1/2)。
從一個平面到下一個平面的映射可以看作是作卷積運算,S-層可看作是模糊濾波器,起到二次特征提取的作用。隱層與隱層之間空間分辨率遞減,而每層所含的平面數(shù)遞增,這樣可用于檢測更多的特征信息。
4. C3層:
輸入圖片大?。? (14*14)*6
卷積窗大小: 5*5
卷積窗種類: 16
輸出特征圖數(shù)量: 16
輸出特征圖大?。?nbsp; 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層也是一個卷積層,它同樣通過5x5的卷積核去卷積S2層,然后得到的特征map就只有10x10個神經(jīng)元,但是它有16種不同的卷積核,所以就存在16個特征map了。這里需要注意的一點是:C3中的每個特征map是連接到S2中的所有6個或者幾個特征map的,表示本層的特征map是上一層提取到的特征map的不同組合(這個做法也并不是唯一的)。
C3中每個特征圖由S2中所有6個或者幾個特征map組合而成。為什么不把S2中的每個特征圖連接到每個C3的特征圖呢?原因有2點。第一,不完全的連接機(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
輸出特征圖大?。?nbsp; 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)層,是因為如果LeNet-5的輸入變大,而其他的保持不變,那么此時特征圖的維數(shù)就會比1*1大。C5層有48120個可訓(xùn)練連接。
7. F6層:
輸入圖片大?。? (1*1)*120
卷積窗大?。?nbsp; 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è)計),與C5層全相連。有10164個可訓(xùn)練參數(shù)。如同經(jīng)典神經(jīng)網(wǎng)絡(luò),F(xiàn)6層計算輸入向量和權(quán)重向量之間的點積,再加上一個偏置。然后將其傳遞給sigmoid函數(shù)產(chǎn)生單元i的一個狀態(tài)。
8. OUTPUT層:
輸入圖片大?。?nbsp; 1*84
輸出特征圖數(shù)量: 1*10
最后,輸出層由歐式徑向基函數(shù)(EuclideanRadial Basis Function)單元組成,每類一個單元,每個有84個輸入。換句話說,每個輸出RBF單元計算輸入向量和參數(shù)向量之間的歐式距離。輸入離參數(shù)向量越遠(yuǎn),RBF輸出的越大。一個RBF輸出可以被理解為衡量輸入模式和與RBF相關(guān)聯(lián)類的一個模型的匹配程度的懲罰項。用概率術(shù)語來說,RBF輸出可以被理解為F6層配置空間的高斯分布的負(fù)log-likelihood。給定一個輸入模式,損失函數(shù)應(yīng)能使得F6的配置與RBF參數(shù)向量(即模式的期望分類)足夠接近。這些單元的參數(shù)是人工選取并保持固定的(至少初始時候如此)。這些參數(shù)向量的成分被設(shè)為-1或1。雖然這些參數(shù)可以以-1和1等概率的方式任選,或者構(gòu)成一個糾錯碼,但是被設(shè)計成一個相應(yīng)字符類的7*12大小(即84)的格式化圖片。這種表示對識別單獨的數(shù)字不是很有用,但是對識別可打印ASCII集中的字符串很有用。
使用這種分布編碼而非更常用的“1 of N”編碼用于產(chǎn)生輸出的另一個原因是,當(dāng)類別比較大的時候,非分布編碼的效果比較差。原因是大多數(shù)時間非分布編碼的輸出必須為0。這使得用sigmoid單元很難實現(xiàn)。另一個原因是分類器不僅用于識別字母,也用于拒絕非字母。使用分布編碼的RBF更適合該目標(biāo)。因為與sigmoid不同,他們在輸入空間的較好限制的區(qū)域內(nèi)興奮,而非典型模式更容易落到外邊。
RBF參數(shù)向量起著F6層目標(biāo)向量的角色。需要指出這些向量的成分是+1或-1,這正好在F6 sigmoid的范圍內(nèi),因此可以防止sigmoid函數(shù)飽和。實際上,+1和-1是sigmoid函數(shù)的最大彎曲的點處。這使得F6單元運行在最大非線性范圍內(nèi)。必須避免sigmoid函數(shù)的飽和,因為這將會導(dǎo)致?lián)p失函數(shù)較慢的收斂和病態(tài)問題。
聯(lián)系客服