為什麼使用卷積?(why convolutions?)
和只用全連線層相比,卷積層的兩個主要優勢在於引數共享和稀疏連線:
假設有一張 32×32×3 維度的,假設用了 6 個大小為 5×5 的過濾器,輸出維度為 28×28×6。32×32×3=3072, 28×28×6=4704。我們構建乙個神經網路,其中一層含有 3072 個單元,下一層含有 4074 個單元,兩層中的每個神經元彼此相連,然後計算權重矩陣,它等於 4074×3072≈1400 萬,所以要訓練的引數很多。我們看看這個卷積層的引數數量,每個過濾器都是 5×5,乙個過濾器有 25 個引數,再加上偏差引數,那麼每個過濾器就有 26 個引數,一共有 6 個過濾器,所以引數共計 156 個,引數數量還是很少。
卷積網路對映這麼少引數有兩個原因:
一是引數共享。
觀察發現,特徵檢測如垂直邊緣檢測如果適用於的某個區域,那麼它也可能適用於的其他區域。也就是說,如果你用乙個 3×3 的過濾器檢測垂直邊緣,那麼的左上角區域,以及旁邊的各個區域都可以使用這個 3×3 的過濾器。每個特徵檢測器以及輸出都可以在輸入的不同區域中使用同樣的引數,以便提取垂直邊緣或其它特徵。它不僅適用於邊緣特徵這樣的低階特徵,同樣適用於高階特徵,例如提取臉上的眼睛,貓或者其他特徵物件。即使減少引數個數,這 9 個引數同樣能計算出 16 個輸出。直觀感覺是,乙個特徵檢測器,如垂直邊緣檢測器用於檢測左上角區域的特徵,這個特徵很可能也適用於的右下角區域。因此在計算左上角和右下角區域時,你不需要新增其它特徵檢測器。假如有乙個這樣的資料集,其左上角和右下角可能有不同分布,也有可能稍有不同,但很相似,整張共享特徵檢測器,提取效果也很好。
第二個方法是使用稀疏連線。
這個 0 是通過 3×3 的卷積計算得到的,它只依賴於這個 3×3 的輸入的單元格,右邊這個輸出單元(元素 0)僅與 36 個輸入特徵中 9 個相連線。而且其它畫素值都不會對輸出產生任影響,這就是稀疏連線的概念。
再舉乙個例子,這個輸出(右邊矩陣中紅色標記的元素 30)僅僅依賴於這 9 個特徵(左邊矩陣紅色方框標記的區域),看上去只有這 9 個輸入特徵與輸出相連線,其它畫素對輸出沒有任何影響。
神經網路可以通過這兩種機制減少引數,以便我們用更小的訓練集來訓練它,從而預防過度擬合。
卷積神經網路善於捕捉平移不變。通過觀察可以發現,向右移動兩個畫素,中的貓依然清晰可見,因為神經網路的卷積結構使得即使移動幾個畫素,這張依然具有非常相似的特徵,應該屬於同樣的輸出標記。實際上,我們用同乙個過濾器生成各層中,的所有畫素值,希望網路通過自動學習變得更加健壯,以便更好地取得所期望的平移不變屬性。
比如我們要構建乙個貓咪檢測器,我們有下面這個標記訓練集,x表示一張, $$是二進位制標記或某個重要標記。我們選定了乙個卷積神經網路,輸入,增加卷積層和池化層,然後新增全連線層,最後輸出乙個 softmax,即$$。卷積層和全連線層有不同的引數w和偏差b,我們可以用任何引數集合來定義代價函式。乙個類似於我們之前講過的那種代價函式,並隨機初始化其引數w和b,代價 函 數 j等 於 神 經 網 絡 對 整 個 訓 練 集 的 預 測 的 損 失 總 和 再 除 以 m(即 $\nolimits} t\;j = \frac\sum\nolimits_^m ^},})}$)。所以訓練神經網路,你要做的就是使用梯度下降法,或其它演算法,例如 momentum 梯度下降法,含 rmsprop 或其它因子的梯度下降來優化神經網路中所有引數,以減少代價函式�的值。通過上述操作你可以構建乙個高效的貓咪檢測器或其它檢測器。
為什麼要使用卷積
假設你有32x32x3的影象,一共3072個特徵點,卷積成28x28x6的影象,一共4704個特徵點。如果使用傳統的網路,你需要3072 4704 14m個引數。32x32x3的影象已經是很小的影象了,如果你是1000 1000,引數可能多到使得計算舉步維艱。關於引數共享,更具體地說,你在整幅影象的...
為什麼要使用卷積
假設你有32x32x3的影象,一共3072個特徵點,卷積成28x28x6的影象,一共4704個特徵點。如果使用傳統的網路,你需要3072 4704 14m個引數。32x32x3的影象已經是很小的影象了,如果你是1000 1000,引數可能多到使得計算舉步維艱。關於引數共享,更具體地說,你在整幅影象的...
為什麼使用奇數卷積核?!
1.參考矩陣卷積的性質可知,矩陣卷積會以卷積核模組的乙個部分為基準進行滑動,一般cnn中的卷積核是方形的,為了統一標準,會用卷積核模組中心為基準進行滑動,從被卷積矩陣第乙個框按一定布長從左到右從上到下進行滑動,最後滑動到被積矩陣最後一塊。所以卷積核一般為奇數,主要是方便以模組中心為標準進行滑動卷積。...