卷積神經網絡鼻祖LeNet網絡分析

使用頭條APP,點擊知雲學堂“頭像”,回覆關鍵字“學習”,大家一起學習人工智能

1998年,被成為是現代卷積神經網絡的鼻祖LeNet,被Yann LeCun正式提出。下圖是廣為流傳LeNet的網絡結構,它可以用麻雀雖小,五臟俱全來形容,其中卷積層、池化層、全連接層,這些都是現代卷積神經網絡的基本組件。

卷積神經網絡鼻祖LeNet網絡分析

總體來說LeNet是從輸入INPUT->C1卷積層->S2池化層->C3卷積層->S4池化層->C5卷積層->F6全連接層->輸出OUTPUT,如下圖所示。

卷積神經網絡鼻祖LeNet網絡分析


1 LeNet輸入

LeNet的輸入圖像是32*32的大小,這要比mnist數據集中字母28*28要大。也就是說,要對mnist的數據進行兩圈值為零的像素填充。像素填充的目的是為了讓圖像邊緣的區域,也能出現在卷積過程感受野的中心。

卷積神經網絡鼻祖LeNet網絡分析


2 LeNet的C1卷積層

C1層是LeNet的第一個卷積層,它的輸入是32*32大小的圖像,然後經過卷積過程,輸出為6個通道28*28大小的特徵圖像。其中卷積核的大小為5*5,在LeNet中都使用了5*5大小的卷積核。

卷積神經網絡鼻祖LeNet網絡分析

卷積過程的滑動步長為1,所以輸出特徵圖像的計算方式為:32-5+1=28,因此輸出特徵圖的大小為28*28。

因為輸入為1通道的圖像,然後用了6個卷積核,所以輸出為6通道的特徵圖像。C1層的參數計算方式為(5*5+1)*6=156,其中每個卷積核為5*5,還帶有一個偏置項。

卷積神經網絡鼻祖LeNet網絡分析


3 LeNet的S2池化層

LeNet的第2層即S2是個池化層,在之前的文章中也為大家介紹過池化(pooling)過程,它是在做下采樣操作,目的是在保留特徵圖像主要信息的同時,降低卷積神經網絡的參數數量。

卷積神經網絡鼻祖LeNet網絡分析

常見的池化有兩種:

(1)Max-Pooling,選擇Pooling窗口中的最大值作為採樣值;

(2)Mean-Pooling, 將Pooling窗口中的所有值相加取平均,以平均值作為採樣值。

在S2中的池化,選擇的是特徵圖像2*2大小的窗口區域進行池化,因此特徵圖像的大小縮減了一倍,即從28*28的大小,變為14*14的大小。池化過程不影響特徵圖通道的數目,S2層池化過程如下圖所示。

卷積神經網絡鼻祖LeNet網絡分析


4 卷積與池化的重複

在卷積神經網絡中,卷積與池化可以重複多次,可以一層卷積帶有一層的池化如LeNet中的

C1->S2,C3->S4,也可以多層卷積後再跟一個池化層。

在這裡大家可以去思考一個問題,也就是怎樣計算C3層的參數數目(提示,可以結合C1層的計算方式和之前文章中介紹的卷積知識去推算)。

在這裡還需要注意的是C5層,它是一個比較特殊的卷積層,它的輸入是16通道5*5大小的特徵圖像,而輸出是一個120的向量。C5層可以有兩種實現,第一種是使用5*5大小的卷積核進行卷積,第二種是將16通道5*5大小的特徵圖像拉平,然後再做全連接。

卷積神經網絡鼻祖LeNet網絡分析


5 全連接

在實際LeNet的編碼實現中,F6層和Output層都可以用全連接來實現。其中F6是120->84的全連接,而Output是84->10的全連接,最後的10對應10種類別。

F6層參數數量的計算為(120+1)*84=10164,這個跟多層感知器全連接參數的計算方式是一樣的,每個全連接都帶有一個偏置項。

後記

LeNet是學習卷積神經網絡的一個非常好的示例,通過學習LeNet可以對卷積神經網絡設計有基礎的認識,比如卷積核大小,通道數目,全連接結構等等,為以後深入學習卷積神經網絡設計打下比較好的基礎。另外,在現在的卷積神經網絡中經常會使用ReLU作為激活函數,並採用批歸一化BN,DropOut等處理,在後續的文章還會為大家帶來更多的分享,歡迎大家關注我們。


分享到:


相關文章: