卷積神經網路-2

阿蘇爾發表於2018-04-19

本文來自於網易雲課堂

單層卷積神經網路

這裡寫圖片描述
如何構建卷積神經網路的單層網路呢?過濾器的作用相當於W,卷積和相當於w×a,然後加上偏移b即為z。也就是說從a[0]

a^{[0]}
a[1]
a^{[1]}
的過程,首先執行線性函式,在加上偏差,然後應用啟用函式Relu,然後通過神經網路的一層把一個6*6*3的維度a[0]
a^{[0]}
演化為一個4*4*2的維度a[1]
a^{[1]}

這裡寫圖片描述
不論圖片有多大,始終是用過濾器提取特徵,總的引數很小。10個過濾器的話,加上偏移引數也就是280個。這就是卷積神經網路的一個特徵,叫做避免過擬合。
這裡寫圖片描述
注意,高度,寬度和通道是沒有固定的順序標準的。Andrew Ng採用的是高度、寬度、通道的順序。

簡單卷積神經網路示例

這裡寫圖片描述
一個典型的卷積網路通常有三層,一個卷積層(CONV),一個池化層(POOL),最後一個是全連線層(FC)。雖然僅用一個卷積層也能搭建好但大部分架構師還是會新增池化層和全連線層。幸運的是,池化層和全連線層更容易設計。
這裡寫圖片描述

池化層

這裡寫圖片描述
除了卷積層,神經網路也經常使用池化層來縮減模型大小,提高計算速度,同時提高所提取特徵的魯棒性。
先舉一個例子,給定一個4*4的矩陣,用到的池化層是最大池化,執行最大池化輸出的是2*2矩陣。輸出中的每個元素都是對應輸入位置的最大元素。這就像應用了一個2*2的過濾器,步長為2.這就是池化層的超引數:f=2,s=2,其效果相當於高度和寬度縮小一半。這就是對最大池化功能的直觀理解。你可以把這4*4的輸入看做是某種特徵的集合,數字大意味著提取了某些特定特徵。左上限具有這個 特徵可能是垂直邊緣,或者其他的特徵。然而右上限並不具備這個特徵。所以最大化操作的功能就是隻要在任何一個象限內提取到某個特徵。它都會儲存到最大池化的輸出裡。所以其實際功能是如果過濾器提取到某個特徵,那麼保留最大值。如果沒有提取到這個特徵,那麼值就是很小,這就是對最大池化的直觀理解。但是必須承認,人們願意利用池化層的原因是此法在很多實驗中效果都很好,但是不知道大家是否真正理解其有用的原因。一個最有意思的特點是它有一組超引數,但是並沒有什麼引數要學習。實際上對於梯度下降並沒有什麼可學的。一旦確定了f和s,那麼它就是一個固定運算。
這裡寫圖片描述
之前用於卷積層的計算也適用於池化層,也有f,s, 也可以計算輸出。如果輸入是三維的,那麼輸出也是三維的。計算池化層的方法就是對每一個通道分別進行計算。
還有另外一種型別的池化-平均池化,不過不經常使用。顧名思義,過濾器選取的是平均值而不是最大值。
這裡寫圖片描述

卷積神經網路示例

這個例子使用的網路和經典網路Le-Net5非常相似,其靈感也來源於此,它是由Yan LeCun建立的。在卷積網路文獻中,卷積有兩種分類,這與所謂層的劃分具有一致性。一類卷積是一個卷積層和一個池化層作為一層,另一類卷積是把卷積層作為一層把池化層作為另一層。人們在計算神經網路具有多少層時,通常只是統計具有權重和引數的層,因為池化層沒有權重和引數,只有一些超引數。因此,我們把CONV1和POOL1作為1層,並記為layer1。雖然在閱讀文獻時可能會看到分成2層的情況,這只是不同的標記術語而已。
這裡寫圖片描述
這個例子中有2個卷積層,然後加了2個全連線層,最後加了一個softmax層。這個例子中的卷積神經網路很典型,看上去它有很多超引數,關於如何選定這些超引數,常規做法是儘量不要自己設定超引數,而是檢視文獻中別人設定了哪些超引數,選一個在別人任務中效果較好的架構,那麼它也有可能適用你自己的應用程式。隨著神經網路的加深,高度和寬度都會減少,通道數量 會增加,然後得到一個全連線層。在神經網路中,另一種常見模式就是一個或多個卷積層後面跟隨一個池化層,然後在是一個或多個卷積層後面跟隨一個池化層,然後是幾個全連線層,最後是softmax層。
關於神經網路的啟用值形狀(activation shape),啟用值大小和引數數量。對於輸入為32*32*3,這些數做乘法,結果為3072。那麼啟用值a[0]有3072維,啟用值矩陣為32*32*3,輸入層沒有引數。有幾點要注意,第一,池化層和最大池化層沒有引數。第二,卷積層的引數相對較少。其實許多引數都存在於全連線層。觀察可發現,隨著神經網路深度的加深,啟用值會逐漸變小,如果下降太快也會影響效能。許多神經網路都有這樣一種屬性。
這裡寫圖片描述
一個卷積神經網路包括卷積層,池化層和全連線層。許多計算機視覺正在探索如何把這些基本模組整合起來,構建高效的神經網路。整合這些基本模組確實需要深入的理解和感覺。根據Adrew Ng的經驗,最好的方法就是大量閱讀別人的案例。

為什麼使用卷積

和只用全連線層相比,卷積層的兩個主要優勢在於引數共享和稀疏連線。還是上一節的例子,給定32*32*3的輸入,使用6個f=5的過濾器,得到28*28*6的輸出,如果採用全連線層,那麼引數數量會高達32*32*3*28*28*6≈1400萬個引數,所以要訓練的引數有很多。而採用過濾器,引數一共有(5*5+1)*6=156.卷積網路對映這麼少的引數有2個原因,
一是引數共享(parameter sharing)。觀察可以發現,特徵檢測如垂直特徵檢測如果適用於圖片的某個區域,那麼他也可能適用於圖片的其他區域。二是使用稀疏連線(sparsity of connections)。例如每個輸出值只與36個輸入特徵的9個特徵相連線,而且其他畫素值都不會對輸出產生任何影響。神經網路用這兩種機制來減少引數,以便我們用更少的訓練集來訓練它從而預防過擬合。
這裡寫圖片描述

相關文章