卷積神經網絡CNN

本文學習筆記的部分內容參考zouxy09的博客,謝謝!http://blog.csdn.net/zouxy09/article/details/8775360

什麼是卷積

卷積如果改名爲“加權平均積”,就會很好理解了。卷積的離散形式就是常用的加權平均,而連續形式則可理解爲對連續函數的加權平均。假如我們觀測或計算出一組數據,但數據由於受噪音的污染並不光滑,我們希望對其進行人工處理。那麼,最簡單的方法就是加權平均。實際上加權平均是兩個序列在做離散卷積,其中一個序列是權重,另一個序列是原數據。試想若把序列換爲函數,則就是我們通常卷積的定義。這時可使用一個函數對另外一個函數做加權平均。不過,一個扮演的是權重角色,另一個則扮演被平均的角色。

數學上定義:設ƒ(x),g(x)是實數集R上的兩個可積函數,作積分


圖像特徵

其實對於一張圖片來說,像素級特徵是沒有價值的,特徵是具有結構性的時候,才能更好的反應這幅圖像。因此可通過卷積神經網絡把底層特徵表達一層層的抽象到高層特徵表示。如:像素級特徵表示的圖像,在第一層學習後得到梯度級圖像表示,再上一層學習後得到目標部分級圖像表示,再次學習後得到整個目標結構模型特徵。

其實卷積神經網絡的本質是構建多層學習模型,來學習得到圖像更有價值的特徵,從而最終提升分類或預測的準確性。


卷積神經網絡

卷積神經網絡是人工神經網絡的一種,它的最厲害的地方在於權值共享網絡結構,降低了網絡模型的複雜度,減少了權值數量。優點是圖像可直接作爲網絡的輸入,避免了傳統算法中複雜的特徵提取和數據重建的過程。

CNN利用空間關係減少需要學習的參數數目。CNN中,圖像的一小部分作爲層級結構的最底層輸入,信息再依次傳輸到不同的層,每層通過一個數字濾波器去獲得觀測數據的最顯著特徵

卷積神經網絡結構


CNN是一個多層神經網絡,每層由多個二維平面組成,每個平面由多個獨立神經元組成。

如上圖,輸入層可直接使用原圖像的像素表示作爲輸入,通過三個可訓練的濾波器和可加偏置對原圖像進行卷積,卷積後在C1層產生三個特徵映射圖(每個特徵映射圖都可看爲是對原圖像的抽象),這是一個卷積的過程,稱爲卷積層。卷積層得到的特徵映射圖作爲輸入,將圖中每組的四個像素進行求和,加權值,加偏置,再通過一個sigmoid函數得到三個S2層的特徵映射圖,這是一個下采樣的過程。如此卷積層和下采樣層交替,最終給出圖像的向量表示。後可接一個分類器(SVM或傳統神經網絡)得到輸出。

參數減少和權值共享

卷積神經網絡最厲害的地方在於權值共享網絡結構,其具體做法如下:


上圖左:如果我們有1000*1000像素的圖像,有1000000個隱層神經元,那麼他們全連接的話(每個隱層神經元都連接圖像的每一個像素點),就有1000*1000*1000000=10^12個連接,也就是10^12個權值參數。

考慮到圖像的空間聯繫是局部的,就像人是通過一個局部的感受野去感受外界圖像一樣,每一個神經元都不需要對全局圖像做感受,每個神經元只感受局部的圖像區域,然後在更高層,將這些感受不同局部的神經元綜合起來就可以得到全局的信息了。這樣,我們就可以減少連接的數目,也就是減少神經網絡需要訓練的權值參數的個數了。如上圖右:假如局部感受野是10*10,隱層每個感受野只需要和這10*10的局部圖像相連接,所以1百萬個隱層神經元就只有一億(1000000*10*10)個連接,即10^8個參數。

試想如果每個神經元用的都是同一個卷積核去卷積圖像。這樣我們就只有100個參數。所以不管隱層的神經元個數有多少,兩層間的連接只有100個參數,所有神經元公用同一個卷積核,這就是權值共享。

因爲一種濾波器,也就是一種卷積核就是提出圖像的一種特徵,當需要提取不同的特徵時,需要加多幾種濾波器就可以了。所以假設我們加到100種濾波器,每種濾波器的參數不一樣,表示它提出輸入圖像的不同特徵,這樣每種濾波器去卷積圖像就得到對圖像的不同特徵的映射,稱之爲Feature Map。所以100種卷積核就有100Feature Map。這100Feature Map就組成了一層神經元。所以這一層參數只有:100種卷積核*每種卷積核共享100個參數=100*100=10000個參數。如下圖右:不同的顏色表達不同的濾波器。


所以隱層的參數個數和隱層的神經元個數無關,只和濾波器的大小和濾波器種類的多少有關。但是隱層的神經元個數和原圖像,也就是輸入的大小(神經元個數)、濾波器的大小和濾波器在圖像中的滑動步長都有關!例如,輸入圖像是1000*1000像素,而濾波器大小是10*10,假設濾波器沒有重疊,也就是步長爲10,這樣隱層的神經元個數就是(1000*1000 )/ (10*10)=100*100個神經元了。但這只是一種濾波器,也就是一個Feature Map的神經元個數,如果100Feature Map就是100倍了。

所以卷積網絡的核心思想是將:局部感受野、權值共享以及空間亞採樣這三種結構思想結合起來獲得了某種程度的位移、尺度、形變不變性。

LeNet-5

一個典型的卷積神經網絡的例子就是LeNet-5。這個卷積神經網絡當年在美國銀行被用來識別支票上的手寫數據。其網絡結構如下:


LeNet-5共有7層,每層都包含可訓練參數(連接權重)。輸入圖像爲32*32大小,每個層有多個Feature Map(多個濾波器處理),每個Feature Map通過一種卷積濾波器提取輸入的一種特徵,每個Feature Map有多個神經元。

C1層是一個卷積層(通過卷積運算,可以使原信號特徵增強,並且降低噪音),由6個特徵圖Feature Map構成(即需要6個不同的濾波器)。特徵圖中每個神經元與輸入中5*5的鄰域(感受野單元大小)相連。特徵圖的大小爲28*28C1156個可訓練參數(每個濾波器5*5=25unit參數和一個bias參數,一共6個濾波器,共(5*5+1)*6=156個參數),共156*(28*28)=122,304個連接。

S2層是一個下采樣層(利用圖像局部相關性的原理,對圖像進行子抽樣,可以減少數據處理量同時保留有用信息),有614*14的特徵圖。特徵圖中的每個單元與C1中相對應特徵圖的2*2鄰域相連接。S2層每個單元的4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置,結果通過sigmoid函數計算。每個單元的2*2感受野並不重疊,因此S2中每個特徵圖的大小是C1中特徵圖大小的1/4(行和列各1/2)。S2層有12(6*(1+1))可訓練參數和5880((2*2+1)*6*14*14)連接。


如圖,卷積過程包括:用一個可訓練的濾波器fx去卷積一個輸入的圖(第一階段是輸入的圖像,後面的階段就是卷積特徵map了),然後加一個偏置bx,得到卷積層Cx

子採樣過程包括:每鄰域四個像素求和變爲一個像素,然後通過標量Wx+1加權,再增加偏置bx+1,然後通過一個sigmoid激活函數,產生一個大概縮小四倍的特徵映射圖Sx+1

從一個平面到下一個平面的映射可以看作是做卷積運算,S-層可看作是模糊濾波器,起到二次特徵提取的作用。隱層與隱層之間空間分辨率遞減,而每層所含的平面數遞增,這樣可用於檢測更多的特徵信息。

C3層也是一個卷積層,它同樣通過5*5的卷積核去卷積層S2,然後得到的特徵map就只有10*10個神經元,但是它有16種不同的卷積核(16種不同濾波器),所以就存在16個特徵map了。這裏需要注意的一點是:S2層特徵mapC1層的特徵map是一一對應連接的,而C3中的每個特徵map是連接到S2中的所有6個或者幾個特徵map上的,表示本層的特徵map是上一層提取到的特徵map的不同組合(這個做法也並不是唯一的)。(就像人的視覺系統一樣,底層的結構構成上層更抽象的結構)。

如上說C3中每個特徵圖由S2中所有6個或者幾個特徵map組合而成。爲什麼是幾個map組合而沒確定的說6(全部組合),原因有2點。第一,不完全的連接機制將連接的數量保持在合理的範圍內。第二,也是最重要的,爲了破壞網絡的對稱性。由於不同的特徵圖有不同的輸入,所以迫使他們抽取不同的特徵。

例如,存在的一個方式是:C3的前6個特徵圖以S23個相鄰的特徵圖子集爲輸入。接下來6個特徵圖以S24個相鄰特徵圖子集爲輸入。然後的3個以不相鄰的4個特徵圖子集爲輸入。最後一個將S2中所有特徵圖爲輸入。這樣C3層有1516((5*5*3+1)*6+(5*5*4+1)*6+(5*5*4+1)*3+(5*5*6+1))可訓練參數和151600個連接。

S4層是一個下采樣層,由165*5大小的特徵圖構成。特徵圖中的每個單元與C3中相應特徵圖的2*2鄰域相連接,跟C1S2之間的連接一樣。S4層有32((1+1)*16)可訓練參數(每個特徵圖1個因子和1個偏置)和2000((2*2+1)*16*5*5)連接。

C5層是一個卷積層,有120個特徵圖。每個單元與S4層的全部16個單元的5*5鄰域相連(全連接層)。由於S4層特徵圖的大小也爲5*5(同濾波器一樣),故C5特徵圖的大小爲1*1:這構成了S4C5之間的全連接。之所以仍將C5標示爲卷積層而非全相聯層,是因爲如果LeNet-5的輸入變大,而其他的保持不變,那麼此時特徵圖的維數就會比1*1大。C5層有48120((5*5*16+1)*120)可訓練參數及連接。

F6層有84個單元(之所以選這個數字的原因來自於輸出層的設計),與C5層全相連(全相連層)。有10164((1*1*120+1)*84)可訓練參數。如同經典神經網絡,F6層計算輸入向量和權重向量之間的點積,再加上一個偏置。然後將其傳遞給sigmoid函數產生單元i的一個狀態。

最後,輸出層10個單元,分別都是由歐式徑向基函數(Euclidean Radial Basis Function)單元組成,每類一個單元,每個有84個輸入。換句話說,每個輸出RBF單元計算輸入向量和參數向量之間的歐式距離。輸入離參數向量越遠,RBF輸出的越大。一個RBF輸出可以被理解爲衡量輸入模式和與RBF相關聯類的一個模型的匹配程度的懲罰項。這些輸出單元的參數是人工選取並保持固定的(至少初始時候如此)。這些參數向量的成分被設爲-11。例如第一個濾波器的參數向量爲(1,-1,1,........,-1)(84),計算84個輸入與該84維參數向量的歐氏距離,相離越近表示該輸入爲第一類。一共10個濾波器,分別代表該輸入爲類0,1,....9.

訓練過程

神經網絡用於模式識別的主流是有指導學習網絡,對於有指導的模式識別,由於任一樣本的類別是已知的,樣本在空間的分佈不再是依據其自然分佈傾向來劃分,而是要根據同類樣本在空間的分佈及不同類樣本之間的分離程度找一種適當的空間劃分方法,或者找到一個分類邊界,使得不同類樣本分別位於不同的區域內。這就需要一個長時間且複雜的學習過程,不斷調整用以劃分樣本空間的分類邊界的位置,使儘可能少的樣本被劃分到非同類區域中。

卷積網絡在本質上是一種輸入到輸出的映射,它能夠學習大量的輸入與輸出之間的映射關係,而不需要任何輸入和輸出之間的精確的數學表達式,只要用已知的模式對卷積網絡加以訓練,網絡就具有輸入輸出對之間的映射能力。卷積網絡執行的是有監督訓練,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對構成的。在開始訓練前,所有的權都應該用一些不同的小隨機數進行初始化。“小隨機數”用來保證網絡不會因權值過大而進入飽和狀態,從而導致訓練失敗;“不同”用來保證網絡可以正常地學習。

訓練算法與傳統的BP算法差不多。主要包括4步,這4步被分爲兩個階段:

第一階段,向前傳播階段:

a)從樣本集中取一個樣本(X,Yp),將X輸入網絡;

b)計算相應的實際輸出Op

      在此階段,信息從輸入層經過逐級的變換,傳送到輸出層。這個過程也是網絡在完成訓練後正常運行時執行的過程。在此過程中,網絡執行的是計算(實際上就是輸入與每層的權值矩陣相點乘,得到最後的輸出結果):

          Op=Fn(…(F2F1XpW1))W2))…)Wn))

第二階段,向後傳播階段

a)算實際輸出Op與相應的理想輸出Yp的差;

b)按極小化誤差的方法反向傳播調整權矩陣。(後面具體講權重是如何調整的)

卷積神經網絡的優點

卷積神經網絡CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。

1、由於CNN的特徵檢測層通過訓練數據進行學習,所以在使用CNN時,避免了顯式的特徵抽取,而隱式地從訓練數據中進行學習;

2、由於同一特徵映射面上的神經元權值相同,所以網絡可以並行學習。卷積神經網絡以其局部權值共享的特殊結構在語音識別和圖像處理方面有着獨特的優越性,其佈局更接近於實際的生物神經網絡,權值共享降低了網絡的複雜性,特別是多維輸入向量的圖像可以直接輸入網絡這一特點避免了特徵提取和分類過程中數據重建的複雜度。CNN通過結構重組和減少權值將特徵提取功能融合進多層感知器。它可以直接處理灰度圖片,能夠直接用於處理基於圖像的分類。

卷積網絡較一般神經網絡在圖像處理方面有如下優點: 

a)輸入圖像和網絡的拓撲結構能很好的吻合;

b)特徵提取和模式分類同時進行,並同時在訓練中產生;

c)權重共享可以減少網絡的訓練參數,使神經網絡結構變得更簡單,適應性更強。




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