手寫數字識別問題(3)——詳解卷積神經網絡LeNet-5

由於卷積神經網絡結構較爲複雜,因此以示例詳解卷積神經網絡。
作爲手寫數字識別的巔峯之作, Yann LeCun等人提出了基於卷積神經網絡的一個文字識別系統 LeNet-5。(論文爲《Gradient-Based Learning Applied to Document Recognition》)該系統90年代就被用於銀行手寫數字的識別,且識別率極高。
論文鏈接如下:
百度學術鏈接:https://xueshu.baidu.com/usercenter/paper/show?paperid=80fd293244903d8233327d0e5ba6de62&site=xueshu_se

https://download.csdn.net/download/didi_ya/12314987
LeNet-5
下面詳細解釋一下上面這個用於文字識別的LeNet-5深層卷積網絡,依次深入瞭解一下卷積神經網絡。

1.輸入層(INPUT)32X32圖像

首先,輸入圖片有一個要求,包含數字的部分必須在32*32中間部分,在邊緣要留下一定區域的空白地帶。The values of the input pixels are normalized so that the background level (white) corresponds to a value of 0.1 and the foreground (black) corresponds to 1.175.
即將輸入像素的值進行標準化,使背景級別(白色)對應於0.1的值,而前景(黑色)對應於1.175。原因:所有像素相加平均值爲0.

2.卷積層(C1)6@28X28

該卷積層內有6個卷積平面,對應於6個55窗口(卷積核又叫filter或neuron),其運算過程如下圖所示。
在這裏插入圖片描述
即有B11=A00
K22+A01K21+A10K12+A11*K11

同理:
B12=A01K22+A02K21+A11K12+A12K11
B13=A02K22+A03K21+A12K12+A13K11
B14=A03K22+A04K21+A13K12+A14K11
。。。。。。
輸入的32X32圖像與5X5filter運算後,得到28X28矩陣(32-5+1=28)。
C1層中每個平面內的權值(5X5=25)是相同的,這稱爲權值共享

因此,INPUT——C1層共有5X5X6=150個權值(一個filter有25個權值),還有6個偏置,因此共有156個需要訓練的參數。(5X5+1)爲一個神經元(一個5X5filter)產生的連接數,每張平面有28X28個神經元(filter),由於有6張平面,因此共有(5X5+1)X28X28X6=122304個連接數。
在這裏插入圖片描述

3.採樣層(S2)(也稱池化層,Pooling)6@14X14

由4個點(2X2filter)採樣(也就是4個數的平均值),乘權值再加偏置,得到一個採樣層的值。一層中,所乘的權值和所加的偏置值都是相同的,因此一層中只有2個需要訓練的參數。因此共有2X6=12個需要訓練的參數。共有(2X2+1)X14X14X6=5880個連接數。
在這裏插入圖片描述

4.卷積層(C3)16@10X10

根據對前面C1層同樣的理解,且同樣利用5X5filter,我們很容易得到C3層的大小爲10x10(14-5+1). 只不過,C3層的變成了16個10x10網絡! 爲什麼呢?具體的組合規則,在 LeNet-5 系統中給出了下面的表格:
在這裏插入圖片描述
以C3層的第0個平面爲例,第0個平面與前面採樣層第0、1、2個平面上3個5X5filter相連,以此類推。
觀察上圖,前6個每個神經元對應於3個平面,6-14每個神經元對應於4個平面,15對應於6個特徵平面。爲什麼這樣採樣呢?
在這裏插入圖片描述
原因有兩個。首先,不完全連接方案將連接數保持在合理的範圍內。更重要的是,它迫使網絡的對稱性被打破。不同的特徵映射提取不同的(希望是互補的)特徵,因爲它們得到不同的輸入集。連接數:
(5x5+1)x3x10x10x6+(5x5+1)x4x10x10x9+(5x5+1)x6x10x10=156000
需要訓練的參數:(5x5x3+1)x6+(5x5x4+1)x9+(5x5x6+1)x1=1516個。
在這裏插入圖片描述

5.採樣層(S4)16@5X5

由4個點(2X2filter)採樣(也就是4個數的平均值),乘權值再加偏置,得到一個採樣層的值。一層中,所乘的權值和所加的偏置值都是相同的,因此一層中只有2個需要訓練的參數。因此共有2X16=32個需要訓練的參數。共有(2X2+1)X5X5X16=2000個連接數。
在這裏插入圖片描述

6.卷積層(C5)120

5x5filter與採樣層S4卷積運算得到1x1即C5一層只有一個元素。C5中每一個元素與S4中的16個平面全部連接,可以理解爲full connection。
需要訓練的參數:(5x5x16+1)x120=48120個。
在這裏插入圖片描述

7.連接層(F6)84

全連接,(120+1)x84=10164個訓練參數。
在這裏插入圖片描述

這裏的激活函數是:雙曲正切函數
在這裏插入圖片描述

8.輸出層 10

10個手寫數字
F6與輸出層之間是高斯連接,輸出層由歐幾里得RBF單元組成,每個類別一個,每個有84個輸入。

訓練

訓練算法與BP神經網絡類似,信號前向傳播,誤差反向傳播。注意,卷積中有很多權值共享。

一般的BP神經網絡,有一種頭重腳輕的感覺,越往輸入,神經元越多,權也越多,梯度遞減問題就變得尤爲嚴重;縱觀整個LeNet-5,越往輸出,權值越多,這樣的一大好處是,在誤差反向傳播時,不會過於分散,而使得梯度逐漸消失。
源代碼可參考:https://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi

由於卷積神經網絡已經應用十分廣泛,因此很少要求大家從頭開始寫一個卷積神經網絡。通常就是利用一個框架,實現卷積神經網絡。更重要的是,如何利用卷積神經網絡的原理和經驗,決定卷積神經網絡的結構,對哪些參數調優。其他的扔給框架就行了。

一般來說,卷積神經網絡對於圖像平移、扭曲等,有較強的魯棒性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章