南京理工大學(xué) 金 釗
在1943年的一篇論文[2]中,McCulloch教授提出了最早的神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)模型。而Minsky[3]教授在1969年的論文中又指出此類模型只能解決線性不可分問題。隨后神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)界的研究則一直止步不前,直到Alex教授在2012年利用深度學(xué)習(xí)模型AlexNet贏得了ImageNet舉辦的圖像分類競賽,才將深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的研究帶入了一個新的高度。
由于在線性模型中,模型輸入各項經(jīng)過加權(quán)處理并求和即可得到輸出值,而多層的線性網(wǎng)絡(luò)與單層的線性網(wǎng)絡(luò)在表達能力上并沒有任何區(qū)別,所以這也就限制了線性神經(jīng)網(wǎng)絡(luò)所能解決問題的能力。而現(xiàn)代神經(jīng)網(wǎng)絡(luò)常使用激活函數(shù)(ReLU, Sigmoid和Tanh)來構(gòu)建神經(jīng)元。同時為了更好的進行大尺寸圖像處理,一般會構(gòu)建多層卷積神經(jīng)網(wǎng)絡(luò),正如LeCun[4]教授在1998年所提出的LeNet-5模型,此類神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)通常包括輸入層、卷積層、池化層、全連接層和Softmax層。
Alex[1]在2012年所構(gòu)建的AlexNet(如圖1所示)則成為了現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)的標(biāo)桿。其模型包含了5層卷積層和3層全連接層。而自AlexNet之后,卷積神經(jīng)網(wǎng)絡(luò)又開始向兩個不同的方向發(fā)展,一個是以谷歌的Inception Net為代表的改變卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),另一個則是以VGGNet和ResNet為代表的加深神經(jīng)網(wǎng)絡(luò)的深度。本文將對后一類深度卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進行探討與分析。
VGGNet是由牛津大學(xué)計算機視覺組[5]在2014年ILSVRC圖像分類比賽大會上所提出的一種從11層到19層的深層卷積神經(jīng)網(wǎng)絡(luò)模型。其基本結(jié)構(gòu)與AlexNet非常相似,其擁有5段卷積,每段中又含有2-4個3*3的小型卷積核的卷積層,并且每卷積段末尾都會連接一個2*2的最大池化層,所以這樣的模型每段輸出的圖片尺寸都會縮小,而輸出的通道數(shù)則會增加。VGGNet模型的特點就在于重復(fù)使用了3*3的小型卷積核的堆砌結(jié)構(gòu),因為由三個3*3卷積核串聯(lián)可以達到7*7卷積核的感受視野大小,而其包含的參數(shù)值卻能減半。所以這樣方法搭建起來神經(jīng)網(wǎng)絡(luò)具有更強的特征提取能力和較少的參數(shù)值。而其簡單明了的網(wǎng)絡(luò)結(jié)構(gòu)更提高了它的通用性和可拓展性。
在本文的神經(jīng)網(wǎng)絡(luò)模型建立和測試中,利用了谷歌的Tensorflow 1.5.0開源神經(jīng)網(wǎng)絡(luò)框架,并通過Python在Cuda 9.1和cuDNN V7.0.5的編譯環(huán)境下進行測試。測試集則為MNIST手寫體數(shù)字識別數(shù)據(jù)集。
首先通過ReLU激活函數(shù)建立一個包含兩個卷積層的模型作為此次測試的參照模型,其兩層卷積核都為5*5,在Dropout為0.5,學(xué)習(xí)率為0.0001的條件下進行30萬步的學(xué)習(xí)訓(xùn)練后,其識別準(zhǔn)確度可以達到98.28%。
圖1 AlexNet神經(jīng)網(wǎng)絡(luò)模型[1]
之后根據(jù)[5]論文中的模型,首先構(gòu)建了一個包含5段卷積層(后三段中都包含有1*1的卷積核,用于線性變換)和3個全連接層的16層神經(jīng)網(wǎng)絡(luò),在用與參照模型相同的學(xué)習(xí)參數(shù)下訓(xùn)練后可以得到97.46%的準(zhǔn)確度,在減少一半的學(xué)習(xí)率后,可以使準(zhǔn)確度提高至98.15%。
再利用相似的方法構(gòu)建一個19層VGGNet卷積神經(jīng)網(wǎng)絡(luò),但在用與參照模型相同的學(xué)習(xí)參數(shù)下訓(xùn)練時,其識別準(zhǔn)確度在隨訓(xùn)練步數(shù)增加一段時間后便又降低并保持在了20%以下。究其原因,可能是由于過高的學(xué)習(xí)率,導(dǎo)致參數(shù)更新幅度過大,導(dǎo)致其在最優(yōu)值兩側(cè)波動過大。另外為防止過擬合而設(shè)置的Dropout rate也會影響參數(shù)值的更新。所以在利用衰減系數(shù)對學(xué)習(xí)率進行優(yōu)化后,其最終的準(zhǔn)確度提高至98.30%。
ResNet(Residual Neural Network)是由微軟亞洲研究院的Kaiming He[6]等人在2015年ILSVRC圖像分類比賽中所提出的一種具有向前回路的極深層卷積神經(jīng)網(wǎng)絡(luò)。雖然計算機各界均認(rèn)為加深神經(jīng)網(wǎng)絡(luò)的深度可以大大提升其識別能力[7],但在ResNet發(fā)明之前,傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練難度會隨著其深度的增加而大幅增加,而準(zhǔn)確度卻沒能得到相應(yīng)的提升。而ResNet則通過將原始的輸入值直接傳輸?shù)胶竺娴膶又械姆椒?,減少了由過深的卷積層數(shù)所帶來的訓(xùn)練集誤差(即如上節(jié)所出現(xiàn)的,模型準(zhǔn)確度隨著層數(shù)增加先增加后減少的現(xiàn)象)。而每段神經(jīng)網(wǎng)絡(luò)所學(xué)習(xí)的目標(biāo)也從原來的輸出值變成了輸出和輸入值之間的差,即殘差值。這種方法大大簡化了模型的學(xué)習(xí)難度。
在Tensorflow框架中可以利用collection和contrib.slim庫來快速的設(shè)計ResNet的模塊組。在本文中搭建了一個包含四個模塊的34層的ResNet神經(jīng)網(wǎng)絡(luò)模型,模塊中每層的卷積核大小都是3*3,每個block中包含有兩個卷積層,信號同時輸入給了輸入端和輸出端。在不同通道數(shù)的模塊間還有將向前信號升維的一個線性映射變換的步驟。首先利用參照模型的參數(shù)對此模型進行訓(xùn)練,發(fā)現(xiàn)其準(zhǔn)確率在達到峰值后出現(xiàn)了下降,在改變了Dropout rate后,經(jīng)過了相同步數(shù)的訓(xùn)練后,模型的準(zhǔn)確度達到了99.06%,其原因可能是由于本測試所使用的訓(xùn)練集的圖像尺寸過小,過大的Dropout rate會使得訓(xùn)練集中圖像特征的丟失從而造成模型識別誤差。測試中,學(xué)習(xí)率的設(shè)置對此模型識別精度的提升并沒有幫助。另外隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的增加,模型所包含的參數(shù)也在大幅增加,這直接導(dǎo)致了其訓(xùn)練時所占用的顯存空間的大幅增加。
ResNet和之前的VGGNet模型的基礎(chǔ)結(jié)構(gòu)非常類似,都廣泛利用了多層3*3小卷積核的堆積的構(gòu)架,主要區(qū)別就在于ResNet模型還包含有了許多支路能夠?qū)⑶懊娴男盘柾暾膫鬏數(shù)胶竺鎸又小6@項改進大幅減少了整個網(wǎng)絡(luò)的訓(xùn)練時間,同時神經(jīng)網(wǎng)絡(luò)的深度從VGGNet最多的19層增加到了ResNet模型的152層。隨著網(wǎng)絡(luò)層數(shù)的增加,其特征提取和識別能力也有了顯著的提升。
本文通過在Tensor flow中的建模和實際訓(xùn)練發(fā)現(xiàn),VGGNet神經(jīng)網(wǎng)絡(luò)隨著層數(shù)的增加,其對于學(xué)習(xí)率和Dropout rate等訓(xùn)練參數(shù)設(shè)置的敏感度也隨之增加。如果不經(jīng)過仔細(xì)的參數(shù)設(shè)置,其模型很難達到所預(yù)想的識別精度。相比之下,ResNet網(wǎng)絡(luò)模型的構(gòu)架則更加穩(wěn)定(robust),雖然其層數(shù)比普通神經(jīng)網(wǎng)絡(luò)大幅增加,但學(xué)習(xí)率設(shè)置并不需要過多的降低,所以其模型的訓(xùn)練難度相比VGGNet并沒有過多的增加,而識別精度卻大幅的提高了(本文中測試識別錯誤率降低了近49%)。
從神經(jīng)網(wǎng)絡(luò)模型的復(fù)雜程度上來看,VGGNet模型的編譯難度較低,通用型強,在某些精度要求不高的平臺上依然被沿用著。而ResNet模型則代表了深度學(xué)習(xí)最前沿的發(fā)展方向,其能夠支持極深的神經(jīng)網(wǎng)絡(luò)模型的特點,大幅簡化了深層神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練與運用。正如Eldan在其2016年的論文[8]中所闡述的,深層向前通道神經(jīng)網(wǎng)絡(luò)模型所能達到的識別能力將是傳統(tǒng)堆積模型所無法比擬的。本文也通過在Tensorflow中的建模與訓(xùn)練證實了這一點。而最新一代的谷歌神經(jīng)識別網(wǎng)絡(luò)Inception Net V4中也開始融入ResNet模型的特點[9]。所以未來深層卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展將引領(lǐng)整個深度學(xué)習(xí)界的發(fā)展,從而大大推動其在圖像識別等領(lǐng)域更廣泛的運用。
[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.