CNN的理解

本文轉自: 點擊打開鏈接

一,前言

卷積神經網絡(Constitutional Neural Networks, CNN)是在多層神經網絡的基礎上發展起來的針對圖像分類和識別而特別設計的一種深度學習方法。先回顧一下多層神經網絡:
這裏寫圖片描述
多層神經網絡包括一個輸入層和一個輸出層,中間有多個隱藏層。每一層有若干個神經元,相鄰的兩層之間的後一層的每一個神經元都分別與前一層的每一個神經元連接。在一般的識別問題中,輸入層代表特徵向量,輸入層的每一個神經元代表一個特徵值。

在圖像識別問題中,輸入層的每一個神經元可能代表一個像素的灰度值。但這種神經網絡用於圖像識別有幾個問題,一是沒有考慮圖像的空間結構,識別性能會受到限制;二是每相鄰兩層的神經元都是全相連,參數太多,訓練速度受到限制。

而卷積神經網絡就可以解決這些問題。卷積神經網絡使用了針對圖像識別的特殊結構,可以快速訓練。因爲速度快,使得采用多層神經網絡變得容易,而多層結構在識別準確率上又很大優勢。

二,卷積神經網絡的結構

卷積神經網絡有三個基本概念:局部感知域(local receptive fields),共享權重(shared weights)和池化(pooling)。

局部感知域: 在上圖中的神經網絡中輸入層是用一列的神經元來表示的,在CNN中,不妨將輸入層當做二維矩陣排列的神經元。

與常規神經網絡一樣,輸入層的神經元需要和隱藏層的神經元連接。但是這裏不是將每一個輸入神經元都與每一個隱藏神經元連接,而是僅僅在一個圖像的局部區域創建連接。以大小爲28X28的圖像爲例,假如第一個隱藏層的神經元與輸入層的一個5X5的區域連接,如下圖所示:
這裏寫圖片描述
這個5X5的區域就叫做局部感知域。該局部感知域的25個神經元與第一個隱藏層的同一個神經元連接,每個連接上有一個權重參數,因此局部感知域共有5X5個權重。如果將局部感知域沿着從左往右,從上往下的順序滑動,就會得對應隱藏層中不同的神經元,如下圖分別展示了第一個隱藏層的前兩個神經元與輸入層的連接情況。
這裏寫圖片描述
這裏寫圖片描述
如果輸入層是尺寸爲28X28的圖像,局部感知域大小爲5X5,那麼得到的第一個隱藏層的大小是24X24。

共享權重: 上面得到的第一隱藏層中的24X24個神經元都使用同樣的5X5個權重。第個隱藏層中第個神經元的輸出爲:


這裏是神經元的激勵函數(可以是sigmoid函數、thanh函數或者rectified linear unit函數等)。 是該感知域連接的共享偏差。是個5X5共享權重矩陣。因此這裏有26個參數。 代表在輸入層的處的輸入激勵。

這就意味着第一個隱藏層中的所有神經元都檢測在圖像的不同位置處的同一個特徵。(權重共享,檢測特徵相同)因此也將從輸入層到隱藏層的這種映射稱爲特徵映射(或稱作filters, kernels)。該特徵映射的權重稱爲共享權重,其偏差稱爲共享偏差。

爲了做圖像識別,通常需要不止一個的特徵映射,因此一個完整的卷積層包含若干個不同的特徵映射。下圖中是個三個特徵映射的例子。
這裏寫圖片描述
在實際應用中CNN可能使用更多的甚至幾十個特徵映射。以MNIST手寫數字識別爲例,學習到的一些特徵如下:
這裏寫圖片描述
這20幅圖像分別對應20個不同的特徵映射(或稱作filters, kernels)。每一個特徵映射由5X5的圖像表示,代表了局部感知域中的5X5個權重。亮的像素點代表小的權重,與之對應的圖像中的像素產生的影響要小一些。暗的像素點代表的大的權重,也意味着對應的圖像中的像素的影響要大一些。可以看出這些特徵映射反應了某些特殊的空間結構,因此CNN學習到了一些與空間結構有關的信息用於識別。

池化層(pooling layers) 池化層通常緊隨卷積層之後使用,其作用是簡化卷積層的輸出。例如,池化層中的每一個神經元可能將前一層的一個2X2區域內的神經元求和。而另一個經常使用的max-pooling,該池化單元簡單地將一個2X2的輸入域中的最大激勵輸出,如下圖所示:
這裏寫圖片描述
如果卷積層的輸出包含24X24個神經元,那麼在池化後可得到12X12個神經元。每一個特徵映射後分別有一個池化處理,前面所述的卷積層池化後的結構爲:
這裏寫圖片描述
Max-pooling並不是唯一的池化方法,另一種池化方法是

,該方法是將卷積層2X2區域中的神經元的輸出求平方和的平方根。儘管細節與Max-pooling不一樣,但其效果也是簡化卷積層輸出的信息。

將上述結構連接在一起,再加上一個輸出層,得到一個完整的卷積神經網絡。在手寫數字識別的例子中輸出層有十個神經元,分別對應0,1, … ,9的輸出。
這裏寫圖片描述
網絡中的最後一層是一個全連接層,即該層的每個神經元都與最後一個Max-pooling層的每個神經元連接。

這個結構這是一個特殊的例子,實際CNN中也可在卷積層和池化層之後可再加上一個或多個全連接層。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章