南京理工大學 金 釗
在1943年的一篇論文[2]中,McCulloch教授提出了最早的神經網絡數學模型。而Minsky[3]教授在1969年的論文中又指出此類模型只能解決線性不可分問題。隨后神經網絡學習界的研究則一直止步不前,直到Alex教授在2012年利用深度學習模型AlexNet贏得了ImageNet舉辦的圖像分類競賽,才將深度學習和神經網絡的研究帶入了一個新的高度。
由于在線性模型中,模型輸入各項經過加權處理并求和即可得到輸出值,而多層的線性網絡與單層的線性網絡在表達能力上并沒有任何區別,所以這也就限制了線性神經網絡所能解決問題的能力。而現代神經網絡常使用激活函數(ReLU, Sigmoid和Tanh)來構建神經元。同時為了更好的進行大尺寸圖像處理,一般會構建多層卷積神經網絡,正如LeCun[4]教授在1998年所提出的LeNet-5模型,此類神經網絡結構通常包括輸入層、卷積層、池化層、全連接層和Softmax層。
Alex[1]在2012年所構建的AlexNet(如圖1所示)則成為了現代卷積神經網絡的標桿。其模型包含了5層卷積層和3層全連接層。而自AlexNet之后,卷積神經網絡又開始向兩個不同的方向發展,一個是以谷歌的Inception Net為代表的改變卷積神經網絡結構,另一個則是以VGGNet和ResNet為代表的加深神經網絡的深度。本文將對后一類深度卷積神經網絡的結構進行探討與分析。
VGGNet是由牛津大學計算機視覺組[5]在2014年ILSVRC圖像分類比賽大會上所提出的一種從11層到19層的深層卷積神經網絡模型。其基本結構與AlexNet非常相似,其擁有5段卷積,每段中又含有2-4個3*3的小型卷積核的卷積層,并且每卷積段末尾都會連接一個2*2的最大池化層,所以這樣的模型每段輸出的圖片尺寸都會縮小,而輸出的通道數則會增加。VGGNet模型的特點就在于重復使用了3*3的小型卷積核的堆砌結構,因為由三個3*3卷積核串聯可以達到7*7卷積核的感受視野大小,而其包含的參數值卻能減半。所以這樣方法搭建起來神經網絡具有更強的特征提取能力和較少的參數值。而其簡單明了的網絡結構更提高了它的通用性和可拓展性。
在本文的神經網絡模型建立和測試中,利用了谷歌的Tensorflow 1.5.0開源神經網絡框架,并通過Python在Cuda 9.1和cuDNN V7.0.5的編譯環境下進行測試。測試集則為MNIST手寫體數字識別數據集。
首先通過ReLU激活函數建立一個包含兩個卷積層的模型作為此次測試的參照模型,其兩層卷積核都為5*5,在Dropout為0.5,學習率為0.0001的條件下進行30萬步的學習訓練后,其識別準確度可以達到98.28%。

圖1 AlexNet神經網絡模型[1]
之后根據[5]論文中的模型,首先構建了一個包含5段卷積層(后三段中都包含有1*1的卷積核,用于線性變換)和3個全連接層的16層神經網絡,在用與參照模型相同的學習參數下訓練后可以得到97.46%的準確度,在減少一半的學習率后,可以使準確度提高至98.15%。
再利用相似的方法構建一個19層VGGNet卷積神經網絡,但在用與參照模型相同的學習參數下訓練時,其識別準確度在隨訓練步數增加一段時間后便又降低并保持在了20%以下。究其原因,可能是由于過高的學習率,導致參數更新幅度過大,導致其在最優值兩側波動過大。另外為防止過擬合而設置的Dropout rate也會影響參數值的更新。所以在利用衰減系數對學習率進行優化后,其最終的準確度提高至98.30%。
ResNet(Residual Neural Network)是由微軟亞洲研究院的Kaiming He[6]等人在2015年ILSVRC圖像分類比賽中所提出的一種具有向前回路的極深層卷積神經網絡。雖然計算機各界均認為加深神經網絡的深度可以大大提升其識別能力[7],但在ResNet發明之前,傳統神經網絡的訓練難度會隨著其深度的增加而大幅增加,而準確度卻沒能得到相應的提升。而ResNet則通過將原始的輸入值直接傳輸到后面的層中的方法,減少了由過深的卷積層數所帶來的訓練集誤差(即如上節所出現的,模型準確度隨著層數增加先增加后減少的現象)。而每段神經網絡所學習的目標也從原來的輸出值變成了輸出和輸入值之間的差,即殘差值。這種方法大大簡化了模型的學習難度。
在Tensorflow框架中可以利用collection和contrib.slim庫來快速的設計ResNet的模塊組。在本文中搭建了一個包含四個模塊的34層的ResNet神經網絡模型,模塊中每層的卷積核大小都是3*3,每個block中包含有兩個卷積層,信號同時輸入給了輸入端和輸出端。在不同通道數的模塊間還有將向前信號升維的一個線性映射變換的步驟。首先利用參照模型的參數對此模型進行訓練,發現其準確率在達到峰值后出現了下降,在改變了Dropout rate后,經過了相同步數的訓練后,模型的準確度達到了99.06%,其原因可能是由于本測試所使用的訓練集的圖像尺寸過小,過大的Dropout rate會使得訓練集中圖像特征的丟失從而造成模型識別誤差。測試中,學習率的設置對此模型識別精度的提升并沒有幫助。另外隨著神經網絡層數的增加,模型所包含的參數也在大幅增加,這直接導致了其訓練時所占用的顯存空間的大幅增加。
ResNet和之前的VGGNet模型的基礎結構非常類似,都廣泛利用了多層3*3小卷積核的堆積的構架,主要區別就在于ResNet模型還包含有了許多支路能夠將前面的信號完整的傳輸到后面層中。而這項改進大幅減少了整個網絡的訓練時間,同時神經網絡的深度從VGGNet最多的19層增加到了ResNet模型的152層。隨著網絡層數的增加,其特征提取和識別能力也有了顯著的提升。
本文通過在Tensor flow中的建模和實際訓練發現,VGGNet神經網絡隨著層數的增加,其對于學習率和Dropout rate等訓練參數設置的敏感度也隨之增加。如果不經過仔細的參數設置,其模型很難達到所預想的識別精度。相比之下,ResNet網絡模型的構架則更加穩定(robust),雖然其層數比普通神經網絡大幅增加,但學習率設置并不需要過多的降低,所以其模型的訓練難度相比VGGNet并沒有過多的增加,而識別精度卻大幅的提高了(本文中測試識別錯誤率降低了近49%)。
從神經網絡模型的復雜程度上來看,VGGNet模型的編譯難度較低,通用型強,在某些精度要求不高的平臺上依然被沿用著。而ResNet模型則代表了深度學習最前沿的發展方向,其能夠支持極深的神經網絡模型的特點,大幅簡化了深層神經網絡模型的訓練與運用。正如Eldan在其2016年的論文[8]中所闡述的,深層向前通道神經網絡模型所能達到的識別能力將是傳統堆積模型所無法比擬的。本文也通過在Tensorflow中的建模與訓練證實了這一點。而最新一代的谷歌神經識別網絡Inception Net V4中也開始融入ResNet模型的特點[9]。所以未來深層卷積神經網絡的發展將引領整個深度學習界的發展,從而大大推動其在圖像識別等領域更廣泛的運用。
[1]Alex Krizhevsky,Ilya Sutskever,Geoffrey E.Hinton.ImageNet Classification with Deep Convolutional Neural Networks[J].NIPS 2012.
[2]McCulloch W,Pitts W.A logical Calculus of the Ideas Immanent in Nervous Activaty[J].Bulletion of Mathematical Biophysics Vol 5,1943.
[3]Maevin M,Seymour P,Perceptrons:An Introduction to Computational Geometry[M].1969:68-69.
[4]LeCun Y,Bottou L,Bengio Y,et al.Gradient-based learning applied to document recognition[J].Proceeding of the IEEE,1998.
[5]K.Simonyan,A.Zisserman.Very Deep Convolutional Networks for Large-Scale Image Recognition[J].arXiv technical report,2014.
[6]Kaiming He,X.Zhang,S.Ren,J.Sun.Deep Residual Learning for Image Recognition[J].2015.arXiv:1512.03385.
[7]George E.Dahl,Tara N.Sainath,Geoffrey E.Hinton.Improving deep neural networks for LVCSR using rectified linear units and dropout[J].Proceeding of the IEEE,2013.
[8]Ronen Eldan,Ohad Shamir.The Power of Depth for Feedforward Neural Networks.2016 COLT.
[9]Christian Szegedy,Sergey Ioffe,Vincent V,Alex A.Inceptionv4,Inception-ResNet and the Impact of Residual Connections on Learning[J].2016.arXiv:1602.07261v2.