吳恩達深度學習筆記(81)-為什麼使用卷積?(Why convolutions?)

為什麼使用卷積?(Why convolutions?)

我們來分析一下卷積在神經網絡中如此受用的原因,然後對如何整合這些卷積,如何通過一個標註過的訓練集訓練卷積神經網絡做個簡單概括。和

只用全連接層相比,卷積層的兩個主要優勢在於參數共享和稀疏連接,舉例說明一下。

吳恩達深度學習筆記(81)-為什麼使用卷積?(Why convolutions?)

假設有一張32×32×3維度的圖片,這是上節課的示例,假設用了6個大小為5×5的過濾器,輸出維度為28×28×6。32×32×3=3072,28×28×6=4704。我們構建一個神經網絡,其中一層含有3072個單元,下一層含有4074個單元,兩層中的每個神經元彼此相連,然後計算權重矩陣,它等於4074×3072≈1400萬,所以要訓練的參數很多

雖然以現在的技術,我們可以用1400多萬個參數來訓練網絡,因為這張32×32×3的圖片非常小,訓練這麼多參數沒有問題。如果這是一張1000×1000的圖片,權重矩陣會變得非常大。我們看看這個卷積層的參數數量,每個過濾器都是5×5,一個過濾器有25個參數,再加上偏差參數,那麼每個過濾器就有26個參數,一共有6個過濾器,所以參數共計156個,參數數量還是很少

卷積網絡映射這麼少參數有兩個原因:

一是參數共享。

觀察發現,特徵檢測如垂直邊緣檢測如果適用於圖片的某個區域,那麼它也可能適用於圖片的其他區域。也就是說,如果你用一個3×3的過濾器檢測垂直邊緣,那麼圖片的左上角區域,以及旁邊的各個區域(左邊矩陣中藍色方框標記的部分)都可以使用這個3×3的過濾器。每個特徵檢測器以及輸出都可以在輸入圖片的不同區域中使用同樣的參數,以便提取垂直邊緣或其它特徵。

它不僅適用於邊緣特徵這樣的低階特徵,同樣適用於高階特徵,例如提取臉上的眼睛,貓或者其他特徵對象。即使減少參數個數,這9個參數同樣能計算出16個輸出。

直觀感覺是,一個特徵檢測器,如垂直邊緣檢測器用於檢測圖片左上角區域的特徵,這個特徵很可能也適用於圖片的右下角區域。因此在計算圖片左上角和右下角區域時,你不需要添加其它特徵檢測器。假如有一個這樣的數據集,其左上角和右下角可能有不同分佈,也有可能稍有不同,但很相似,整張圖片共享特徵檢測器,提取效果也很好。

吳恩達深度學習筆記(81)-為什麼使用卷積?(Why convolutions?)

第二個方法是使用稀疏連接

第二個方法是使用稀疏連接,我來解釋下。這個0是通過3×3的卷積計算得到的,它只依賴於這個3×3的輸入的單元格,右邊這個輸出單元(元素0)僅與36個輸入特徵中9個相連接。而且其它像素值都不會對輸出產生任影響,這就是稀疏連接的概念(這個要搞清楚na,記住了)

吳恩達深度學習筆記(81)-為什麼使用卷積?(Why convolutions?)

再舉一個例子,這個輸出(右邊矩陣中紅色標記的元素 30)僅僅依賴於這9個特徵(左邊矩陣紅色方框標記的區域),看上去只有這9個輸入特徵與輸出相連接,其它像素對輸出沒有任何影響。

神經網絡可以通過這兩種機制減少參數,以便我們用更小的訓練集來訓練它,從而預防過度擬合

你們也可能聽過,卷積神經網絡善於捕捉平移不變。通過觀察可以發現,向右移動兩個像素,圖片中的貓依然清晰可見,因為神經網絡的卷積結構使得即使移動幾個像素,這張圖片依然具有非常相似的特徵,應該屬於同樣的輸出標記。

實際上,我們用同一個過濾器生成各層中,圖片的所有像素值,希望網絡通過自動學習變得更加健壯,以便更好地取得所期望的平移不變屬性

這就是卷積或卷積網絡在計算機視覺任務中表現良好的原因。

吳恩達深度學習筆記(81)-為什麼使用卷積?(Why convolutions?)

最後,我們把這些層整合起來,看看如何訓練這些網絡。

比如我們要構建一個貓咪檢測器,

我們有下面這個標記訓練集,x表示一張圖片,^y是二進制標記或某個重要標記。

我們選定了一個卷積神經網絡,輸入圖片,增加捲積層和池化層,然後添加全連接層,最後輸出一個softmax,即^y。

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

一個類似於我們之前講過的那種代價函數,並隨機初始化其參數w和b,代價函數J等於神經網絡對整個訓練集的預測的損失總和再除以m

吳恩達深度學習筆記(81)-為什麼使用卷積?(Why convolutions?)

所以訓練神經網絡,你要做的就是使用梯度下降法,或其它算法,例如Momentum梯度下降法,含RMSProp或其它因子的梯度下降來優化神經網絡中所有參數,以減少代價函數J的值。通過上述操作你可以構建一個高效的貓咪檢測器或其它檢測器。

你已經學習了卷積神經網絡的所有基本構造模塊,以及如何在高效圖片識別系統中整合這些模塊。

下週,我們將繼續深入學習卷積神經網絡。我曾提到卷積神經網絡中有很多超參數,下週,我打算具體展示一些最有效的卷積神經網絡示例,你也可以嘗試去判斷哪些網絡架構類型效率更高。人們通常的做法是將別人發現和發表在研究報告上的架構應用於自己的應用程序。下週看過更多具體的示例後,相信你會做的更好。此外,下星期我們也會深入分析卷積神經網絡如此高效的原因,同時講解一些新的計算機視覺應用程序,例如,對象檢測和神經風格遷移以及如何利用這些算法創造新的藝術品形式。期待與您再次相遇!


分享到:


相關文章: