卷積神經網絡( Convolutional Neural Network, CNN):
是一種常見的深度學習架構,受生物自然視覺認知機制(動物視覺皮層細胞負責檢測光學信號)啟發而來,是一種特殊的多層前饋神經網絡。它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。
一般神經網絡VS卷積神經網絡:
相同點:卷積神經網絡也使用一種反向傳播算法(BP)來進行訓練
不同點:網絡結構不同。卷積神經網絡的網絡連接具有局部連接、參數共享的特點。
局部連接:是相對於普通神經網絡的全連接而言的,是指這一層的某個節點只與上一層的部分節點相連。
參數共享:是指一層中多個節點的連接共享相同的一組參數。
全連接:連接個數nm 局部連接:連接個數im
參數不共享:參數個數n*m+m 參數共享:參數個數i+1
卷積神經網絡的主要組成:
卷積層(Convolutional layer),卷積運算的目的是提取輸入的不同特徵,第一層卷積層可能只能提取一些低級的特徵如邊緣、線條和角等層級,更多層的網絡能從低級特徵中迭代提取更複雜的特徵。
池化層(Pooling),它實際上一種形式的向下採樣。有多種不同形式的非線性池化函數,而其中最大池化(Max pooling)和平均採樣是最為常見的
全連接層(Full connection), 與普通神經網絡一樣的連接方式,一般都在最後幾層
pooling層的作用:
Pooling層相當於把一張解析度較高的圖片轉化為解析度較低的圖片;
pooling層可進一步縮小最後全連接層中節點的個數,從而達到減少整個神經網絡中參數的目的。
LeNet-5卷積神經網絡模型
LeNet-5:是Yann LeCun在1998年設計的用於手寫數字識別的卷積神經網絡,當年美國大多數銀行就是用它來識別支票上面的手寫數字的,它是早期卷積神經網絡中最有代表性的實驗系統之一。
LenNet-5共有7層(不包括輸入層),每層都包含不同數量的訓練參數,如下圖所示。
LeNet-5中主要有2個卷積層、2個下抽樣層(池化層)、3個全連接層3種連接方式
卷積層
卷積層採用的都是5x5大小的卷積核/過濾器(kernel/filter),且卷積核每次滑動一個像素(stride=1),一個特徵圖譜使用同一個卷積核.
每個上層節點的值乘以連接上的參數,把這些乘積及一個偏置參數相加得到一個和,把該和輸入激活函數,激活函數的輸出即是下一層節點的值
LeNet-5的下採樣層(pooling層)
下抽樣層採用的是2x2的輸入域,即上一層的4個節點作為下一層1個節點的輸入,且輸入域不重疊,即每次滑動2個像素,下抽樣節點的結構如下:
每個下抽樣節點的4個輸入節點求和後取平均(平均池化),均值乘以一個參數加上一個偏置參數作為激活函數的輸入,激活函數的輸出即是下一層節點的值。
卷積後輸出層矩陣寬度的計算:
Outlength=
(inlength-fileterlength+2*padding)/stridelength+1
Outlength:輸出層矩陣的寬度
Inlength:輸入層矩陣的寬度
Padding:補0的圈數(非必要)
Stridelength:步長,即過濾器每隔幾步計算一次結果
LeNet-5第一層:卷積層C1
C1層是卷積層,形成6個特徵圖譜。卷積的輸入區域大小是5x5,每個特徵圖譜內參數共享,即每個特徵圖譜內只使用一個共同卷積核,卷積核有5x5個連接參數加上1個偏置共26個參數。卷積區域每次滑動一個像素,這樣卷積層形成的每個特徵圖譜大小是(32-5)/1+1=28x28。C1層共有26x6=156個訓練參數,有(5x5+1)x28x28x6=122304個連接。C1層的連接結構如下所示。
LeNet-5第二層:池化層S2
S2層是一個下採樣層(為什麼是下採樣?利用圖像局部相關性的原理,對圖像進行子抽樣,可以減少數據處理量同時保留有用信息)。C1層的6個28x28的特徵圖譜分別進行以2x2為單位的下抽樣得到6個14x14((28-2)/2+1)的圖。每個特徵圖譜使用一個下抽樣核。5x14x14x6=5880個連接。S2層的網絡連接結構如下右圖
LeNet-5第三層:卷積層C3
C3層是一個卷積層,卷積和和C1相同,不同的是C3的每個節點與S2中的多個圖相連。C3層有16個10x10(14-5+1)的圖,每個圖與S2層的連接的方式如下表 所示。C3與S2中前3個圖相連的卷積結構見下圖.這種不對稱的組合連接的方式有利於提取多種組合特徵。該層有(5x5x3+1)x6 + (5x5x4 + 1) x 3 + (5x5x4 +1)x6 + (5x5x6+1)x1 = 1516個訓練參數,共有1516x10x10=151600個連接。
LeNet-5第四層:池化層S4
S4是一個下採樣層。C3層的16個10x10的圖分別進行以2x2為單位的下抽樣得到16個5x5的圖。5x5x5x16=2000個連接。連接的方式與S2層類似,如下所示。
LeNet-5第五層:全連接層C5
C5層是一個全連接層。由於S4層的16個圖的大小為5x5,與卷積核的大小相同,所以卷積後形成的圖的大小為1x1。這裡形成120個卷積結果。每個都與上一層的16個圖相連。所以共有(5x5x16+1)x120 = 48120個參數,同樣有48120個連接。C5層的網絡結構如下所示。
LeNet-5第六層:全連接層F6
F6層是全連接層。F6層有84個節點,對應於一個7x12的比特圖,該層的訓練參數和連接數都是(120 + 1)x84=10164.
LeNet-5第七層:全連接層Output
Output層也是全連接層,共有10個節點,分別代表數字0到9,如果節點i的輸出值為0,則網絡識別的結果是數字i。採用的是徑向基函數(RBF)的網絡連接方式。假設x是上一層的輸入,y是RBF的輸出,則RBF輸出的計算方式是:
yi的值由i的比特圖編碼(即參數Wij)確定。yi越接近於0,則標明輸入越接近於i的比特圖編碼,表示當前網絡輸入的識別結果是字符i。該層有84x10=840個設定的參數和連接。連接的方式如上圖.
以上是LeNet-5的卷積神經網絡的完整結構,共約有60,840個訓練參數,340,908個連接。一個數字識別的效果如圖所示
LeNet-5的訓練算法
訓練算法與傳統的BP算法差不多。主要包括4步,這4步被分為兩個階段:
第一階段,向前傳播階段:
a)從樣本集中取一個樣本(X,Yp),將X輸入網絡;
b)計算相應的實際輸出Op。
在此階段,信息從輸入層經過逐級的變換,傳送到輸出 層。這個過程也是網絡在完成訓練後正常運行時執行的過程。在此過程中,網絡執行的是計算(實際上就是輸入與每層的權值矩陣相點乘,得到最後的輸出結果):
Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n))
第二階段,向後傳播階段
a)算實際輸出Op與相應的理想輸出Yp的差;
b)按極小化誤差的方法反向傳播調整權矩陣。
卷積神經網絡的優點
卷積網絡較一般神經網絡在圖像處理方面有 如下優點
a)輸入圖像和網絡的拓撲結構能很好的吻
合;
b)特徵提取和模式分類同時進行,並同時在
訓練中產生;
c)權重共享可以減少網絡的訓練參數,使神
經網絡結構變得更簡單,適應性更強。
總結
卷積網絡在本質上是一種輸入到輸出的映射,它能夠學習大量的輸入與輸出之間的映射關係,而不需要任何輸入和輸出之間的精確的數學表達式。
通過對LeNet-5的網絡結構的分析,可以直觀地了解一個卷積神經網絡的構建方法,可以為分析、構建更複雜、更多層的卷積神經網絡做準備。
LaNet-5的局限性
CNN能夠得出原始圖像的有效表徵,這使得CNN能夠直接從原始像素中,經過極少的預處理,識別視覺上面的規律。然而,由於當時缺乏大規模訓練數據,計算機的計算能力也跟不上,LeNet-5 對於複雜問題的處理結果並不理想。
2006年起,人們設計了很多方法,想要克服難以訓練深度CNN的困難。其中,最著名的是 Krizhevsky et al.提出了一個經典的CNN 結構,並在圖像識別任務上取得了重大突破。其方法的整體框架叫做 AlexNet,與 LeNet-5 類似,但要更加深一些。