吳恩達深度學習:簡單卷積網路

2020/2/28發表於2020-11-15

考研人資訊庫

此公眾號會發表計算機考研(初複試資訊)、夏令營等資料,方便考研人對資訊的獲取,節約自身查詢資料的時間,回覆408,可獲得資料結構、作業系統、計算機網路、計算機組成原理全科資料

簡單卷積網路示例 (A Simple Convolution Network Example)

上節課,我們講了如何為卷積網路構建一個卷積層。今天我們看一個深度卷積神經網路的具體示例,順便練習一下我們上節課所學的標記法。

假設你有一張圖片,你想做圖片分類或圖片識別,把這張圖片輸入定義為 x x x ,然後辨別圖片中有沒有貓,用0或1表示,這是一個分類問題,我們來構建適用於這項任務的卷積神經網路。針對這個示例,我用了一張比較小的圖片,大小是39×39×3,這樣設定可以使其中一些數字效果更好。所以 n H [ 0 ] = n W [ 0 ] n_H^{[0]}=n_W^{[0]} nH[0]​=nW[0]​ ,即高度和寬度都等於39, n c [ 0 ] = 3 n_c^{[0]}=3 nc[0]​=3 ,即0層的通道數為3。

在這裡插入圖片描述
假設第一層我們用一個3×3的過濾器來提取特徵,那麼 f [ 1 ] = 3 f^{[1]}=3 f[1]=3 ,因為過濾器時3×3的矩陣。 s [ 1 ] = 1 , p [ 1 ] = 0 s^{[1]}=1,p^{[1]}=0 s[1]=1,p[1]=0 ,所以高度和寬度使用valid卷積。如果有10個過濾器,神經網路下一層的啟用值為37×37×10,寫10是因為我們用了10個過濾器,37是公式 n + 2 p − f s + 1 \frac{n+2p-f}{s}+1 sn+2p−f​+1 的計算結果,也就是 39 + 0 − 3 1 + 1 = 37 \frac{39+0-3}{1}+1=37 139+0−3​+1=37 ,所以輸出是37×37,它是一個vaild卷積,這是輸出結果的大小。第一層標記為 n H [ 1 ] = n W [ 1 ] = 37 , n c [ 1 ] = 10 n_H^{[1]}=n_W^{[1]}=37,n_c^{[1]}=10 nH[1]​=nW[1]​=37,nc[1]​=10 , n c [ 1 ] n_c^{[1]} nc[1]​ 等於第一層中過濾器的個數,這(37×37×10)是第一層啟用值的維度。

在這裡插入圖片描述
假設還有另外一個卷積層,這次我們採用的過濾器是5×5的矩陣。在標記法中,神經網路下一層的 f = 5 f=5 f=5 ,即步幅 f [ 2 ] = 5 f^{[2]}=5 f[2]=5 為2,即 s [ 2 ] = 2 s^{[2]}=2 s[2]=2 。padding為0,即 p [ 2 ] = 0 p^{[2]}=0 p[2]=0 ,且有20個過濾器。所以其輸出結果會是一張新影像,這次的輸出結果為17×17×20,因為步幅是2,維度縮小得很快,大小從37×37減小到17×17,減小了一半還多,過濾器是20個,所以通道數也是20,17×17×20即啟用值 a [ 2 ] a^{[2]} a[2] 的維度。因此 n H [ 2 ] = n W [ 2 ] = 17 , n c [ 2 ] = 20 n_H^{[2]}=n_W^{[2]}=17,n_c^{[2]}=20 nH[2]​=nW[2]​=17,nc[2]​=20 。

在這裡插入圖片描述
我們來構建最後一個卷積層,假設過濾器還是5×5,步幅為2,即 f [ 2 ] = 5 , s [ 3 ] = 2 f^{[2]}=5,s^{[3]}=2 f[2]=5,s[3]=2 ,計算過程我跳過了,最後輸出為7×7×40,假設使用了40個過濾器。padding為0,40個過濾器,最後結果為7×7×40。

在這裡插入圖片描述
到此,這張39×39×3的輸入影像就處理完畢了,為圖片提取了7×7×40個特徵,計算出來就是1960個特徵。然後對該卷積進行處理,可以將其平滑或展開成1960個單元。平滑處理後可以輸出一個向量,其填充內容是logistic迴歸單元還是softmax迴歸單元,完全取決於我們是想識圖片上有沒有貓,還是想識別 K K K 種不同物件中的一種,用 y ^ \hat{y} y^​ 表示最終神經網路的預測輸出。明確一點,最後這一步是處理所有數字,即全部的1960個數字,把它們展開成一個很長的向量。為了預測最終的輸出結果,我們把這個長向量填充到softmax迴歸函式中。

這是卷積神經網路的一個典型範例,設計卷積神經網路時,確定這些超引數比較費工夫。要決定過濾器的大小、步幅、padding以及使用多少個過濾器。這周和下週,我會針對選擇引數的問題提供一些建議和指導。

在這裡插入圖片描述
而這節課你要掌握的一點是,隨著神經網路計算深度不斷加深,通常開始時的影像也要更大一些,初始值為39×39,高度和寬度會在一段時間內保持一致,然後隨著網路深度的加深而逐漸減小,從39到37,再到17,最後到7。而通道數量在增加,從3到10,再到20,最後到40。在許多其它卷積神經網路中,你也可以看到這種趨勢。關於如何確定這些引數,後面課上我會更詳細講解,這是我們講的第一個卷積神經網路示例。

一個典型的卷積神經網路通常有三層,一個是卷積層,我們常常用Conv來標註。上一個例子,我用的就是CONV。還有兩種常見型別的層,我們留在後兩節課講。一個是池化層,我們稱之為POOL。最後一個是全連線層,用FC表示。雖然僅用卷積層也有可能構建出很好的神經網路,但大部分神經望樓架構師依然會新增池化層和全連線層。幸運的是,池化層和全連線層比卷積層更容易設計。後兩節課我們會快速講解這兩個概念以便你更好的瞭解神經網路中最常用的這幾種層,你就可以利用它們構建更強大的網路了。

在這裡插入圖片描述
再次恭喜你已經掌握了第一個卷積神經網路,本週後幾節課,我們會學習如何訓練這些卷積神經網路。不過在這之前,我還要簡單介紹一下池化層和全連線層。然後再訓練這些網路,到時我會用到大家熟悉的反向傳播訓練方法。那麼下節課,我們就先來了解如何構建神經網路的池化層。

相關文章