LeNet-5出自論文Gradient-Based Learning Applied to Document Recognition,是一種用于手寫體字元識别的非常高效的卷積神經網絡.
LeNet5 這個網絡雖然很小,但是它包含了深度學習的基本子產品:卷積層,池化層,全連結層。是其他深度學習模型的基礎.
LeNet-5共有7層,不包含輸入,每層都包含可訓練參數;每個層有多個Feature Map,每個FeatureMap 通過一種卷積濾波器提取輸入的一種特征,然後每個FeatureMap有多個神經元。
各層參數詳解:
1.Input 層-輸入層
首先是資料INPUT層,輸入圖像的尺寸同一歸一化為3232
注意:本層不算LeNet-5的網絡結構,傳統上,不将輸入層視為網絡層次結構之一。
2.C1層-卷積層
輸入圖檔: 3232
卷積核大小:55
卷積核種類(個數):6
輸出featuremap大小:2828(32-5+1)=28
神經元數量:28286
可訓練參數:(55+1)6(每個濾波器55=25個unit參數和一個bias參數,一共6個濾波器)
可連接配接數:(55+1)62828=122304
詳細說明:對輸入圖像進行第一次卷積運算(使用 6 個大小為 55 的卷積核),得到6個C1特征圖(6個大小為2828的 feature maps, 32-5+1=28)。我們再來看看需要多少個參數,卷積核的大小為55,總共就有6*(55+1)=156個參數,其中+1是表示一個核有一個bias。對于卷積層C1,C1内的每個像素都與輸入圖像中的55個像素和1個bias有連接配接,是以總共有1562828=122304個連接配接(connection)。有122304個連接配接,但是我們隻需要學習156個參數,主要是通過權值共享實作的。
卷積使得神經網絡可以共享權值,一方面減少了參數,另一方面可以學習圖像不同位置的局部特征
3.S2層-池化層(下采樣層)
輸入:2828
采樣區域:22
采樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。
采樣種類:6
輸出featureMap大小:1414(28/2)
神經元數量:14146
連接配接數:(22+1)61414
S2中每個特征圖的大小是C1中特征圖大小的1/4
詳細說明:第一次卷積之後緊接着就是池化運算,使用 22核 進行池化,于是得到了S2,6個1414的 特征圖(28/2=14)。S2這個pooling層是對C1中的22區域内的像素求和乘以一個權值系數再加上一個偏置,然後将這個結果再做一次映射。同時有5x14x14x6=5880個連接配接。
引入下采樣是因為圖像特征的相對位置比其精确位置更重要,而後來的網絡更多采用最大池化。
4.C3層-卷積層
輸入:S2中所有6個或者幾個特征map組合
卷積核大小: 55
卷積核種類: 16
輸出featureMap大小:1010(14-5+1)=10
C3中的每個特征map是連接配接到S2中的所有6個或者幾個特征map的,表示本層的特征map是上一層提取到的特征map的不同組合
存在的一個方式是:C3的前6個特征以S2中3個相鄰的特征圖子集為輸入。接下來6個特征圖以S2中4個相鄰特征圖子集為輸入。然後的3個以不相鄰的4個特征圖子集為輸入。最後一個将S2中所有特征圖為輸入。
則:可訓練參宿和:6*(355+1)+6*(455+1)+3*(455+1)+1*(655+1)=1516(
每個卷積核的通道數不一樣?前6個卷積核的通道數是3?)
連接配接數:10101516=151600
詳細說明:第一次池化之後是第二次卷積,第二次卷積的輸出是C3,16個10x10的特征圖,卷積核大小是55.我們知道S2有6個1414的特征圖,怎麼從6個特征圖得到16個特征圖了?這裡是通過對S2的特征圖特殊組合計算得到的16個特征圖。具體如下:
C3的前6個feature map(對應上圖第一個紅框的6列)與S2層相連的4個feature map相連接配接(上圖第二個紅框),後面6個feature map與S2層相連的4個feature map相連接配接(上圖第二個紅框),後面3個feature map與S2層部分不相連的4個feature map相連接配接,最後一個與S2層的所有feature map相連。卷積核大小依然為55,是以總共有6(355+1)+6*(455+1)+3*(455+1)+1*(655+1)=1516個參數。而圖像大小為1010,是以共有151600個連接配接。
C3與S2中前3個圖相連的卷積結構如下圖所示:
上圖對應的參數為355+1,一共進行6次卷積得到6個特征圖,是以有6(355+1)參數。為什麼采用這樣的組合?論文中說有兩個原因:1)減少參數,2)這種不對稱的組合連接配接的方式有利于提取更多組合特征。
5.S4層-池化層(下采樣層)
輸入:1010
采樣區域:22
采樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果通過sigmoid
采樣種類:16
輸出fatureMap大小:55(10/2)
神經元數量:5516=400
連接配接數:16(22+1)55=2000
S4中每個特征圖的大小是C3中特征圖大小的1/4
詳細說明:S4是pooling層,視窗大小仍然是22,共計16個feature map,C3層的16個10x10的圖分别進行以2x2為機關的池化得到16個5x5的特征圖。有5x5x5x16=2000個連接配接。連接配接的方式與S2層類似。
6.C5層-卷積層
輸入:S4層的全部16個單元特征map(與s4相連)
卷積核大小:55
卷積核種類:120
輸出featureMap大小:11(5-5+1)
可訓練參數/連接配接:120*(1655+1)=48120
詳細說明:C5層是一個卷積層。由于S4層的16個圖的大小為5x5,與卷積核的大小相同,是以卷積後形成的圖的大小為1x1.這裡形成120個卷積結果。每個都與上一層的16個圖相連。是以共有(5x5x16+1)x120=48120個參數,同樣有48120個連接配接。C5層的網絡結構如下:
7.F6層-全連接配接層
C5 120維向量
計算方式:計算輸入向量核權重向量之間的點積,再加上一個偏置,結果通過sigmoid函數輸出。
可訓練參數:84*(120+1)=10164
詳細說明:6層是全連接配接層。F6層有84個結點,對應于一個7x12的比特圖,-1表示白色,1表示黑色,這樣每個符号的比特圖的黑白色就對應于一個編碼。該層的訓練參數和連接配接數是(120+1)x 84=10164.ASCII編碼圖如下:
F6層的連接配接方式如下:
8.Output層-全連接配接層
Output層也是全連接配接層,共有10個節點,分别代表數字0和9,且如果節點i的值為0,則網絡識别的結果是數字i。采用的是徑向基函數(RBF)的網絡連接配接方式。假設x是上一層的輸入,y是RBF的輸出,則RBF輸出的計算方式是:
上式 w i j w_{ij} wij 的值由i的比特圖編碼确定,i從0到9,j取值從0到7*12-1。RBF輸出的值越接近于0,則越接近于i,即越接近于i的ASCII編碼圖,表示目前網絡輸入的識别結果是字元i。該層有84x10=840個參數和連接配接。
上圖是LeNet-5識别數字3的過程。
總結
- LeNet-5是一種用于手寫體字元識别的非常高效的卷積神經網絡
- 卷積神經網絡能夠很好的利用圖像的結構資訊
- 卷積層的參數較少,這也是由卷積層的主要特性即局部連接配接和共享權重所決定。