深度學習01:CNN的若干基礎概念

該系列博文,主要是對吳恩達深度學習和優達學城相關課程的學習筆記;
主要方便自己查閱,複習。

相關參考閱讀:機器學習16:簡單, 直觀的方法理解CNN(卷積神經網絡)核心原理及實現

1.邊緣檢測

常見的都有垂直方向,水平方向邊緣檢測,sobel算子

假如把濾波器的參數,用數據自動訓練,就可以得到檢測任意邊緣檢測的濾波器

2.Padding

卷積計算的缺點:

1.丟失邊緣信息:每次做卷積運算,圖像就會變小,丟棄邊緣信息;

2.角落邊的像素,只會計算一次,而圖中間的像素,會被卷積計算多次,意味着丟失了邊緣許多信息;

在這裏插入圖片描述

未解決這個問題,在做卷積之前,對圖像先做填充

在這裏插入圖片描述

輸出變成 (n+2p-f+1)*(n+2p-f+1)

這樣,角落邊緣信息丟失,這個問題影響就削弱了。

至於填充多少像素,一般有兩種,分別叫Valid卷積和Same卷積;

Valid卷積:不填充;

Same卷積:填充後,輸出大小和輸入大小是一樣的;

在這裏插入圖片描述

在計算機視覺中,f一般取奇數;可能原因有

原因1:如果取偶數,那隻能使用一些不對稱的填充;

原因2:奇數維度的卷積,有一箇中心點,有時在計算機視覺裏,有一箇中心像素點會更方便,容易指出卷積位置;

3.步長stride

當一個nxn圖片,與一個fxf濾波器,做卷積時,其輸出尺寸計算如下(向下取整):

在這裏插入圖片描述

互相關:將濾波器參數翻轉,即按水平,垂直方向做鏡像

在這裏插入圖片描述

得到新的濾波器,數學家將這叫做互相關;

而在機器學習中,一般統稱爲卷積,將濾波器參數的翻轉視爲卷積的性質

對於信號處理來說,這個性質很重要;但是對深度學習來說,這個不重要,因此省略綠這個雙重鏡像操作;

4多維卷積核

在這裏插入圖片描述

注:可以獨立設置每個通道濾波器參數;比如只關注R通道邊緣檢測…

4卷積神經網絡示例

在這裏插入圖片描述

5.Pooling

除了卷積層,卷積網絡也經常使用池化層,來縮減模型大小,提高計算速度,同時提高所提取特徵的魯棒性;

Pooling layer:Max pooling

意義,某個區域最大值,往往意味着該區域檢測出某個特徵

在這裏插入圖片描述

Pooling layer:average pooling

意義,某個區域最大值,往往意味着該區域檢測出某個特徵

一般來說,最大池化層比平均池化層更常用,但也有例外,就是深度很深的神經網絡,
可以用平均池化來分解規模爲7x7x1000的網絡的表示層;在整個空間內求平均值,得到1x1x1000

最常用的是f=2,s=2,相當於高度和寬度縮減一半

大部分情況下,最大池化很少用到padding,目前p最常用是p=0

在這裏插入圖片描述

需要注意的一點是,池化過程中沒有需要學習的超級參數;只有這些手動設置的參數,也可能是通過交叉驗證設置的;
最大池化只是計算神經網絡某一層的靜態屬性,沒有什麼需要學習的;

一個完整的卷積神經網絡示例

在這裏插入圖片描述

常規做法是,儘量不要自己設置超級參數,而是查看文獻中別人採用了哪些超級參數,選一個在別人任務中效果很好的架構,
那麼它也有可能適用於你自己的應用程序;

如果激活值下降太快,也會影響網絡性能;

在這裏插入圖片描述

整合這些基本模塊確實需要深入的理解和感覺,找到整合基本構造模塊的感覺,最好辦法就是大量閱讀別人的案例,

爲什麼使用卷積

和單純使用全連接層相對,卷積層的兩個主要優勢,參數共享和稀疏鏈接

在這裏插入圖片描述

如上圖示,全連接層需要月14000000參數,而卷積層只需156個參數

卷積層能有效減少參數的原因主要有

1.共享參數

一個卷積核參數,可以平移,滑過所有像素平面;即卷積具有平移不變性

2.稀疏鏈接

如下圖,輸出圖像的某個點,只與輸入圖像部分像素有關

在這裏插入圖片描述

將所有模塊組織成一個可用的卷積網絡示例

輸入圖片,增加捲積層和池化層,然後添加全連接層,最後softmax輸出,得到一個y^\hat{y}

卷積層和全連接層有不同的參數w和偏差b, 我們可以用任何參數集合來定義代價函數;

並隨機初始化其參數和偏差,CostJ等於神經網絡對整個訓練集的預測的損失總和,再除以m;

所以,訓練神經網絡,你要做的是使用梯度下降法或其他算法,如含動量的梯度下降,含RMSProp或其它因子的梯度下降;

來優化神經網絡中的所有參數,以減小代價函數J的值;

在這裏插入圖片描述

通過上述操作,可以構建一個高效的貓咪或其他檢測器;

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