圖:卷積神經(jīng)網(wǎng)絡的概念示范:輸入圖像通過和三個可訓練的濾波器和可加偏置進行卷積,濾波過程如圖一,卷積后在C1層產(chǎn)生三個特征映射圖,然后特征映射圖中每組的四個像素再進行求和,加權值,加偏置,通過一個Sigmoid函數(shù)得到三個S2層的特征映射圖。這些映射圖再進過濾波得到C3層。這個層級結構再和S2一樣產(chǎn)生S4。最終,這些像素值被光柵化,并連接成一個向量輸入到傳統(tǒng)的神經(jīng)網(wǎng)絡,得到輸出。
每個層有多個Feature Map,每個Feature Map通過一種卷積濾波器提取輸入的一種特征,然后每個Feature Map有多個神經(jīng)元。
CNN一個牛逼的地方就在于通過感受野和權值共享減少了神經(jīng)網(wǎng)絡需要訓練的參數(shù)的個數(shù),所謂權值共享就是同一個Feature Map中神經(jīng)元權值共享,該Feature Map中的所有神經(jīng)元使用同一個權值。因此參數(shù)個數(shù)與神經(jīng)元的個數(shù)無關,只與卷積核的大小及Feature Map的個數(shù)相關。但是共有多少個連接個數(shù)就與神經(jīng)元的個數(shù)相關了,神經(jīng)元的個數(shù)也就是特征圖的大小。
下面以最經(jīng)典的LeNet-5例子來逐層分析各層的參數(shù)及連接個數(shù)。
C1層是一個卷積層,由6個特征圖Feature Map構成。特征圖中每個神經(jīng)元與輸入為5*5的鄰域相連。特征圖的大小為28*28,這樣能防止輸入的連接掉到邊界之外(32-5+1=28)。C1有156個可訓練參數(shù)(每個濾波器5*5=25個unit參數(shù)和一個bias參數(shù),一共6個濾波器,共(5*5+1)*6=156個參數(shù)),共156*(28*28)=122,304個連接。
S2層是一個下采樣層,有6個14*14的特征圖。特征圖中的每個單元與C1中相對應特征圖的2*2鄰域相連接。S2層每個單元的4個輸入相加,乘以一個可訓練參數(shù),再加上一個可訓練偏置。每個單元的2*2感受野并不重疊,因此S2中每個特征圖的大小是C1中特征圖大小的1/4(行和列各1/2)。S2層有12(6*(1+1)=12)個可訓練參數(shù)和5880(14*14*(2*2+1)*6=5880)個連接。
C3層也是一個卷積層,它同樣通過5x5的卷積核去卷積層S2,然后得到的特征map就只有10x10個神經(jīng)元,但是它有16種不同的卷積核,所以就存在16個特征map了。 C3中每個特征圖由S2中所有6個或者幾個特征map組合而成。為什么不把S2中的每個特征圖連接到每個C3的特征圖呢?原因有2點。第一,不完全的連接機制將連接的數(shù)量保持在合理的范圍內(nèi)。第二,也是最重要的,其破壞了網(wǎng)絡的對稱性。由于不同的特征圖有不同的輸入,所以迫使他們抽取不同的特征(希望是互補的)。
例如,存在的一個方式是:C3的前6個特征圖以S2中3個相鄰的特征圖子集為輸入。接下來6個特征圖以S2中4個相鄰特征圖子集為輸入。然后的3個以不相鄰的4個特征圖子集為輸入。最后一個將S2中所有特征圖為輸入。這樣C3層有1516(6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+(25*6+1)=1516)個可訓練參數(shù)和151600(10*10*1516=151600)個連接。
S4層是一個下采樣層,由16個5*5大小的特征圖構成。特征圖中的每個單元與C3中相應特征圖的2*2鄰域相連接,跟C1和S2之間的連接一樣。S4層有32個可訓練參數(shù)(每個特征圖1個因子和一個偏置16*(1+1)=32)和2000(16*(2*2+1)*5*5=2000)個連接。
C5層是一個卷積層,有120個特征圖。每個單元與S4層的全部16個單元的5*5鄰域相連。由于S4層特征圖的大小也為5*5(同濾波器一樣),故C5特征圖的大小為1*1(5-5+1=1):這構成了S4和C5之間的全連接。之所以仍將C5標示為卷積層而非全相聯(lián)層,是因為如果LeNet-5的輸入變大,而其他的保持不變,那么此時特征圖的維數(shù)就會比1*1大。C5層有48120(120*(16*5*5+1)=48120由于與全部16個單元相連,故只加一個偏置)個可訓練連接。
F6層有84個單元(之所以選這個數(shù)字的原因來自于輸出層的設計),與C5層全相連。有10164(84*(120*(1*1)+1)=10164)個可訓練參數(shù)。如同經(jīng)典神經(jīng)網(wǎng)絡,F(xiàn)6層計算輸入向量和權重向量之間的點積,再加上一個偏置。然后將其傳遞給sigmoid函數(shù)產(chǎn)生單元i的一個狀態(tài)。
最后,輸出層由歐式徑向基函數(shù)(Euclidean Radial Basis Function)單元組成,每類一個單元,每個有84個輸入。
圖:卷積和子采樣過程:卷積過程包括:用一個可訓練的濾波器fx去卷積一個輸入的圖像(第一階段是輸入的圖像,后面的階段就是卷積特征map了),然后加一個偏置bx,得到卷積層Cx。子采樣過程包括:每鄰域四個像素求和變?yōu)橐粋€像素,然后通過標量Wx+1加權,再增加偏置bx+1,然后通過一個sigmoid激活函數(shù),產(chǎn)生一個大概縮小四倍的特征映射圖Sx+1。