卷積神經網絡(CNN)基礎

前言

在七月初七情人節,牛郎織女相見的一天,我終于學習了CNN(來自CS231n),感覺感觸良多,所以趕快記下來,別忘了,最后祝大家情人節快樂5555555.正題開始!

CNN的基本結構

CNN分為幾層

CNN一共有卷積層(CONV)、ReLU層(ReLU)、池化層(Pooling)、全連接層(FC(Full Connection))下面是各個層的詳細解釋。

卷積層(CONV)

卷積,尤其是圖像的卷積,需要一個濾波器,用濾波器對整個圖像進行遍歷,我們假設有一個32*32*3的原始圖像A,濾波器的尺寸為5*5*3,用w表示,濾波器中的數據就是CNN的參數的一部分,那么在使用濾波器w對A進行濾波的話,可以用下面的式子表示:



其中x為原始圖像的5*5*3的一部分,b是偏置項置為1。在對A進行濾波之后,產生的是一個28*28*1的數據。那么假設我們存在6個濾波器,這六個濾波器之間彼此是獨立的,也就是他們內部的數據是不同的且沒有相關性的。可以理解為一個濾波器查找整幅圖像的垂直邊緣,一個查找水平邊緣,一個查找紅色,一個查找黑色這樣。那么我就可以產生6個28*28*1的數據,將它們組合到一起就可以產生28*28*6的數據,這就是卷積層主要做的工作。

CNN可以看作一系列的卷積層和ReLU層對原始數據結構進行處理的神經網絡,處理的過程可以用下面這幅圖表示


特別要注意的是濾波器的深度一定要與上一層傳來的數據的深度相同,就像上圖的第二個卷積層在處理傳來的28*28*6的數據時要使用5*5*6的濾波器.

步長stride

濾波器在圖像上不斷移動對圖像濾波,自然存在步長的問題,在上面我們舉的例子都是步長為1的情況,如果步長為3的話,32*32*3的圖像經過5*5*3的濾波器卷積得到的大小是(32-5)/3+1=10,注:步長不能為2因為(32-5)/2+1=14.5是小數。

所以當圖像大小是N,濾波器尺寸為F時,步長S,那么卷積后大小為(N-F)/S+1

關于控件尺寸的減小

我們從上面的圖中可以看到圖像的長和寬在逐漸的減小,在經過超過5層之后極可能只剩下1*1的空間尺度,這樣是十分不好的,而且也不利于我們接下來的計算,所以我們想讓卷積層處理完之后圖像在空間尺度上大小不變,所以我們引入了pad the border的操作。pad其實就是在圖像周圍補0,擴大圖像的尺寸,使得卷積后圖像大小不變。在CNN中,主要存在4個超參數,濾波器個數K,濾波器大小F,pad大小P和步長S,其中P是整數,當P=1時,對原始數據的操作如圖所示:


P=1的操作

那么在pad操作后卷積后的圖像大小為:(N-F+2*P)/S+1
而要想讓卷積層處理后圖像空間尺度不變,P的值可以設為P=(F-1)/2

總結

卷積層輸入W1*H1*D1大小的數據,輸出W2*H2*D2的數據,此時的卷積層共有4個超參數:
K:濾波器個數
P:pad屬性值
S:濾波器每次移動的步長
F:濾波器尺寸
此時輸出的大小可以用輸入和超參計算得到:
W2=(W1-F+2P)/S+1
H2=(H1-F+2P)/S+1
D2=D1

一些補充

1*1的濾波器也是有意義的,它在深度方向做卷積,例如1*1*64的濾波器對56*56*64的數據卷積得到56*56的數據

F通常是奇數,這樣可以綜合考慮上下左右四個方向的數據。

用神經元的角度看待卷積層

卷積層從神經元的角度看待可以有兩個性質:參數共享和局域連接。對待一個濾波器,例如5*5*3的一個濾波器,對32*32*3的數據卷積得到28*28的數據,可以看作存在28*28個神經元,每個對原圖像5*5*3的區域進行計算,這28*28個神經元由于使用同一個濾波器,所以參數相同,我們稱這一特性為參數共享

針對不同的濾波器,我們可以看到他們會看到同一區域的圖像,相當于在深度方向存在多個神經元,他們看著相同區域叫做局域連接

參數共享減少了參數的數量,防止了過擬合
局域連接為查找不同特征更豐富的表現圖像提供了可能。
卷積就像是對原圖像的另一種表達。

ReLU層

激活函數,對于每一個維度經過ReLU函數輸出即可。不改變數據的空間尺度。

池化層

通過pad操作,輸出圖像在控件上并沒有變化,但是深度發生了變化,越來越龐大的數據給計算帶來了困難,也出現了冗余的特征,所以需要進行池化操作,池化不改變深度,只改變長寬,主要有最大值和均值兩種方法,一般的池化濾波器大小F為2步長為2,對于最大值池化可以用下面的圖像清晰的表示:


最大池化

總結

卷積層輸入W1*H1*D1大小的數據,輸出W2*H2*D2的數據,此時的卷積層共有2個超參數:
S:濾波器每次移動的步長
F:濾波器尺寸
此時輸出的大小可以用輸入和超參計算得到:
W2=(W1-F)/S+1
H2=(H1-F)/S+1
D2=D1

全連接層

將最后一層(CONV、ReLU或Pool)處理后的數據輸入全連接層,對于W2*H2*D2數據,我們將其展成1*1*W2*H2*D2大小的數據,輸入層共有W2*H2*D2個神經元,最后根據問題確定輸出層的規模,輸出層可以用softmax表示。也就是說,全連接層就是一個常見的BP神經網絡。而這個網絡也是參數最多的部分,是接下來想要去掉的部分。完整的神經網絡可以用下面的圖表示:

CNN結構:

[(CONV-ReLU)*N-POOL?]*M-(FC-RELU)*K,SoftMax

CNN趨勢

1.更小的濾波器與更深的網絡
2.只有CONV層而去掉池化與全鏈接

集中CNN網絡(時間序)

LeNet-5(1998)

最早的CNN,用于識別郵編,結構為:
CONV-POOL-CONV-POOL-CONV-FC
濾波器大小5*5,步長為1,池化層2*2,步長為2

AlexNet(2012)

2012年由于GPU技術所限,原始AlexNet為兩個GPU分開計算,這里介紹合起來的結構。

輸入圖像為227*227*3

具體結構為:
AlexNet
一些細節:

1.首次使用ReLU
2.使用Norm layers,現在已經拋棄,因為效果不大
3.數據經過預處理(例如大小變化,顏色變化等)
4.失活比率0.5
5.batch size 128
6.SGD Momentum 參數0.9(SGD和Momentum見我的其他文章)
7.學習速率 0.01,準確率不在提升時減少10倍,1-2次后達到收斂
8.L2權重減少0.0005
9.錯誤率15.4%

ZFNet(2013)

改進自AlexNet,主要改變:
1.CONV1的濾波器從11*11步長S=4改為7*7步長為2.
2.CONV3,4,5濾波器數量有384,384,256改為512,1024,512(濾波器數量為2的n次冪有利于計算機計算可以提高效率)
錯誤率:14.8%后繼續改進至11.2%

VGGNet(2014)

當前最好的最易用的CNN網絡,所有卷積層濾波器的大小均為3*3,步長為1,pad=1,池化層為2*2的最大值池化,S=2。

主要結構:
主要結構

主要參數來自全連接層,這也是想要去掉FC的原因。

具有高度的統一性和線性的組合,易于理解,十分方便有VGG-16,VGG-19等多種結構。
錯誤率7.3%

GoogleNet(2014)

完全移除FC層,參數只有500萬,使用Inception模塊(不太理解,有時間繼續看)
準確率6.67%

ResNet殘差神經網絡

準確率3.6%
擁有極深的網絡結構,且越深準確率越高。是傳統CNN不具備的特點,傳統CNN并非越深越準確。需要訓練時間較長但是快于VGG


兩者對比
相關細節

1.每個卷積層使用Batch Normalization
2.Xavier/2初始化
3.SGD+Momentum(0.9)
4.Learning rate:0.1,準確率不變減小10倍(因為Batch Normalization所以比AlexNet大)
5.mini-batch size 256
6.Weight decay of 0.00001
7.不適用失活(因為Batch Normalization)

具體的梯度過程學完ResNet再說吧。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容