卷積神經網絡學習筆記

卷積神經網絡
轉自:http://dataunion.org/11692.html
找到一個很不錯的CNN的講解,認真花了點時間把裏面自己感覺有用的東西稍微懂了一些。
以前組會上聽人講過,但是當時有些地方聽得不是太明白。卷積層和池化層裏面有些東西看似很難,其實和只要明白其中的道理,感覺挺有意思的。

在圖像處理中,往往把圖像表示爲像素的向量,比如一個1000×1000的圖像,可以表示爲一個1000000的向量。在上一節中提到的神經網絡中,如果隱含層數目與輸入層一樣,即也是1000000時,那麼輸入層到隱含層的參數數據爲1000000×1000000=10^12,這樣就太多了,基本沒法訓練。所以圖像處理要想練成神經網絡大法,必先減少參數加快速度。就跟辟邪劍譜似的,普通人練得很挫,一旦自宮後內力變強劍法變快,就變的很牛了。

2.1 局部感知

卷積神經網絡有兩種神器可以降低參數數目,第一種神器叫做局部感知野。一般認爲人對外界的認知是從局部到全局的,而圖像的空間聯繫也是局部的像素聯繫較爲緊密,而距離較遠的像素相關性則較弱。因而,每個神經元其實沒有必要對全局圖像進行感知,只需要對局部進行感知,然後在更高層將局部的信息綜合起來就得到了全局的信息。網絡部分連通的思想,也是受啓發於生物學裏面的視覺系統結構。視覺皮層的神經元就是局部接受信息的(即這些神經元只響應某些特定區域的刺激)。如下圖所示:左圖爲全連接,右圖爲局部連接。

這裏寫圖片描述

在上右圖中,假如每個神經元只和10×10個像素值相連,那麼權值數據爲1000000×100個參數,減少爲原來的千分之一。而那10×10個像素值對應的10×10個參數,其實就相當於卷積操作。
2.2 參數共享

但其實這樣的話參數仍然過多,那麼就啓動第二級神器,即權值共享。在上面的局部連接中,每個神經元都對應100個參數,一共1000000個神經元,如果這1000000個神經元的100個參數都是相等的,那麼參數數目就變爲100了。

怎麼理解權值共享呢?我們可以這100個參數(也就是卷積操作)看成是提取特徵的方式,該方式與位置無關。這其中隱含的原理則是:圖像的一部分的統計特性與其他部分是一樣的。這也意味着我們在這一部分學習的特徵也能用在另一部分上,所以對於這個圖像上的所有位置,我們都能使用同樣的學習特徵。

更直觀一些,當從一個大尺寸圖像中隨機選取一小塊,比如說 8×8 作爲樣本,並且從這個小塊樣本中學習到了一些特徵,這時我們可以把從這個 8×8 樣本中學習到的特徵作爲探測器,應用到這個圖像的任意地方中去。特別是,我們可以用從 8×8 樣本中所學習到的特徵跟原本的大尺寸圖像作卷積,從而對這個大尺寸圖像上的任一位置獲得一個不同特徵的激活值。

如下圖所示,展示了一個33的卷積核在55的圖像上做卷積的過程。每個卷積都是一種特徵提取方式,就像一個篩子,將圖像中符合條件(激活值越大越符合條件)的部分篩選出來。
這裏寫圖片描述
2.3 多卷積核

上面所述只有100個參數時,表明只有1個100*100的卷積核,顯然,特徵提取是不充分的,我們可以添加多個卷積核,比如32個卷積核,可以學習32種特徵。在有多個卷積核時,如下圖所示:這裏寫圖片描述
上圖右,不同顏色表明不同的卷積核。每個卷積核都會將圖像生成爲另一幅圖像。比如兩個卷積核就可以將生成兩幅圖像,這兩幅圖像可以看做是一張圖像的不同的通道。如下圖所示,下圖有個小錯誤,即將w1改爲w0,w2改爲w1即可。下文中仍以w1和w2稱呼它們。

下圖展示了在四個通道上的卷積操作,有兩個卷積核,生成兩個通道。其中需要注意的是,四個通道上每個通道對應一個卷積核,先將w2忽略,只看w1,那麼在w1的某位置(i,j)處的值,是由四個通道上(i,j)處的卷積結果相加然後再取激活函數值得到的。
這裏寫圖片描述
這裏寫圖片描述
所以,在上圖由4個通道卷積得到2個通道的過程中,參數的數目爲4×2×2×2個,其中4表示4個通道,第一個2表示生成2個通道,最後的2×2表示卷積核大小。

2.4 Down-pooling

在通過卷積獲得了特徵 (features) 之後,下一步我們希望利用這些特徵去做分類。理論上講,人們可以用所有提取得到的特徵去訓練分類器,例如 softmax 分類器,但這樣做面臨計算量的挑戰。例如:對於一個 96X96 像素的圖像,假設我們已經學習得到了400個定義在8X8輸入上的特徵,每一個特徵和圖像卷積都會得到一個 (96 − 8 + 1) × (96 − 8 + 1) = 7921 維的卷積特徵,由於有 400 個特徵,所以每個樣例 (example) 都會得到一個 892 × 400 = 3,168,400 維的卷積特徵向量。學習一個擁有超過 3 百萬特徵輸入的分類器十分不便,並且容易出現過擬合 (over-fitting)。

爲了解決這個問題,首先回憶一下,我們之所以決定使用卷積後的特徵是因爲圖像具有一種“靜態性”的屬性,這也就意味着在一個圖像區域有用的特徵極有可能在另一個區域同樣適用。因此,爲了描述大的圖像,一個很自然的想法就是對不同位置的特徵進行聚合統計,例如,人們可以計算圖像一個區域上的某個特定特徵的平均值 (或最大值)。這些概要統計特徵不僅具有低得多的維度 (相比使用所有提取得到的特徵),同時還會改善結果(不容易過擬合)。這種聚合的操作就叫做池化 (pooling),有時也稱爲平均池化或者最大池化 (取決於計算池化的方法)。
這裏寫圖片描述
至此,卷積神經網絡的基本結構和原理已經闡述完畢。

2.5 多層卷積

在實際應用中,往往使用多層卷積,然後再使用全連接層進行訓練,多層卷積的目的是一層卷積學到的特徵往往是局部的,層數越高,學到的特徵就越全局化。

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