06.17 卷積神經網絡深入解析-CNN

卷積神經網絡(Convolutional Neural Network, CNN)最早是為解決圖像識別問題設計的,在深度學習出現以前,我們必須藉助與SIFT、HOG等圖像識別算法人工提取特徵,雖然SIFT類的算法對一定程度的縮放、平移、旋轉、視角改變、亮度變化有一定的容忍度,但是還是有很大侷限,很多年都難以有突破性的進展。卷積神經網絡的出現,使得特徵提取和分類訓練兩個過程同時進行,訓練的過程中自動提取最有效的特徵。

卷積神經網絡的層級結構

一個典型的卷積神經網絡一般由數據輸入層(Input Layer)、卷積計算層(Conv Layer)、Relu激活層(Relu Layer)、池化層(Pooling Layer)、全連接層(FC Layer)。

卷積神經網絡深入解析-CNN

1.輸入層(Input Layer)

該層要做的處理主要是對原始圖像數據進行預處理,其中包括:

a) 去均值:把輸入數據各個維度都中心化為0。如下圖所示,其目的就是把樣本的中心拉回到座標系原點上。

b) 歸一化:幅度歸一化到同樣的範圍,如下所示,即減少各維度數據取值範圍的差異而帶來的干擾,比如,我們有兩個維度的特徵A和B,A範圍是0到10,而B範圍是0到10000,如果直接使用這兩個特徵是有問題的,好的做法就是歸一化,即A和B的數據都變為0到1的範圍。

卷積神經網絡深入解析-CNN

c) PCA/白化:用PCA降維;白化是對數據各個特徵軸上的幅度歸一化。

卷積神經網絡深入解析-CNN

2、卷積計算層(Conv Layer)

圖像通過多個不同的卷積核的濾波,提取出局部特徵,每個卷積核都會映射出一個新的2D圖像。下圖是一個卷積核執行卷積的的過程。卷積核在圖像裡表現的像一個從原始圖像矩陣中提取特定信息的過濾器。一個權值組合可能用來提取邊緣(edge)信息,另一個可能是用來提取一個特定顏色,下一個就可能就是對不需要的噪點進行模糊化。

卷積神經網絡深入解析-CNN

步長(stride)和邊界(padding)的概念

從上圖可以看到,卷積核在整個圖像範圍內像刷牆一樣一次移動一個像素,我們可以把它定義成一個超參,用來表示我們想讓濾波核在圖像內如何移動。如果權值矩陣一次移動一個像素,我們稱其步長為 1。下面我們看一下步長為 2 時的情況。

卷積神經網絡深入解析-CNN

padding是什麼呢?以下圖為例子,比如有這麼一個5*5的圖片(一個格子一個像素),我們滑動窗口取2*2,步長取2,那麼我們發現還剩下1個像素沒法滑完,那怎麼辦呢?

卷積神經網絡深入解析-CNN

那我們在原先的矩陣加了一層padding,使得變成6*6的矩陣,那麼窗口就可以剛好把所有像素遍歷完。這就是padding的作用。

卷積神經網絡深入解析-CNN

參數共享機制

在卷積層中每個神經元連接數據窗的權重是固定的,每個神經元只關注一個特性。神經元就是圖像處理中的濾波器,比如邊緣檢測專用的Sobel濾波器,即卷積層的每個濾波器都會有自己所關注一個圖像特徵,比如垂直邊緣,水平邊緣,顏色,紋理等等,這些所有神經元加起來就好比就是整張圖像的特徵提取器集合。

不管圖像的大小是多少,卷積網絡的參數個數只跟卷積核的大小有關係,這極大的減少了神經網絡的參數個數。

卷積神經網絡深入解析-CNN

3、Relu激活層(Relu Layer)

CNN採用的激勵函數一般為ReLU(The Rectified Linear Unit/修正線性單元),它的特點是收斂快,求梯度簡單,但較脆弱,圖像如下。

卷積神經網絡深入解析-CNN

激勵層的實踐經驗:

①不要用sigmoid!不要用sigmoid!不要用sigmoid!

② 首先試RELU,因為快,但要小心點

③ 如果2失效,請用Leaky ReLU或者Maxout

④ 某些情況下tanh倒是有不錯的結果,但是很少

4、池化層(Pooling Layer)

有時圖像太大,我們需要減少訓練參數的數量,它被要求在隨後的卷積層之間週期性地引進池化層。池化的唯一目的是減少圖像的空間大小。池化層的最常見形式是最大池化。

卷積神經網絡深入解析-CNN

在這裡,我們把步幅定為 2,池化尺寸也為 2。最大化執行也應用在每個卷機輸出的深度尺寸中。正如你所看到的,最大池化操作後,4*4 卷積的輸出變成了 2*2。下圖是最大池化在真實圖片中的效果。

卷積神經網絡深入解析-CNN

池化層的作用:

1)特徵不變性,也就是我們在圖像處理中經常提到的特徵的尺度不變性,池化操作就是圖像的resize,平時一張狗的圖像被縮小了一倍我們還能認出這是一張狗的照片,這說明這張圖像中仍保留著狗最重要的特徵,我們一看就能判斷圖像中畫的是一隻狗,圖像壓縮時去掉的信息只是一些無關緊要的信息,而留下的信息則是具有尺度不變性的特徵,是最能表達圖像的特徵。

2)特徵降維,我們知道一幅圖像含有的信息是很大的,特徵也很多,但是有些信息對於我們做圖像任務時沒有太多用途或者有重複,我們可以把這類冗餘信息去除,把最重要的特徵抽取出來,這也是池化操作的一大作用。

3)在一定程度上防止過擬合,更方便優化。

5、全連接層(FC Layer)

卷積和池化層只會提取特徵,並減少原始圖像帶來的參數,為了生成最終的輸出,我們需要應用全連接層來生成一個分類結果的輸出,僅僅依靠卷積層是難以達到這個要求的。CNN通過全連接的方式來完成這部分工作。兩層之間所有神經元都有權重連接,也就是跟傳統的神經網絡神經元的連接方式是一樣的:

卷積神經網絡深入解析-CNN

卷積神經網絡之優缺點

優點

•共享卷積核,對高維數據處理無壓力

•無需手動選取特徵,訓練好權重,即得特徵分類效果好

缺點

•需要調參,需要大樣本量,訓練最好要GPU

•物理含義不明確(也就說,我們並不知道沒個卷積層到底提取到的是什麼特徵,而且神經網絡本身就是一種難以解釋的“黑箱模型”)


分享到:


相關文章: