1. 程式人生 > >LeNet-5模型

LeNet-5模型

卷積神經網路是一種特殊的多層神經網路,像其它的神經網路一樣,卷積神經網路也使用一種反向傳播演算法來進行訓練,不同之處在於網路的結構。卷積神經網路的網路連線具有區域性連線、引數共享的特點。區域性連線是相對於普通神經網路的全連線而言的,是指這一層的某個節點只與上一層的部分節點相連。引數共享是指一層中多個節點的連線共享相同的一組引數。

一個典型的神經網路的結構是全連線的,即某一層的某個節點與上一層的每個節點相連,且每個節點各自使用一套引數,這樣的結構就是經典的全連線結構。在全連線的網路中,假如k層有n個節點,k+1層有m個節點,則一共有n*m個連線;每個連線都有一個引數,外加每個k+1層節點有一個bias,則共有n*m + m個訓練引數,所以全連線的層的連線數、引數數量的數量級約為O(n^2)。全連線的網路的結構如下圖:

Figure1 全連線的網路

卷積神經網路採用區域性連線和引數共享的方式連線網路。對於一個卷積神經網路,假如該網路的第k層有n個節點,k+1層為卷積層且有m個節點,則k+1層的每個節點只與k層的部分節點相連,此處假設只與k層的i個節點相連(區域性連線);另外k+1層的每個節點的連線共享相同的引數、相同的bias(引數共享)。這樣該卷積神經網路的第k、k+1層間共有m*i個連線、i+1個引數。由於i小於n且為常數,所以卷積層的連線數、引數數量的數量級約為O(n),遠小於全連線的O(n^2)的數量級。卷積神經網路的部分連線的結構如下圖:

Figure2 部分連線且卷積層各節點的輸入節點有重疊的網路

 

Figure3 部分連線且卷積層各節點的輸入節點無重疊的網路

卷積神經網路在使用時往往是多層的,下面通過LeNet-5的網路連線來舉例說明一個卷積神經網路的結構和特點。LeNet-5是Yann LeCun在1998年設計的用於手寫數字識別的卷積神經網路,是早期卷積神經網路中最有代表性的實驗系統之一。

LenNet-5共有7層(不包括輸入層),每層都包含不同數量的訓練引數。各層的結構如Figure 4所示:

Figure4 LeNet-5的網路結構

LeNet-5中主要的有卷積層、下抽樣層、全連線層3中連線方式。全連線層在這裡就不贅述。

卷積層採用的都是5x5大小的卷積核,且卷積核每次滑動一個畫素,一個特徵圖譜使用同一個卷積核(即特徵圖譜內卷積核共享引數),卷積核的結構見Figure 5。每個上層節點的值乘以連線上的引數,把這些乘積及一個偏置引數相加得到一個和,把該和輸入啟用函式,啟用函式的輸出即是下一層節點的值。卷積核有5x5個連線引數加上1個偏置共26個訓練引數。這樣區域性連線、引數共享的方式,在數學上相當於上一層節點矩陣與連線引數矩陣做卷積得到的結果矩陣,即下一層的節點值,這是卷積神經網路名字的由來。Figure 6顯示了卷積神經網路連線於矩陣卷積的對應關係:

Figure5 一個卷積節點的連線方式

 

Figure6 卷積神經網路連線與矩陣卷積的對應關係

下抽樣層採用的是2x2的輸入域,即上一層的4個節點作為下一層1個節點的輸入,且輸入域不重疊,即每次滑動2個畫素,下抽樣節點的結構見Figure 6。每個下抽樣節點的4個輸入節點求和後取平均,均值乘以一個引數加上一個偏置引數作為啟用函式的輸入,啟用函式的輸出即是下一層節點的值。一個下抽樣節點只有2個訓練引數。

Figure7 一個下抽樣節點的連線方式

輸入層是32x32畫素的圖片,比資料集中最大的的字元(最大體積是20x20畫素的字元位於28x28畫素區域的中心)大很多。這樣做的原因是能使潛在的特徵比如邊緣的端點、拐角能夠出現在最高層次的特徵解碼器的接收域的中心。LeNet-5的最後一個卷積層(C3,見後面)的接收域的中心與輸入的32x32的影象的中心的20x20的區域相連。輸入的畫素值被標準化為背景色(白色)值為-0.1、前景色(黑色)值為1.175,這樣使得輸入的均值大致為0、方差大致為1,從而有利於加快訓練的速度。

在後面的描述中,卷積層用Cx標記,子抽樣層用Sx標記,全連線層用Fx標記,其中x表示該層的是LeNet的第x層。

C1層是卷積層,形成6個特徵圖譜。特徵圖譜中的每個單元與輸入層的一個5x5的相鄰區域相連,即卷積的輸入區域大小是5x5,每個特徵圖譜內參數共享,即每個特徵圖譜內只使用一個共同卷積核,卷積核有5x5個連線引數加上1個偏置共26個引數。卷積區域每次滑動一個畫素,這樣卷積層形成的特徵圖譜每個的大小是28x28。C1層共有26x6=156個訓練引數,有(5x5+1)x28x28x6=122304個連線。Figure 8 是C1層的連線結構。

Figure8 C1層的結構

S2層是一個下抽樣層。C1層的6個28x28的特徵圖譜分別進行以2x2為單位的下抽樣得到6個14x14的圖。每個特徵圖譜使用一個下抽樣核,每個下抽象核有兩個訓練引數,所以共有2x6=12個訓練引數,但是有5x14x14x6=5880個連線。Figure 9是S2層的網路連線的結構。

Figure9 S2層的網路結構

C3層是一個卷積層,卷積和和C1相同,不同的是C3的每個節點與S2中的多個圖相連。C3層有16個10x10的圖,每個圖與S2層的連線的方式如Table1 所示。C3與S2中前3個圖相連的卷積結構見Figure 10.這種不對稱的組合連線的方式有利於提取多種組合特徵。改成有(5x5x3+1)x6 + (5x5x4 + 1) x 3 + (5x5x4 +1)x6 + (5x5x6+1)x1 = 1516個訓練引數,共有1516x10x10=151600個連線。

Table 1 C3與S2的連線關係

 

Figure10 C3與S2中前3個圖相連的卷積結構

S4是一個下采樣層。C3層的16個10x10的圖分別進行以2x2為單位的下抽樣得到16個5x5的圖。這一層有2x16共32個訓練引數,5x5x5x16=2000個連線。連線的方式與S2層類似。

C5層是一個卷積層。由於S4層的16個圖的大小為5x5,與卷積核的大小相同,所以卷積後形成的圖的大小為1x1。這裡形成120個卷積結果。每個都與上一層的16個圖相連。所以共有(5x5x16+1)x120 = 48120個引數,同樣有48120個連線。C5層的網路結構見Figure 11。

Figure11 C5層的連線方式

F6層是全連線層。F6層有84個節點,對應於一個7x12的位元圖,-1表示白色,1表示黑色,這樣每個符號的位元圖的黑白色就對應於一個編碼。該層的訓練引數和連線數是(120 + 1)x84=10164. 位元圖的樣式見Figure 12,連線方式見Figure 13.

Figure12 編碼的位元圖

Figure13 F6層的連線方式

Output層也是全連線層,共有10個節點,分別代表數字0到9,且如果節點i的值為0,則網路識別的結果是數字i。採用的是徑向基函式(RBF)的網路連線方式。假設x是上一層的輸入,y是RBF的輸出,則RBF輸出的計算方式是:

的值由i的位元圖編碼確定。越接近於0,則越接近於,即越接近於i的位元圖編碼,表示當前網路輸入的識別結果是字元i。該層有84x10=840個設定的引數和連線。連線的方式見Figure 14.

Figure14 Output層的網路連線方式

以上是LeNet-5的卷積神經網路的完整結構,共約有60,840個訓練引數,340,908個連線。一個數字識別的效果如Figure 15所示。

Figure15 LeNet-5識別數字3的過程

通過對LeNet-5的網路結構的分析,可以直觀地瞭解一個卷積神經網路的構建方法,為分析、構建更復雜、更多層的卷積神經網路做準備。

參考文獻:

[1] Yoshua Bengio, DEEP LEARNING, Convolutional Networks, http://www.iro.umontreal.ca/~bengioy/dlbook/ .

[2] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to document recognition. Proceedings of the IEEE, november 1998.