目錄:
1. 卷積神經網絡概念
2. 卷積神經網絡的特點
2.1 局部區域連接
2.2 權值共享
2.3 降採樣
3. 卷積神經網絡的結構
3.1 卷積層
3.2 池化層
4. 卷積神經網絡的研究進展
1. 卷積神經網絡概念
人工神經網絡(Artificial Neural Networks,ANN)是一種模擬生物神經系統的結構和行為,進行分布式並行信息處理的算法數學模型。ANN通過調整內部神經元與神經元之間的權重關係,從而達到處理信息的目的。而卷積神經網絡(Convolutional Neural Network,CNN)是一種前饋神經網絡,它由若干卷積層和池化層組成,尤其在圖像處理方面CNN的表現十分出色。
1962年,Hubel和Wiesel [1]通過對貓腦視覺皮層的研究,首次提出了一種新的概念「感受野」,這對後來人工神經網絡的發展有重要的啟示作用。感受野(Receptive Field)是卷積神經網絡每一層輸出的特徵圖(feature map)上的像素點在輸入圖片上映射的區域大小[2]。再通俗點的解釋是,特徵圖上的一個點對應輸入圖上的區域。1980年,Fukushima[3]基於生物神經學的感受野理論提出了神經認知機和權重共享的卷積神經層,這被視為卷積神經網絡的雛形。1989年,LeCun[4]結合反向傳播算法與權值共享的卷積神經層發明了卷積神經網絡,並首次將卷積神經網絡成功應用到美國郵局的手寫字符識別系統中。1998年,LeCun[5]提出了卷積神經網絡的經典網絡模型LeNet-5,並再次提高手寫字符識別的正確率。
CNN的基本結構由輸入層、卷積層(convolutional layer)、池化層(pooling layer,也稱為取樣層)、全連接層及輸出層構成。卷積層和池化層一般會取若干個,採用卷積層和池化層交替設置,即一個卷積層連接一個池化層,池化層後再連接一個卷積層,依此類推。由於卷積層中輸出特徵圖的每個神經元與其輸入進行局部連接,並通過對應的連接權值與局部輸入進行加權求和再加上偏置值,得到該神經元輸入值,該過程等同於卷積過程,CNN也由此而得名[6]。
2. 卷積神經網絡的特點
卷積神經網絡由多層感知機(MLP)演變而來,由於其具有局部區域連接、權值共享、降採樣的結構特點,使得卷積神經網絡在圖像處理領域表現出色。卷積神經網絡相比於其他神經網絡的特殊性主要在於權值共享與局部連接兩個方面。權值共享使得卷積神經網絡的網絡結構更加類似於生物神經網絡。局部連接不像傳統神經網絡那樣,第n-1層的每一神經元都與第n層的所有神經元連接,而是第n-1層的神經元與第n層的部分神經元之間連接。這兩個特點的作用在於降低了網絡模型的複雜度,減少了權值的數目。
2.1 局部區域連接
1962年,Hubel和Wiesel[1]研究生物神經學裡面的視覺分層結構而提出感受野的概念,大腦皮層的視覺神經元就是基於局部區域刺激來感知信息的。局部區域連接的思想就是受啟發於視覺神經元的結構。
在傳統的神經網絡結構中,神經元之間的連接是全連接的,即n-1層的神經元與n層的所有神經元全部連接。但是在卷積神經網絡中,n-1層與n 層的部分神經元連接。圖1展示了全連接與局部連接的區別之處,左圖為全連接示意圖,由圖可以看出前一層到後一層神經元之間都有邊存在,每條邊都有參數,由此可見全連接的參數很多。右邊為局部連接,由圖中可以看出僅存在少量的邊,可見參數減少了很多。對比左右兩圖可以明顯看出連接數成倍的減少,相應的參數也會減少。
圖1:全連接(左圖)與局部連接(右圖)的對比示意圖
2.2 權值共享
1998年,LeCun[5]發布了LeNet-5網絡架構,權值共享這個詞最開始是由LeNet-5模型提出來的。雖然現在大多數人認為,2012年的AlexNet網絡[7]是深度學習的開端,但是CNN的開端可以追溯到LeNet-5模型。LeNet-5模型的幾個特性在2010年初的卷積神經網絡研究中被廣泛的使用-其中一個就是權值共享。
在卷積神經網絡中,卷積層中的卷積核(或稱之為濾波器)類似於一個滑動窗口,在整個輸入圖像中以特定的步長來回滑動,經過卷積運算之後,從而得到輸入圖像的特徵圖,這個特徵圖就是卷積層提取出來的局部特徵,而這個卷積核是共享參數的。在整個網絡的訓練過程中,包含權值的卷積核也會隨之更新,直到訓練完成。
那到底什麼是權值共享呢?
其實權值共享就是整張圖片在使用同一個卷積核內的參數。比如一個3*3*1的卷積核,這個卷積核內9個的參數被整張圖片共享,而不會因為圖像內位置的不同而改變卷積核內的權係數。說的再通俗一點,就是用一個卷積核不改變其內權係數的情況下卷積處理整張圖片。當然,CNN中每一個卷積層不會只有一個卷積核的,這樣說只是為了方便解釋。
權值共享的優點是什麼呢?
一是,權值共享的卷積操作保證了每一個像素都有一個權係數,只是這些係數被整個圖片共享,因此大大減少了卷積核中參數量,降低了網絡的複雜度。二是,傳統的神經網絡和機器學習方法需要對圖像進行複雜的預處理提取特徵,將得到特徵再輸入到神經網絡中。而加入卷積操作就可以利用圖片空間上的局部相關性,自動的提取特徵。
那為什麼卷積層會有多個卷積核呢?
因為權值共享意味著每一個卷積核只能提取到一種特徵,為了增加CNN的表達能力,需要設置多個卷積核。但是,每個卷積層中卷積核的個數是一個超參數。
2.3 降採樣
降採樣是卷積神經網絡的另一重要概念,通常也稱之為池化(Pooling)。最常見的方式有最大值(Max)池化、最小值(Min)池化、平均值(Average)池化。池化的好處是降低了圖像的解析度,整個網絡也不容易過擬合。最大值池化如圖2所示。
圖2:最大池化過程
在圖2是最大池化過程中,輸入圖像大小為4*4,在每2*2的區域中計算最大值。例如: 。由於步長為2,因此每2*2的區域互不重疊,最後輸出的池化特徵大小為2*2,這個過程中解析度變為原來的一半。
3. 卷積神經網絡的結構
在圖像處理中,卷積神經網絡提取的特徵比之前的手工特徵效果更好,這是由於CNN特殊的組織結構來決定的,卷積層和池化層的共同作用使得CNN能提取出圖像中較好的特徵。卷積神經網絡的網絡模型多種多樣,但一個卷積神經網絡模型一般由若干個卷積層、池化層和全連接層組成。卷積層的作用是提取圖像的特徵;池化層的作用是對特徵進行抽樣,可以使用較少訓練參數,同時還可以減輕網絡模型的過擬合程度。卷積層和池化層一般交替出現在網絡中,稱一個卷積層加一個池化層為一個特徵提取過程,但是並不是每個卷積層後都會跟池化層,大部分網絡只有三層池化層。網絡的最後一般為1~2層全連接層,全連接層負責把提取的特徵圖連接起來,最後通過分類器得到最終的分類結果。
圖3:AlexNet網絡架構圖
圖3所示的是,2012年Krizhevsky等人[7]提出的卷積神經網絡結構,該模型是雙GPU並行結構,在每個GPU中放置一半的神經元,GPU之間的通信只在某些層進行。AlexNet網絡主要由5層卷積層、3層池化層和2層全連接層組成。
3.1 卷積層
在卷積層中,通常包含多個可學習的卷積核,上一層輸出的特徵圖與卷積核進行卷積操作,即輸入項與卷積核之間進行點積運算,然後將結果送入激活函數,就可以得到輸出特徵圖。每一個輸出特徵圖可能是組合卷積多個輸入特徵圖的值。卷積層l的第j單元的輸出值的計算為公式(1),其中表示選擇的輸入特徵圖的集合,k表示可學習的卷積核。圖4展示了卷積層的具體操作過程。
圖4:卷積操作示意圖
圖4為二維卷積層示例,通常把卷積核k看作一個滑動窗口,這個滑動窗口以設定的步長向前滑動。這裡輸入圖像的大小是4*4即M=4,卷積核大小為2*2即k=2,步長為1即s=1,根據卷積層輸出計算公式(2)可以計算輸出圖像的大小N=3。
圖4的卷積過程是:4*4輸入圖像與3*3卷積核進行卷積,得到3*3的輸出圖像。這樣的卷積存在兩個缺點:(1)每次卷積都會導致圖像尺寸的變小,如果圖像很小、進行卷積的次數很多,最後可能只會剩下一個像素。(2)輸入圖像的矩陣邊緣像素只被計算過一次,而中間像素被卷積計算多次,這就意味著丟失圖像邊緣信息。為了解決這兩個問題,就需要對輸入圖像進行填充(Padding)。
圖5:對輸入圖像進行Padding
圖5是將圖4中輸入圖像矩陣周圍填充一層像素,通常填充的元素為0,填充的像素數為1即P=1。根據卷積層輸出計算公式(3)可以計算輸出圖像的大小N=5。
圖5中的紅色像素在圖4中是中間像素,被卷積計算多次,圖5中綠色像素在圖4中是邊緣像素,只能被計算一次,可以明顯看到在卷積過程中丟失了圖像的邊緣信息。但是在圖5中綠色像素被填充後,不再是邊緣像素,可以被計算多次。輸出圖像中黑色邊框的邊緣像素是受輸入圖像中黑色邊框的像素值的影響,削弱了邊緣信息丟失的缺點。另外,根據公式(3)輸出卷積特徵圖變為5*5,解決了卷積會使圖像變小的缺點。
常見的填充方式有Valid和Same填充:
在計算機視覺領域,k通常是奇數,一方面可以保證使用 Same 填充時填充像素數P是整數,對原圖片的填充是對稱的;另一方面奇數寬度的卷積核具有一個中心像素點,可以表示卷積核的位置。在我的例子中卷積核的寬度是2為偶數,所以填充後再卷積沒有達到和原始圖像一樣的大小。
3.2 池化層
池化層通常出現在卷積層之後,二者相互交替出現,並且每個卷積層都與一個池化層一一對應。池化層l中激活值的計算為公式(4):
其中,down(.)表示池化函數,常用的池化函數有Mean-Pooling(均值池化)、Max-Pooling(最大值池化)、Min-Pooling(最小值池化)、Stochastic-Pooling(隨機池化)等,為偏置,為乘數殘差,表示第l層所採用的池化框大小為 。對於最大值池化來說,是選取輸入圖像中大小為的非重疊滑動框內所有像素的最大值,顯然,對於非重疊池化來說,輸出的特徵圖在像素上縮小了倍。池化層比卷積層更大幅度的減少了連接個數,也就是說降低了特徵的維度,從而避免過擬合,同時還使得池化輸出的特徵具有平移不變性。圖6展示了三種池化方式的運算過程。
圖6:三種池化方式的計算過程
三種池化方式各有優缺點,均值池化是對所有特徵點求平均值,而最大值池化是對特徵點的求最大值。而隨機池化則介於兩者之間,通過對像素點按數值大小賦予概率,再按照概率進行亞採樣,在平均意義上,與均值採樣近似,在局部意義上,則服從最大值採樣的準則。根據Boureau理論[9]可以得出結論,在進行特徵提取的過程中,均值池化可以減少鄰域大小受限造成的估計值方差,但更多保留的是圖像背景信息;而最大值池化能減少卷積層參數誤差造成估計均值誤差的偏移,能更多的保留紋理信息。隨機池化雖然可以保留均值池化的信息,但是隨機概率值確是人為添加的,隨機概率的設置對結果影響較大,不可估計。
4. 卷積神經網絡的研究進展
早在2006年以前,已有人提出一種學習效率很高的深度學習模型-CNN。在20世紀80年代和90年代,一些研究者發表了CNN的相關研究工作,且在幾個模式識別領域尤其是手寫數字識別中取得了良好的識別效果[10][11]。然而此時的CNN只適合做小圖片的識別,對於大規模數據,識別效果不佳。
2012年,Krizhevsky等人[12]使用擴展了深度的CNN在ImageNet大規模視覺識別挑戰競賽(ImageNet Large Scale Visual Recognition Challenge,LSVRC)中取得了當時最佳的分類效果,使得CNN越來越受研究者們的重視。AlexNet在增加網絡深度的同時,採用了很多新技術:採用ReLU代替飽和非線性函數tanh函數,降低了模型的計算複雜度,模型的訓練速度也提升了幾倍;通過Dropout技術在訓練過程中將中間層的一些神經元隨機置為0,使模型更具有魯棒性,也減少了全連接層的過擬合;而且還通過圖像平移、圖像水平鏡像變換、改變圖像灰度等方式來增加訓練樣本,從而減少過擬合。
2014年,Szegedy等人[13]大大增加了CNN的深度,提出了一個超過20層的CNN結構,稱為GoogleNet。在GoogleNet的結構中採用了3種類型的卷積操作,分別是1*1、3*3、5*5,該結構的主要特點是提升了計算機資源的利用率,它的參數比AlexNet少了12倍,而且GoogleNet的準確率更高,在LSVRC-14中獲得了圖像分類「指定數據」組的第1名。
2014年,Simonyan等人[14]在其發表的文章中探討了「深度」對於CNN網絡的重要性,該文通過在現有的網絡結構中不斷增加具有3*3卷積核的卷積層來增加網絡的深度,實驗結果表明,當權值層數達到16~19時,模型的性能能夠得到有效的提升,該文中的模型也被稱為VGG模型。VGG模型用具有小卷積核的多個卷積層替換一個具有較大卷積核的卷積層,如用大小均為3*3卷積核的3層卷積層代替一層具有7*7卷積核的卷積層,這種替換方式減少了參數的數量,而且也能夠使決策函數更具有判別性。VGG模型在LSVRC-14競賽中,得到了圖像分類"指定數據"組的第2名,該模型證明了深度在視覺表示中的重要性。
在2014年有趣的是,GoogleNet和VGGNet兩種網絡架構同時參加LSVRC的比賽,並分別取得了分類的第一名和第二名。但是由於VGG與GoogleNet的深度都比較深,所以網絡結構比較複雜,訓練時間長,而且VGG還需要多次微調網絡的參數。
2015年,He等人[15]採用殘差網絡(Residual Networks,ResNet)來解決梯度消失的問題。ResNet的主要特點是跨層連接,它通過引入捷徑連接技術(shortcut connections)將輸入跨層傳遞並與卷積的結果相加。在ResNet中只有一個池化層,它連接在最後一個卷積層後面。ResNet使得底層的網絡能夠得到充分訓練,準確率也隨著深度的加深而得到顯著提升。將深度為152層的ResNet用於LSVRC-15的圖像分類比賽中,它獲得了第1名的成績。在該文獻中,還嘗試將ResNet的深度設置為1000,並在CIFAR-10圖像處理數據集中驗證該模型。
近年來,CNN的局部連接、權值共享、池化操作及多層結構等優良特性使其受到了許多研究者的關注。CNN通過權值共享減少了需要訓練的權值個數、降低了網絡的計算複雜度,同時通過池化操作使得網絡對輸入的局部變換具有一定的不變性如平移不變性、縮放不變性等,提升了網絡的泛化能力。CNN將原始數據直接輸入到網絡中,然後隱性地從訓練數據中進行網絡學習,避免了手工提取特徵、從而導致誤差累積的缺點,其整個分類過程是自動的。雖然CNN所具有的這些特點使其已被廣泛應用於各種領域中,但其優勢並不意味著目前存在的網絡沒有瑕疵。如何有效地訓練層級很深的深度網絡模型仍舊是一個有待研究的問題。儘管圖像分類任務能夠受益於層級較深的卷積網絡,但一些方法還是不能很好地處理遮擋或者運動模糊等問題。
【Reference】
[1] Hubel D H, Wiesel T N. Receptive fields, binocular interaction and functional architecture in the cat's visual cortex[J]. The Journal of physiology, 1962, 160(1): 106-154.
[2] 卷積神經網絡中感受野的詳細介紹 【推薦閱讀】
[3] Fukushima K, Miyake S. Neocognitron: A self-organizing neural network model for a mechanism of visual pattern recognition[M]//Competition and cooperation in neural nets. Springer, Berlin, Heidelberg, 1982: 267-285.
[4] LeCun Y, Boser B, Denker J S, et al. Backpropagation applied to handwritten zip code recognition[J]. Neural computation, 1989, 1(4): 541-551.
[5] LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.
[6] 周飛燕, 金林鵬, 董軍. 卷積神經網絡研究綜述[J]. 計算機學報, 2017, 40(6): 1229-1251.
[7] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.
[8] 如何理解卷積神經網絡中的權值共享 - chaibubble - CSDN博客
https://blog.csdn.net/chaipp0607/article/details/73650759
[9] Boureau Y L, Bach F, LeCun Y, et al. Learning mid-level features for recognition[J]. 2010.
[10]Lawrence S, Giles C L, Tsoi A C, et al. Face recognition: A convolutional neural-network approach[J]. IEEE transactions on neural networks, 1997, 8(1): 98-113.
[11]Nebauer C. Evaluation of convolutional neural networks for visual recognition[J]. IEEE Transactions on Neural Networks, 1998, 9(4): 685-696.
[12] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.
[13]Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9.
[14]Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
[15] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.