卷積神經網絡是近年發展起來,並引起廣泛重視的壹種高效識別方法。20世紀60年代,Hubel和Wiesel在研究貓腦皮層中用於局部敏感和方向選擇的神經元時發現其獨特的網絡結構可以有效地降低反饋神經網絡的復雜性,繼而提出了卷積神經網絡(Convolutional
Neural
Networks-簡稱CNN)。現在,CNN已經成為眾多科學領域的研究熱點之壹,特別是在模式分類領域,由於該網絡避免了對圖像的復雜前期預處理,可以直接輸入原始圖像,因而得到了更為廣泛的應用。
K.Fukushima在1980年提出的新識別機是卷積神經網絡的第壹個實現網絡。隨後,更多的科研工作者對該網絡進行了改進。其中,具有代表性的研究成果是Alexander和Taylor提出的“改進認知機”,該方法綜合了各種改進方法的優點並避免了耗時的誤差反向傳播。
壹般地,CNN的基本結構包括兩層,其壹為特征提取層,每個神經元的輸入與前壹層的局部接受域相連,並提取該局部的特征。壹旦該局部特征被提取後,它與其它特征間的位置關系也隨之確定下來;其二是特征映射層,網絡的每個計算層由多個特征映射組成,每個特征映射是壹個平面,平面上所有神經元的權值相等。特征映射結構采用影響函數核小的sigmoid函數作為卷積網絡的激活函數,使得特征映射具有位移不變性。此外,由於壹個映射面上的神經元***享權值,因而減少了網絡自由參數的個數。卷積神經網絡中的每壹個卷積層都緊跟著壹個用來求局部平均與二次提取的計算層,這種特有的兩次特征提取結構減小了特征分辨率。
CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。由於CNN的特征檢測層通過訓練數據進行學習,所以在使用CNN時,避免了顯示的特征抽取,而隱式地從訓練數據中進行學習;再者由於同壹特征映射面上的神經元權值相同,所以網絡可以並行學習,這也是卷積網絡相對於神經元彼此相連網絡的壹大優勢。卷積神經網絡以其局部權值***享的特殊結構在語音識別和圖像處理方面有著獨特的優越性,其布局更接近於實際的生物神經網絡,權值***享降低了網絡的復雜性,特別是多維輸入向量的圖像可以直接輸入網絡這壹特點避免了特征提取和分類過程中數據重建的復雜度。
1. 神經網絡
首先介紹神經網絡,這壹步的詳細可以參考資源1。簡要介紹下。神經網絡的每個單元如下:
其對應的公式如下:
其中,該單元也可以被稱作是Logistic回歸模型。當將多個單元組合起來並具有分層結構時,就形成了神經網絡模型。下圖展示了壹個具有壹個隱含層的神經網絡。
其對應的公式如下:
比較類似的,可以拓展到有2,3,4,5,…個隱含層。
神經網絡的訓練方法也同Logistic類似,不過由於其多層性,還需要利用鏈式求導法則對隱含層的節點進行求導,即梯度下降+鏈式求導法則,專業名稱為反向傳播。關於訓練算法,本文暫不涉及。
2 卷積神經網絡
在圖像處理中,往往把圖像表示為像素的向量,比如壹個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 多層卷積
在實際應用中,往往使用多層卷積,然後再使用全連接層進行訓練,多層卷積的目的是壹層卷積學到的特征往往是局部的,層數越高,學到的特征就越全局化。
3 ImageNet-2010網絡結構
ImageNetLSVRC是壹個圖片分類的比賽,其訓練集包括127W+張圖片,驗證集有5W張圖片,測試集有15W張圖片。本文截取2010年AlexKrizhevsky的CNN結構進行說明,該結構在2010年取得冠軍,top-5錯誤率為15.3%。值得壹提的是,在今年的ImageNetLSVRC比賽中,取得冠軍的GoogNet已經達到了top-5錯誤率6.67%。可見,深度學習的提升空間還很巨大。
下圖即為Alex的CNN結構圖。需要註意的是,該模型采用了2-GPU並行結構,即第1、2、4、5卷積層都是將模型參數分為2部分進行訓練的。在這裏,更進壹步,並行結構分為數據並行與模型並行。數據並行是指在不同的GPU上,模型結構相同,但將訓練數據進行切分,分別訓練得到不同的模型,然後再將模型進行融合。而模型並行則是,將若幹層的模型參數進行切分,不同的GPU上使用相同的數據進行訓練,得到的結果直接連接作為下壹層的輸入。
上圖模型的基本參數為:
輸入:224×224大小的圖片,3通道
第壹層卷積:5×5大小的卷積核96個,每個GPU上48個。
第壹層max-pooling:2×2的核。
第二層卷積:3×3卷積核256個,每個GPU上128個。
第二層max-pooling:2×2的核。
第三層卷積:與上壹層是全連接,3*3的卷積核384個。分到兩個GPU上個192個。
第四層卷積:3×3的卷積核384個,兩個GPU各192個。該層與上壹層連接沒有經過pooling層。
第五層卷積:3×3的卷積核256個,兩個GPU上個128個。
第五層max-pooling:2×2的核。
第壹層全連接:4096維,將第五層max-pooling的輸出連接成為壹個壹維向量,作為該層的輸入。
第二層全連接:4096維
Softmax層:輸出為1000,輸出的每壹維都是圖片屬於該類別的概率。
4 DeepID網絡結構
DeepID網絡結構是香港中文大學的Sun
Yi開發出來用來學習人臉特征的卷積神經網絡。每張輸入的人臉被表示為160維的向量,學習到的向量經過其他模型進行分類,在人臉驗證試驗上得到了97.45%的正確率,更進壹步的,原作者改進了CNN,又得到了99.15%的正確率。
如下圖所示,該結構與ImageNet的具體參數類似,所以只解釋壹下不同的部分吧。
上圖中的結構,在最後只有壹層全連接層,然後就是softmax層了。論文中就是以該全連接層作為圖像的表示。在全連接層,以第四層卷積和第三層max-pooling的輸出作為全連接層的輸入,這樣可以學習到局部的和全局的特征。