卷積神經網路(CNN)基礎介紹
本文是對卷積神經網路的基礎進行介紹,主要內容包括卷積神經網路概念、卷積神經網路結構、卷積神經網路求解、卷積神經網路LeNet-5結構分析、卷積神經網路注意事項。
一、卷積神經網路概念
上世紀60年代,Hubel等人通過對貓視覺皮層細胞的研究,提出了感受野這個概念,到80年代,Fukushima在感受野概念的基礎之上提出了神經認知機的概念,可以看作是卷積神經網路的第一個實現網路,神經認知機將一個視覺模式分解成許多子模式(特徵),然後進入分層遞階式相連的特徵平面進行處理,它試圖將視覺系統模型化,使其能夠在即使物體有位移或輕微變形的時候,也能完成識別。
卷積神經網路(Convolutional Neural Networks, CNN)是多層感知機(MLP)的變種。由生物學家休博爾和維瑟爾在早期關於貓視覺皮層的研究發展而來。視覺皮層的細胞存在一個複雜的構造。這些細胞對視覺輸入空間的子區域非常敏感,我們稱之為感受野,以這種方式平鋪覆蓋到整個視野區域。這些細胞可以分為兩種基本型別,簡單細胞和複雜細胞。簡單細胞最大程度響應來自感受野範圍內的邊緣刺激模式。複雜細胞有更大的接受域,它對來自確切位置的刺激具有區域性不變性。
通常神經認知機包含兩類神經元,即承擔特徵提取的取樣元和抗變形的卷積元,取樣元中涉及兩個重要引數,即感受野與閾值引數,前者確定輸入連線的數目,後者則控制對特徵子模式的反應程度。卷積神經網路可以看作是神經認知機的推廣形式,神經認知機是卷積神經網路的一種特例。
CNN由紐約大學的Yann LeCun於1998年提出。CNN本質上是一個多層感知機,其成功的原因關鍵在於它所採用的區域性連線和共享權值的方式,一方面減少了的權值的數量使得網路易於優化,另一方面降低了過擬合的風險。CNN是神經網路中的一種,它的權值共享網路結構使之更類似於生物神經網路,降低了網路模型的複雜度,減少了權值的數量。該優點在網路的輸入是多維影象時表現的更為明顯,使影象可以直接作為網路的輸入,避免了傳統識別演算法中複雜的特徵提取和資料重建過程。在二維影象處理上有眾多優勢,如網路能自行抽取影象特徵包括顏色、紋理、形狀及影象的拓撲結構;在處理二維影象問題上,特別是識別位移、縮放及其它形式扭曲不變性的應用上具有良好的魯棒性和運算效率等。
CNN本身可以採用不同的神經元和學習規則的組合形式。
CNN具有一些傳統技術所沒有的優點:良好的容錯能力、並行處理能力和自學習能力,可處理環境資訊複雜,背景知識不清楚,推理規則不明確情況下的問題,允許樣品有較大的缺損、畸變,執行速度快,自適應效能好,具有較高的解析度。它是通過結構重組和減少權值將特徵抽取功能融合進多層感知器,省略識別前複雜的影象特徵抽取過程。
CNN的泛化能力要顯著優於其它方法,卷積神經網路已被應用於模式分類,物體檢測和物體識別等方面。利用卷積神經網路建立模式分類器,將卷積神經網路作為通用的模式分類器,直接用於灰度影象。
CNN是一個前潰式神經網路,能從一個二維影象中提取其拓撲結構,採用反向傳播演算法來優化網路結構,求解網路中的未知引數。
CNN是一類特別設計用來處理二維資料的多層神經網路。CNN被認為是第一個真正成功的採用多層層次結構網路的具有魯棒性的深度學習方法。CNN通過挖掘資料中的空間上的相關性,來減少網路中的可訓練引數的數量,達到改進前向傳播網路的反向傳播演算法效率,因為CNN需要非常少的資料預處理工作,所以也被認為是一種深度學習的方法。在CNN中,影象中的小塊區域(也叫做“區域性感知區域”)被當做層次結構中的底層的輸入資料,資訊通過前向傳播經過網路中的各個層,在每一層中都由過濾器構成,以便能夠獲得觀測資料的一些顯著特徵。因為區域性感知區域能夠獲得一些基礎的特徵,比如影象中的邊界和角落等,這種方法能夠提供一定程度對位移、拉伸和旋轉的相對不變性。
CNN中層次之間的緊密聯絡和空間資訊使得其特別適用於影象的處理和理解,並且能夠自動的從影象抽取出豐富的相關特性。
CNN通過結合區域性感知區域、共享權重、空間或者時間上的降取樣來充分利用資料本身包含的區域性性等特徵,優化網路結構,並且保證一定程度上的位移和變形的不變性。
CNN受視覺神經機制的啟發而設計,是為識別二維或三維訊號而設計的一個多層感知器,這種網路結構對平移、縮放、傾斜等變形具有高度不變性。
CNN可以用來識別位移、縮放及其它形式扭曲不變性的二維或三維影象。CNN的特徵提取層引數是通過訓練資料學習得到的,所以其避免了人工特徵提取,而是從訓練資料中進行學習;其次同一特徵圖的神經元共享權值,減少了網路引數,這也是卷積網路相對於全連線網路的一大優勢。共享區域性權值這一特殊結構更接近於真實的生物神經網路使CNN在影象處理、語音識別領域有著獨特的優越性,另一方面權值共享同時降低了網路的複雜性,且多維輸入訊號(語音、影象)可以直接輸入網路的特點避免了特徵提取和分類過程中資料重排的過程。
CNN是一種特殊的深層的神經網路模型,它的特殊性體現在兩個方面,一方面它的神經元的連線是非全連線的,另一方面同一層中某些神經元之間的連線的權重是共享的(即相同的)。它的非全連線和權值共享的網路結構使之更類似於生物神經網路,降低了網路模型的複雜度(對於很難學習的深層結構來說,這是非常重要的),減少了權值的數量。
CNN是一種深度的監督學習下的機器學習模型,具有極強的適應性,善於挖掘資料區域性特徵,提取全域性訓練特徵和分類,它的權值共享結構網路使之更類似於生物神經網路,在模式識別各個領域都取得了很好的成果。
稀疏連線:在BP神經網路中,每一層的神經元節點是一個線性一維排列結構,層與層各神經元節點之間是全連線的。卷積神經網路中,層與層之間的神經元節點不再是全連線形式,利用層間區域性空間相關性將相鄰每一層的神經元節點只與和它相近的上層神經元節點連線,即區域性連線。這樣大大降低了神經網路架構的引數規模。
權重共享:在卷積神經網路中,卷積層的每一個卷積濾波器重複的作用於整個感受野中,對輸入影象進行卷積,卷積結果構成了輸入影象的特徵圖,提取出影象的區域性特徵。每一個卷積濾波器共享相同的引數,包括相同的權重矩陣和偏置項。共享權重的好處是在對影象進行特徵提取時不用考慮區域性特徵的位置。而且權重共享提供了一種有效的方式,使要學習的卷積神經網路模型引數數量大大降低。
最大池取樣:它是一種非線性降取樣方法。在通過卷積獲取影象特徵之後是利用這些特徵進行分類。可以用所有提取到的特徵資料進行分類器的訓練,但這通常會產生極大的計算量。所以在獲取影象的卷積特徵後,要通過最大池取樣方法對卷積特徵進行降維。將卷積特徵劃分為數個n*n的不相交區域,用這些區域的最大(或平均)特徵來表示降維後的卷積特徵。這些降維後的特徵更容易進行分類。
最大池取樣在計算機視覺中的價值體現在兩個方面:(1)、它減小了來自上層隱藏層的計算複雜度;(2)、這些池化單元具有平移不變性,即使影象有小的位移,提取到的特徵依然會保持不變。由於增強了對位移的魯棒性,最大池取樣方法是一個高效的降低資料維度的取樣方法。
Softmax迴歸:它是在邏輯迴歸的基礎上擴張而來,它的目的是為了解決多分類問題。在這類問題中,訓練樣本的種類一般在兩個以上。Softmax迴歸是有監督學習演算法,它也可以與深度學習或無監督學習方法結合使用。
CNN是一種帶有卷積結構的深度神經網路,通常至少有兩個非線性可訓練的卷積層,兩個非線性的固定卷積層(又叫Pooling Laye)和一個全連線層,一共至少5個隱含層。
卷積神經網路中,輸入就是一幅幅的影象,權值W就是卷積模板,一般是卷積層和下采樣層交替,最後是全連線的神經網路。
區域性區域感知能夠發現數據的一些區域性特徵,比如圖片上的一個角,一段弧,這些基本特徵是構成動物視覺的基礎。
CNN中每一層的由多個map組成,每個map由多個神經單元組成,同一個map的所有神經單元共用一個卷積核(即權重),卷積核往往代表一個特徵,比如某個卷積核代表一段弧,那麼把這個卷積核在整個圖片上滾一下,卷積值較大的區域就很有可能是一段弧。注意卷積核其實就是權重,我們並不需要單獨去計算一個卷積,而是一個固定大小的權重矩陣去影象上匹配時,這個操作與卷積類似,因此我們稱為卷積神經網路,實際上,BP也可以看作一種特殊的卷積神經網路,只是這個卷積核就是某層的所有權重,即感知區域是整個影象。權重共享策略減少了需要訓練的引數,使得訓練出來的模型的泛華能力更強。
CNN一般採用卷積層與取樣層交替設定,即一層卷積層接一層取樣層,取樣層後接一層卷積...這樣卷積層提取出特徵,再進行組合形成更抽象的特徵,最後形成對圖片物件的描述特徵,CNN後面還可以跟全連線層,全連線層跟BP一樣。
CNN的最大特點就是稀疏連線(區域性感受)和權值共享。稀疏連線和權值共享可以減少所要訓練的引數,減少計算複雜度。
卷積神經網路是一個多層的神經網路,每層由多個二維平面組成,而每個平面由多個獨立神經元組成。
卷積網路在本質上是一種輸入到輸出的對映,它能夠學習大量的輸入與輸出之間的對映關係,而不需要任何輸入和輸出之間的精確的數學表示式,只要用已知的模式對卷積網路加以訓練,網路就具有輸入輸出對之間的對映能力。卷積網路執行的是有導師訓練,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對構成的。所有這些向量對,都應該是來源於網路即將模擬的系統的實際“執行”結果。它們可以是從實際執行系統中採集來的。在開始訓練前,所有的權都應該用一些不同的小隨機數進行初始化。“小隨機數”用來保證網路不會因權值過大而進入飽和狀態,從而導致訓練失敗;“不同”用來保證網路可以正常地學習。實際上,如果用相同的數去初始化權矩陣,則網路無能力學習。訓練演算法與傳統的BP演算法差不多。
二、卷積神經網路結構
卷積神經網路整體架構:卷積神經網路是一種多層的監督學習神經網路,隱含層的卷積層和池取樣層是實現卷積神經網路特徵提取功能的核心模組。該網路模型通過採用梯度下降法最小化損失函式對網路中的權重引數逐層反向調節,通過頻繁的迭代訓練提高網路的精度。卷積神經網路的低隱層是由卷積層和最大池取樣層交替組成,高層是全連線層對應傳統多層感知器的隱含層和邏輯迴歸分類器。第一個全連線層的輸入是由卷積層和子取樣層進行特徵提取得到的特徵影象。最後一層輸出層是一個分類器,可以採用邏輯迴歸,Softmax迴歸甚至是支援向量機對輸入影象進行分類。
卷積神經網路結構包括:卷積層,降取樣層,全連結層。每一層有多個特徵圖,每個特徵圖通過一種卷積濾波器提取輸入的一種特徵,每個特徵圖有多個神經元。
卷積層:使用卷積層的原因是卷積運算的一個重要特點是,通過卷積運算,可以使原訊號特徵增強,並且降低噪音。
降取樣層:使用降取樣的原因是,根據影象區域性相關性的原理,對影象進行子取樣可以減少計算量,同時保持影象旋轉不變性。
取樣的目的主要是混淆特徵的具體位置,因為某個特徵找出來後,它的具體位置已經不重要了,我們只需要這個特徵與其他的相對位置,比如一個“8”,當我們得到了上面一個"o"時,我們不需要知道它在影象的具體位置,只需要知道它下面又是一個“o”我們就可以知道是一個'8'了,因為圖片中"8"在圖片中偏左或者偏右都不影響我們認識它,這種混淆具體位置的策略能對變形和扭曲的圖片進行識別。
全連線層:採用softmax全連線,得到的啟用值即卷積神經網路提取到的圖片特徵。
卷積層的map個數是在網路初始化指定的,而卷積層的map的大小是由卷積核和上一層輸入map的大小決定的,假設上一層的map大小是n*n、卷積核的大小是k*k,則該層的map大小是(n-k+1)*(n-k+1)。
取樣層是對上一層map的一個取樣處理,這裡的取樣方式是對上一層map的相鄰小區域進行聚合統計,區域大小為scale*scale,有些實現是取小區域的最大值,而ToolBox裡面的實現是採用2*2小區域的均值。注意,卷積的計算視窗是有重疊的,而取樣的計算視窗沒有重疊,ToolBox裡面計算取樣也是用卷積(conv2(A,K,'valid'))來實現的,卷積核是2*2,每個元素都是1/4,去掉計算得到的卷積結果中有重疊的部分。
CNN的基本結構包括兩種特殊的神經元層,其一為卷積層,每個神經元的輸入與前一層的區域性相連,並提取該區域性的特徵;其二是池化層,用來求區域性敏感性與二次特徵提取的計算層。這種兩次特徵提取結構減少了特徵解析度,減少了需要優化的引數數目。
CNN是部分連線網路,其最底層是特徵提取層(卷積層),接著是池化層(Pooling),然後可以繼續增加捲積、池化或全連線層。用於模式分類的CNN,通常在最後層使用softmax.
一般情況下,CNN的結構形式是:輸入層--> Conv層 --> Pooling層 --> (重複Conv、Pooling層) … --> FC(Full-connected)層 --> 輸出結果。通常輸入層大小一般為2的整數倍,如32,64,96,224,384等。通常卷積層使用較小的filter,如3*3,最大也就5*5。Pooling層用於對卷積結果進行降低維度,例如選擇2*2的區域對卷積層進行降低維度,則選擇2*2區域的最大值作為輸出,這樣卷積層的維度就降為之前一半。
一般地,CNN的基本結構包括兩層,其一為特徵提取層,每個神經元的輸入與前一層的區域性接受域相連,並提取該區域性的特徵。一旦該區域性特徵被提取後,它與其它特徵間的位置關係也隨之確定下來;其二是特徵對映層,網路的每個計算層由多個特徵對映組成,每個特徵對映是一個平面,平面上所有神經元的權值相等。特徵對映結構採用影響函式核小的sigmoid函式作為卷積網路的啟用函式,使得特徵對映具有位移不變性。此外,由於一個對映面上的神經元共享權值,因而減少了網路自由引數的個數。卷積神經網路中的每一個卷積層都緊跟著一個用來求區域性平均與二次提取的計算層,這種特有的兩次特徵提取結構減小了特徵解析度。
對於影象識別任務,卷積神經網路的結構一般如下圖所示。輸入層讀入經過簡單的規則化(統一大小)的影象。每一層中的單元將前一層中的一組小的區域性近鄰的單元作為輸入。這種區域性連線觀點來源於早期的感知器,並且和Hubel、Wiesel從貓科動物的視覺系統中發現的區域性感知、方向選擇神經元相一致。通過區域性感知場,神經元能夠抽取一些基本的視覺特徵,比如有向邊、結束點、邊角等等。這些特徵然後被更高層的神經元所使用。並且,適用於某個區域性的基礎特徵抽取器同樣也傾向於適用於整個影象。通過利用這種特徵,卷積神經網路利用一組分佈於影象各個不同位置但具有相同權值向量的單元,來獲取影象的特徵並構成一幅特徵圖(Feature Map)。在每個位置,來自不同特徵圖的單元得到各自不同型別的特徵。一個特徵圖中的不同單元被限制為對輸入圖中的各個不同位置的區域性資料進行同樣的操作。這種操作等同於將輸入影象對於一個小的核進行卷積。一個卷積層中通常包含多個具有不同權值向量的特徵圖,使得在同一個位置能夠獲得多種不同的特徵。如下圖,第一個隱含層包含4個特徵圖,每個特徵圖由5*5的區域性感知區域構成。一旦一個特徵被檢測到,只要其相對於其他特徵的相對位置沒有改變,那麼其在影象中的絕對位置就變得不是特別重要。因此,每個卷積層後面跟隨著一個降取樣層。降取樣層進行區域性平均和降取樣的操作,降低特徵圖的解析度,同時降低了網路輸出對於位移和變形的敏感程度。第二個隱含層進行2*2的平均化降取樣的操作。後續的卷積層和降取樣層都交替分佈連線,構成一個“雙金字塔”結構:特徵圖的數目逐漸增多,而且特徵圖的解析度逐漸降低。
由於所有權重都是通過反向傳播演算法訓練得到 ,卷積神經網路可以被看作自動合成其自身的特徵抽取器。
一般情況下卷積神經網路中,卷積層和降取樣層交替連線在一起,用於降低計算時間並逐步建立起更高的空間和資料結構不變性,並通過比較小的降取樣係數使得這些特性得以維持。
CNN的分類模型與傳統模型的不同點在於其可以直接將一幅二維影象輸入模型中,接著在輸出端即給出分類結果。其優勢在於不需複雜的預處理,將特徵抽取,模式分類完全放入一個黑匣子中,通過不斷的優化來獲得網路所需引數,在輸出層給出所需分類,網路核心就是網路的結構設計與網路的求解。這種求解結構比以往多種演算法效能更高。
CNN是一個多層的神經網路,每層由多個二維平面組成,而每個平面由多個獨立神經元組成。網路中包含簡單元(S-元)和複雜元(C-元),S-元聚合在一起組成S-面,S-面聚合在一起組成S-層。C-元、C-面和C-層之間存在類似的關係。網路的中間部分由S-層與C-層串接而成,輸入級只含一層,它直接接受二維視覺模式。樣本特徵提取步驟已嵌入到卷積神經網路模型的互聯結構中。
一般,S為特徵提取層,每個神經元的輸入與前一層的區域性感受野相連線,並提取該區域性的特徵,一旦該區域性特徵被提取,它與其它特徵之間的位置關係就被確定;C是特徵對映層,網路的每個計算層由多個特徵對映組成,每個特徵對映為一個平面,平面上所有神經元的權值相同。特徵對映結構採用影響函式核小的Sigmoid函式作為卷積網路的啟用函式,使得特徵對映具有位移不變性。由於每個對映面上的神經元權值共享,減少了網路的自由引數數目,降低了網路引數選擇的複雜度。CNN中的每一個特徵提取層(S-層)都跟著一個用來求區域性平均與二次提取的計算層(C-層),這種特有的兩次特徵提取結構使網路在識別時對輸入樣本有較高的畸變容忍能力。
CNN網路除了輸入輸出層,還有中間的卷積層,抽樣層與全連線層,將原始影象直接輸入到輸入層,原始影象的大小決定了輸入向量的尺寸,神經元提取影象的區域性特徵,每個神經元都與前一層的區域性感受野相連,通過交替出現的抽樣層(S)與卷積層(C)和最後的全連線層,在輸出層給出網路的輸出。在卷積層和抽樣層中有若干個特徵圖,每一層有多個平面,每層中各平面的神經元提取影象中特定區域的區域性特徵,如邊緣特徵,方向特徵等,在訓練時不斷修正S-層神經元的權值。同一層面上的神經元權值相同,這樣可以有相同程度的位移、旋轉不變性。由於權值共享,所以從一個平面到下個平面的對映可以看做是作卷積運算,S-層可看作是模糊濾波器,起到二次特徵提取的作用。隱層與隱層之間空間解析度遞減,每層所含的平面數遞增,這樣可用於檢測更多的特徵資訊。
卷積層中,前一層的特徵圖與一個可學習的核進行卷積,卷積的結果經過啟用函式後的輸出形成這一層的神經元,從而構成該層特徵圖。卷積層與抽樣層間隔出現,卷積層每一個輸出的特徵圖可能與前一層的幾個特徵圖的卷積建立關係。每個特徵圖可以有不同的卷積核。卷積層主要的任務就是從不同的角度來選擇前一層特徵圖的各角度特徵使其具有位移不變性。卷積的本質就是對前一層的特徵圖進行處理,來得到這一層的特徵圖。抽樣層主要作用是降低網路的空間解析度,通過降低影象的空間解析度來消除偏移和影象的扭曲。
隱層的引數個數和隱層的神經元個數無關,只和濾波器的大小和濾波器種類的多少有關。隱層的神經元個數,它和原影象,也就是輸入的大小(神經元個數)、濾波器的大小和濾波器在影象中的滑動步長都有關。
三、卷積神經網路求解
CNN通過三個方法來實現識別影象的位移、縮放和扭曲不變性,即局域感受野、權值共享和次抽樣。局域感受野指的是每一層網路的神經元只與上一層的一個小鄰域內的神經單元連線,通過局域感受野,每個神經元可以提取初級的視覺特徵,如方向線段,端點和角點等;權值共享使得CNN具有更少的引數,需要相對少的訓練資料;次抽樣可以減少特徵的解析度,實現對位移、縮放和其它形式扭曲的不變性。卷積層之後通常用一個次抽樣層來減少計算時間、建立空間和結構上的不變性。
構造好網路之後,需要對網路進行求解,如果像傳統神經網路一樣分配引數,則每一個連線都會有未知引數。而CNN採用的是權值共享,這樣一來通過一幅特徵圖上的神經元共享同樣的權值就可以大大減少自由引數,這可以用來檢測相同的特徵在不同角度表示的效果。在網路設計中通常都是抽樣層與卷積層交替出現,全連線層的前一層通常為卷積層。
在CNN中,權值更新是基於反向傳播演算法。
CNN在本質上是一種輸入到輸出的對映,它能夠學習大量的輸入與輸出之間的對映關係,而不需要任何輸入和輸出之間的精確的數學表示式,只要用已知的模式對卷積網路加以訓練,網路就具有輸入輸出對之間的對映能力。卷積網路執行的是監督訓練,所以其樣本集是由形如:輸入向量,理想輸出向量的向量對構成的。所有這些向量對,都應該是來源於網路即將模擬系統的實際“執行”結構,它們可以是從實際執行系統中採集來。在開始訓練前,所有的權都應該用一些不同的隨機數進行初始化。“小隨機數”用來保證網路不會因權值過大而進入飽和狀態,從而導致訓練失敗;“不同”用來保證網路可以正常地學習。實際上,如果用相同的數去初始化權矩陣,則網路無學習能力。
訓練演算法主要包括四步,這四步被分為兩個階段:
第一階段,向前傳播階段:
(1)、從樣本集中取一個樣本,輸入網路;
(2)、計算相應的實際輸出;在此階段,資訊從輸入層經過逐級的變換,傳送到輸出層。這個過程也是網路在完成訓練後正常執行時執行的過程。
第二階段,向後傳播階段:
(1)、計算實際輸出與相應的理想輸出的差;
(2)、按極小化誤差的方法調整權矩陣。
這兩個階段的工作一般應受到精度要求的控制。
網路的訓練過程如下:
(1)、選定訓練組,從樣本集中分別隨機地尋求N個樣本作為訓練組;
(2)、將各權值、閾值,置成小的接近於0的隨機值,並初始化精度控制引數和學習率;
(3)、從訓練組中取一個輸入模式加到網路,並給出它的目標輸出向量;
(4)、計算出中間層輸出向量,計算出網路的實際輸出向量;
(5)、將輸出向量中的元素與目標向量中的元素進行比較,計算出輸出誤差;對於中間層的隱單元也需要計算出誤差;
(6)、依次計算出各權值的調整量和閾值的調整量;
(7)、調整權值和調整閾值;
(8)、當經歷M後,判斷指標是否滿足精度要求,如果不滿足,則返回(3),繼續迭代;如果滿足就進入下一步;
(9)、訓練結束,將權值和閾值儲存在檔案中。這時可以認為各個權值已經達到穩定,分類器已經形成。再一次進行訓練,直接從檔案匯出權值和閾值進行訓練,不需要進行初始化。
四、卷積神經網路LeNet-5結構分析
CNN是一種帶有卷積結構的深度神經網路,通常至少有兩個非線性可訓練的卷積層,兩個非線性的固定卷積層(又叫Pooling Layer或降取樣層)和一個全連線層,一共至少5個隱含層。
CNN的結構受到著名的Hubel-Wiesel生物視覺模型的啟發,尤其是模擬視覺皮層V1和V2層中Simple Cell和Complex Cell的行為。
LeNet-5手寫數字識別結構(上圖)分析:
1. 輸入層:N個32*32的訓練樣本
輸入影象為32*32大小。這要比Mnist資料庫中最大的字母還大。這樣做的原因是希望潛在的明顯特徵如筆畫斷點或角點能夠出現在最高層特徵監測子感受野的中心。
2. C1層:
輸入圖片大小: 32*32
卷積窗大小: 5*5
卷積窗種類: 6
輸出特徵圖數量: 6
輸出特徵圖大小: 28*28 (32-5+1)
神經元數量: 4707 (28*28)*6)
連線數: 122304 (28*28*5*5*6)+(28*28*6)
可訓練引數: 156 5*5*6+6
用6個5×5的過濾器進行卷積,結果是在卷積層C1中,得到6張特徵圖,特徵圖的每個神經元與輸入圖片中的5×5的鄰域相連,即用5×5的卷積核去卷積輸入層,由卷積運算可得C1層輸出的特徵圖大小為(32-5+1)×(32-5+1)=28×28。
3. S2層:
輸入圖片大小: (28*28)*6
卷積窗大小: 2*2
卷積窗種類: 6
輸出下采樣圖數量:6
輸出下采樣圖大小:14*14 (28/2)*(28/2)
神經元數量: 1176 (14*14)*6
連線數: 5880 2*2*14*14*6+14*14*6
可訓練引數: 12 1*6+6
卷積和子取樣過程:
(1)、卷積過程包括:用一個可訓練的濾波器fx去卷積一個輸入的影象(第一階段是輸入的影象,後面的階段就是卷積特徵map了),然後加一個偏置bx,得到卷積層Cx。
卷積運算一個重要的特點就是,通過卷積運算,可以使原訊號特徵增強,並且降低噪音。
(2)、子取樣過程包括:每鄰域四個畫素求和變為一個畫素,然後通過標量Wx+1加權,再增加偏置bx+1,然後通過一個sigmoid啟用函式,產生一個大概縮小四倍的特徵對映圖Sx+1。
利用影象區域性相關性的原理,對影象進行子抽樣,可以減少資料處理量同時保留有用資訊。
卷積之後進行子抽樣的思想是受到動物視覺系統中的“簡單的”細胞後面跟著“複雜的”細胞的想法的啟發而產生的。
降取樣後,降取樣層S2的輸出特徵圖大小為(28÷2)×(28÷2)=14×14。
S2層每個單元的4個輸入相加,乘以一個可訓練引數,再加上一個可訓練偏置。結果通過sigmoid函式計算。可訓練係數和偏置控制著sigmoid函式的非線性程度。如果係數比較小,那麼運算近似於線性運算,下采樣相當於模糊影象。如果係數比較大,根據偏置的大小下采樣可以被看成是有噪聲的“或”運算或者有噪聲的“與”運算。每個單元的2*2感受野並不重疊,因此S2中每個特徵圖的大小是C1中特徵圖大小的1/4(行和列各1/2)。
從一個平面到下一個平面的對映可以看作是作卷積運算,S-層可看作是模糊濾波器,起到二次特徵提取的作用。隱層與隱層之間空間解析度遞減,而每層所含的平面數遞增,這樣可用於檢測更多的特徵資訊。
4. C3層:
輸入圖片大小: (14*14)*6
卷積窗大小: 5*5
卷積窗種類: 16
輸出特徵圖數量: 16
輸出特徵圖大小: 10*10 (14-5+1)
神經元數量: 1600 (10*10)*16)
連線數: 151600 1516*10*10
可訓練引數: 1516 6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+1*(6*25+1)
C3層也是一個卷積層,它同樣通過5x5的卷積核去卷積S2層,然後得到的特徵map就只有10x10個神經元,但是它有16種不同的卷積核,所以就存在16個特徵map了。這裡需要注意的一點是:C3中的每個特徵map是連線到S2中的所有6個或者幾個特徵map的,表示本層的特徵map是上一層提取到的特徵map的不同組合(這個做法也並不是唯一的)。
C3中每個特徵圖由S2中所有6個或者幾個特徵map組合而成。為什麼不把S2中的每個特徵圖連線到每個C3的特徵圖呢?原因有2點。第一,不完全的連線機制將連線的數量保持在合理的範圍內。第二,也是最重要的,其破壞了網路的對稱性。由於不同的特徵圖有不同的輸入,所以迫使他們抽取不同的特徵。
5. S4層:
輸入圖片大小: (10*10)*16
卷積窗大小: 2*2
卷積窗種類: 16
輸出下采樣圖數量: 16
輸出下采樣圖大小: (5*5)*16
神經元數量: 400 (5*5)*16
連線數: 2000 (2*2*5*5*16)+(5*5*16)
可訓練引數: 32 (1+1)*16
S4層是一個下采樣層,由16個5*5大小的特徵圖構成。特徵圖中的每個單元與C3中相應特徵圖的2*2鄰域相連線,跟C1和S2之間的連線一樣。S4層有32個可訓練引數(每個特徵圖1個因子和一個偏置)和2000個連線。
6. C5層:
輸入圖片大小: (5*5)*16
卷積窗大小: 5*5
卷積窗種類: 120
輸出特徵圖數量: 120
輸出特徵圖大小: 1*1 (5-5+1)
神經元數量: 120 (1*120)
連線數: 48120 5*5*16*120*1+120*1
可訓練引數: 48120 5*5*16*120+120
C5層是一個卷積層,有120個特徵圖。每個單元與S4層的全部16個單元的5*5鄰域相連。由於S4層特徵圖的大小也為5*5(同濾波器一樣),故C5特徵圖的大小為1*1,這構成了S4和C5之間的全連線。之所以仍將C5標示為卷積層而非全相聯層,是因為如果LeNet-5的輸入變大,而其他的保持不變,那麼此時特徵圖的維數就會比1*1大。C5層有48120個可訓練連線。
7. F6層:
輸入圖片大小: (1*1)*120
卷積窗大小: 1*1
卷積窗種類: 84
輸出特徵圖數量: 1
輸出特徵圖大小: 84
神經元數量: 84
連線數: 10164 120*84+84
可訓練引數: 10164 120*84+84
F6層有84個單元(之所以選這個數字的原因來自於輸出層的設計),與C5層全相連。有10164個可訓練引數。如同經典神經網路,F6層計算輸入向量和權重向量之間的點積,再加上一個偏置。然後將其傳遞給sigmoid函式產生單元i的一個狀態。
8. OUTPUT層:
輸入圖片大小: 1*84
輸出特徵圖數量: 1*10
最後,輸出層由歐式徑向基函式(EuclideanRadial Basis Function)單元組成,每類一個單元,每個有84個輸入。換句話說,每個輸出RBF單元計算輸入向量和引數向量之間的歐式距離。輸入離引數向量越遠,RBF輸出的越大。一個RBF輸出可以被理解為衡量輸入模式和與RBF相關聯類的一個模型的匹配程度的懲罰項。用概率術語來說,RBF輸出可以被理解為F6層配置空間的高斯分佈的負log-likelihood。給定一個輸入模式,損失函式應能使得F6的配置與RBF引數向量(即模式的期望分類)足夠接近。這些單元的引數是人工選取並保持固定的(至少初始時候如此)。這些引數向量的成分被設為-1或1。雖然這些引數可以以-1和1等概率的方式任選,或者構成一個糾錯碼,但是被設計成一個相應字元類的7*12大小(即84)的格式化圖片。這種表示對識別單獨的數字不是很有用,但是對識別可列印ASCII集中的字串很有用。
使用這種分佈編碼而非更常用的“1 of N”編碼用於產生輸出的另一個原因是,當類別比較大的時候,非分佈編碼的效果比較差。原因是大多數時間非分佈編碼的輸出必須為0。這使得用sigmoid單元很難實現。另一個原因是分類器不僅用於識別字母,也用於拒絕非字母。使用分佈編碼的RBF更適合該目標。因為與sigmoid不同,他們在輸入空間的較好限制的區域內興奮,而非典型模式更容易落到外邊。
RBF引數向量起著F6層目標向量的角色。需要指出這些向量的成分是+1或-1,這正好在F6 sigmoid的範圍內,因此可以防止sigmoid函式飽和。實際上,+1和-1是sigmoid函式的最大彎曲的點處。這使得F6單元執行在最大非線性範圍內。必須避免sigmoid函式的飽和,因為這將會導致損失函式較慢的收斂和病態問題。
五、卷積神經網路注意事項
1. 資料集的大小和分塊
資料驅動的模型一般依賴於資料集的大小,CNN和其它經驗模型一樣,能適用於任意大小的資料集,但用於訓練的資料集應該足夠大,能夠覆蓋問題域中所有已知可能出現的問題。設計CNN的時候,資料集中應該包含三個子集:訓練集、測試集、驗證集。訓練集應該包含問題域中的所有資料,並在訓練階段用來調整網路權值。測試集用來在訓練過程中測試網路對於訓練集中未出現的資料的分類效能。根據網路在測試集上的效能情況,網路的結構可能需要做出調整,或者增加訓練迴圈的次數。驗證集中的資料同樣應該包含在測試集合訓練集中沒有出現過的資料,用於在確定網路結構後能夠更加好的測試和衡量網路的效能。Looney等人建議,資料集中的65%用於訓練,25%用於測試,剩餘的10%用於驗證。
2. 資料預處理
為了加速訓練演算法的收斂速度,一般都會採用一些資料預處理技術,這其中包括:去除噪聲、輸入資料降維、刪除無關資料等。資料的平衡化在分類問題中異常重要,一般認為訓練集中的資料應該相對於標籤類別近似於平均分佈,也就是每一個類別標籤所對應的資料量在訓練集中是基本相等的,以避免網路過於傾向於表現某些分類的特點。為了平衡資料集,應該移除一些過度富餘的分類中的資料,並相應的補充一些相對樣例稀少的分類中的資料。還有一個辦法就是複製一部分這些樣例稀少分類中的資料,並在這些輸入資料中加入隨機噪聲。
3. 資料規則化
將資料規則化到一個統一的區間(如[0,1])中具有很重要的優點:防止資料中存在較大數值的資料造成數值較小的資料對於訓練效果減弱甚至無效化。一個常用的方法是將輸入和輸出資料按比例調整到一個和啟用函式(sigmoid函式等)相對應的區間。
4. 網路權值初始化
CNN的初始化主要是初始化卷積層和輸出層的卷積核(權重)和偏置。
網路權值初始化就是將網路中的所有連線權值(包括閾值)賦予一個初始值。如果初始權值向量處在誤差曲面的一個相對平緩的區域的時候,網路訓練的收斂速度可能會異常緩慢。一般情況下,網路的連線權值和閾值被初始化在一個具有0均值的相對小的區間內均勻分佈,比如[-0.30, +0.30]這樣的區間內。
5. BP演算法的學習速率
如果學習速率n選取的比較大則會在訓練過程中較大幅度的調整權值w,從而加快網路訓練的速度,但這會造成網路在誤差曲面上搜索過程中頻繁抖動且有可能使得訓練過程不能收斂,而且可能越過一些接近優化w。同樣,比較小的學習速率能夠穩定的使得網路逼近於全域性最優點,但也有可能陷入一些區域性最優區域。對於不同的學習速率設定都有各自的優缺點,而且還有一種自適應的學習速率方法,即n隨著訓練演算法的執行過程而自行調整。
6. 收斂條件
有幾個條件可以作為停止訓練的判定條件,訓練誤差、誤差梯度和交叉驗證。一般來說,訓練集的誤差會隨著網路訓練的進行而逐步降低。
7. 訓練方式
訓練樣例可以有兩種基本的方式提供給網路訓練使用,也可以是兩者的結合:逐個樣例訓練(EET)、批量樣例訓練(BT)。在EET中,先將第一個樣例提供給網路,然後開始應用BP演算法訓練網路,直到訓練誤差降低到一個可以接受的範圍,或者進行了指定步驟的訓練次數。然後再將第二個樣例提供給網路訓練。EET的優點是相對於BT只需要很少的儲存空間,並且有更好的隨機搜尋能力,防止訓練過程陷入區域性最小區域。EET的缺點是如果網路接收到的第一個樣例就是劣質(有可能是噪音資料或者特徵不明顯)的資料,可能使得網路訓練過程朝著全域性誤差最小化的反方向進行搜尋。相對的,BT方法是在所有訓練樣例都經過網路傳播後才更新一次權值,因此每一次學習週期就包含了所有的訓練樣例資料。BT方法的缺點也很明顯,需要大量的儲存空間,而且相比EET更容易陷入區域性最小區域。而隨機訓練(ST)則是相對於EET和BT一種折衷的方法,ST和EET一樣也是一次只接受一個訓練樣例,但只進行一次BP演算法並更新權值,然後接受下一個樣例重複同樣的步驟計算並更新權值,並且在接受訓練集最後一個樣例後,重新回到第一個樣例進行計算。ST和EET相比,保留了隨機搜尋的能力,同時又避免了訓練樣例中最開始幾個樣例如果出現劣質資料對訓練過程的過度不良影響。
以上整理的內容主要摘自:
1. 《Gradient-Based Learning Applied to Document Recognition》,1998,Yann LeCun
2. 《卷積神經網路在影象識別上的應用研究》,2012,碩論,浙江大學
3. 《卷積神經網路的研究與應用》,2013,碩論,南京林業大學
4. 《卷積神經網路及其應用》,2014,碩論,大連理工大學
5. 《基於卷積神經網路的深度學習演算法與應用研究》,2014,碩論,浙江工商大學