其它機器學習、深度學習

演算法的全面系統講解可以閱讀《機器學習與應用》,清華大學出版社,雷明著,由SIGAI公眾號作者傾力打造,自2019年1月出版以來已重印3次。

  • 書的購買鏈接
  • 書的勘誤,優化,源代碼資源

PDF全文鏈接:淺談卷積神經網路的模型結構

淺談卷積神經網路

的模型結構

本文特約作者 vicFigure

上海交通大學

20世紀末,卷積神經網路就已經在MNIST手寫體數字識別任務上展現出了優勢,但由於數據量和硬體性能的限制,始終沒有在其他任務中發揮作用。隨著硬體計算能力,存儲能力的提升,卷積神經網路在21世紀取得了爆發性的進展。同時訓練數據量也在成百倍甚至千倍的增長,更促進了卷積神經網路的進步。從LeNet5,到AlexNet,經過了20年的探索,而從AlexNet開始之後的短短几年,VGG,GoogLeNet,ResNet,DensNet等結構紛紛湧現,不斷刷新卷積神經網路在各種標準數據集上的精度,同時也拓寬了卷積神經網路的應用範圍:從分類任務,物體識別,圖像分割這些基本任務,拓展到人臉識別,人體關鍵點檢測,三維重建等實際的應用場景。今天筆者就來淺談一下最近幾年卷積神經網路的經典結構。

AlexNet

AlexNet是2012年ILSVRC分類任務比賽的冠軍,首次證明了卷積神經網路在更加複雜的分類任務(相比於MNIST和Cifar數據集)上有著極大的優勢。AlexNet的結構特徵如下:

第一,AlexNet網路由有5層卷積層,和3層全聯接層構成,最後一個全聯接層得到各類別概率。第二,AlexNet使用ReLU作為激活層,代替tanh,作者經過實驗,發現ReLU激活層的網路相對於tanh,在cifar10數據集上收斂速度更快。此後ReLU便成為了卷積神經網路標準的激活函數,在後面的結構中依然使用ReLU激活函數。第三,AlexNet使用LRN(Local Response Normalization)作為歸一化函數,如式1.1所示。第四,AlexNet使用了3個max pooling層來做下採樣,同時第一層卷積的卷積核大小設定為 11*11 ,滑動步長為4,也有下採樣的作用。第五,AlexNet採用Dropout層來減少過擬合問題。

b_{x, y}^{i}=frac{a_{x, y}^{i}}{left(k+alpha sum_{j=max left(0, i-frac{n}{2}
ight)}^{i}left(a_{x, y}^{j}
ight)^{2}
ight)^{eta}}

式中 a_{x, y}^{i} 表示特徵圖中第 i個通道,(x,y)位置的值,N表示當前特徵圖的通道數,k,n,α,β是預先定好的超參數,其中n表示利用相鄰的n個通道來做歸一化。在AlexNet 中作者取 k=2, n=5, alpha=10^{-4}, eta=0.75 。雖然式子看起來比較複雜,其本質就是特徵圖每個位置的值,僅利用其相鄰通道對應位置處的值來做歸一化,而不依賴同通道總相鄰像素位置的值。在AlexNet中LRN接在ReLU激活層之後。(在BN層出現之後,BN層基本取代了LRN層的地位)

圖1.1 AlexNet結構

總體來看,AlexNet結構是LeNet5的一個推廣,在其基礎上增加了更多的卷積層和全聯接層通道,並通過多次下採樣,使網路可以處理 224*224 的大尺度圖片。AlexNet證明了卷積神經網路的能力,將卷積神經網路的研究再一次推向高潮。

VGG

VGG是2014年ILSVRC分類任務比賽的亞軍,相比於AlexNet,VGG有著更複雜的網路結構,更多的網路參數和連接,其結構如圖2.2所示,VGG的網路結構特點如下:

第一,VGG的第一個卷積層沒有使用11*11或7*7這種大卷積核,作者經過分析,發現由3個 3*3 的卷積級聯在一起,可以得到和 7*7 相同的感受野,而3個 3*3 卷積的參數幾乎為1個 7*7 卷積參數的一半。第二,VGG中去除了LRN歸一化層,作者經過實驗(圖2.2中A結構和A-LRN結構),發現LRN層並不能提高精度,反而增加了計算量,需要更多的計算存儲單元。第三,VGG首先訓練淺網路結構,然後利用訓練好的淺層網路,初始化深層網路,網路深度逐步加深(圖1.1中ABCDE的深度逐步增加),可以說VGG網路將模型初始化用到了極致。第四,在測試階段,VGG最後的三層fc層均被替換成相同參數量的1*1 卷積層,這樣可以保證輸入圖片的尺度可以變化,不需要局限在224*224 ,最終輸出的特徵圖直接做平均,即得到了最終的概率。

圖2.1 VGG參數量

VGG模型的參數量接近AlexNet的3倍(其參數量如圖2.1所示),大部分參數集中在第一個fc層,因為經過之前的特徵提取網路,第一個fc層輸入特徵圖尺度為 7*7 ,所以第一個fc層的參數量為 512*7*7*4096 ,佔VGG19(E結構)總參數量的70%,這也是AlexNet參數量大的原因。與VGG同年的GoogLeNet則使用avg_pooling(Network in Network最先提出),先將 7*7 的特徵圖變為 1*1 ,極大地減少了模型參數,後面的經典結構中也都普遍採用了avg_pooling的方法。

實際上,去除掉fc層的VGG網路有著很強的學習能力,而且參數量也下降到了可以接受的程度,因此Faster-RCNN等網路仍然採用VGG的卷積層結構作為基礎網路骨架。

除了以上結構上的特點外,VGG作者在圖片尺度、隨機裁剪(圖像預處理)方面進行了大量的實驗,為後面卷積神經網路的工作提供了經驗性的提示。筆者在這裡就不在贅述,如果大家有興趣,可以翻閱VGG原始論文。

圖2.2 VGG網路結構

GoogLeNet

說完VGG,不得不談起與VGG同年競爭的GoogLeNet,2014年的ILSVRC分類任務比賽可以說是競爭極其激烈的一年,VGG亞軍,GoogLeNet榮獲冠軍,

GoogLeNet的參數量僅為AlexNet的1/12,其分類精度卻比AlexNet高很多。在ILSVRC分類任務中,GoogLeNet使用7個模型集成,每張圖片做144個隨機裁剪的方法,達到了比VGG更高的分類精度,但7個模型的參數量依然小於VGG。相比於VGG,GoogLeNet在網路結構上進行了大量的實驗,最終確定的模型基本結構稱為Inception V1,如圖3.1所示(因為後續谷歌團隊又在此基礎上,提出了Inception V2,V3,以及Inception-Residual結構),最終Inception V1確定為圖3.1(b)

圖3.1 Inception V1結構

GoogLeNet團隊首先抓住了卷積神經網路的痛點之一:參數多層數深的網路不容易訓練,很可能造成參數冗餘,而且精度的提升與參數的增加往往不成比例,於是作者考慮,能否將連接稀疏化,同時保留卷積和全聯接層的張量數據結構(因為稀疏卷積的運算效率並不高)

GoogLeNet結構如圖3.2所示,其特點如下:

第一,Inception結構有4個分支,包括1*1 卷積, 3*3 卷積, 5*5 卷積,以及下採樣分支,這種不同卷積核尺度的分支可以提供不同的感受野,最終各個分支的特徵圖級聯在一起得到Inception結構的輸出。而圖3.1(b)中 3*3,5*5分支中的 1*1卷積則是為了壓縮特徵圖的空間尺度,進一步減少參數量。

第二,Inception結構中每個卷積後都會經過ReLU激活。

第三,GoogLeNet在fc層之前,採用global average pooling的方法,將特徵圖空間尺度壓縮為 1*1 ,然後僅用1層fc結構,輸出為各類別的概率。

第四,GoogLeNet同樣適用dropout層,減少過擬合問題。

圖3.2 GoogLeNet網路結構

進一步,(不知是不是收到了VGG的啟發,筆者瞎猜),GoogLeNet團隊將 5*5 的分支變成2個 3*3 卷積級聯,減少了參數量,於是得到了InceptionV2結構,如圖3.3所示。再進一步,如果將 3*3 卷積拆分成 1*33*1 兩個卷積,又可以在保留原始感受野的基礎上,減少參數量,如圖3.4所示,然而經過實驗,作者發現對於非對稱的Inception結構,當輸入特徵圖尺度在12~20之間,且n取7時(並非3),效果時最好的。

圖3.3 Inception V2基本結構

圖3.4 非對稱Inception V2結構

同時,作者提出了4個網路設計原則:

第一,盡量避免瓶頸結構,channel劇烈減少,尤其是在淺層部分(然而ResNet用實驗打破了這個原則)

第二,可以增加Inception的寬度(更多的特徵圖),有助於學習到更多更好的特徵

第三,在深層部分,引入瓶頸結構,不會降低太多精度,同時有助於快速訓練

第四,網路的寬度與深度需要平衡

基於上述4個原則,作者進一步提出了深層的Inception結構(實驗發現輸入特徵圖尺度約等於8時,效果最好),如圖3.5所示。

於是在GoogLeNet的基礎上,作者基於圖3.3,3.4,3.5所示的三種Inception結構,搭建得到了新的網路,在增加少量計算量的基礎上,進一步提升了GoogLeNet的精度。

圖3.5 深層Inception結構

ResNet

ResNet是ILSVRC2015年分類任務的冠軍,作者首先通過堆疊vgg的基本模塊($$3*3$$卷積和ReLU激活層)得到20層網路和56層網路在Cifar10和ImageNet上進行了訓練,發現56層網路的精度遠沒有20層效果好,基於此,作者提出了shortcut連接,即在某層特徵圖加上之前層的特徵圖,如圖4.1左側所示,最終形成bottleNeck結構如圖4.1右側所示。

圖4.1 bottleNeck結構

之所以叫bottleNeck,是因為首先用 1*1 卷積,將特徵圖通道數壓縮到原先的1/4,然後過 3*3 的卷積,最後再用 1*1 卷積將特徵圖通道數還原成原來的大小(或者是原本通道數的2倍)。ResNet就可以根據圖4.1中的結構進行堆疊,得到不同層數的網路,一些經典的ResNet結構如圖4.2所示

此外,作者採用了BN歸一化,採用「卷積-BN-ReLU」的基本卷積單元,對於bottleNeck輸入特徵圖與輸出特徵圖不變的模塊,shortcut分支採用直連的方法,否則,作者在shortcut分支加入一層卷積層(卷積+BN),得到的輸出再與另一個分支的輸出特徵圖相加,再過ReLU激活

圖4.2 ResNet結構

作者經過大量實驗,證明了ResNet的結構可以完美解決之前「層數越深,效果越差」的問題。從某種意義上,ResNet出現後,卷積神經網路將「深度」變為了可能。ResNet提出之後,也有大量的論文來研究討論為什麼ResNet可以解決上述問題,而且也有論文從不同角度證明Shortcut的結構有很強的學習能力。

DenseNet

DenseNet進一步將shortcut結構發展到了極致,提出了DenseBlock的結構,在一個DenseBlock中,每個中間層的特徵圖輸出都會連接到後面的層的特徵圖,而DenseNet與ResNet最大的不同之處就是:ResNet中兩個分支採用加法的方式進行融合,而DenseNet中多個分支採用級聯(在通道維度上拼接在一起)的方式融合。DenseBlock的結構如圖5.1所示。

圖5.1 DenseBlock

圖中不同顏色表示不同中間層的輸出特徵圖,最後的Transition Layer則是由BN+卷積層構成,其目的是為了對最後級聯起來的特徵圖做信息交流和融合,同時控制DenseBlock的輸出特徵圖數,整體DenseNet的網路結構如圖5.2所示,DenseNet的參數量相比於ResNet進一步減少,但其精度更高。然而值得注意的一點是,雖然DenseNet的參數量很小,但其計算量依然比較大。

圖5.2 DenseNet

總結

從2012年始,卷積神經網路的模型結構開始了飛速的發展,筆者僅僅談到了幾個經典的網路結構,但同樣還有一些小而精巧的網路結構沒有涉及,比如MobileNet,ShuffleNet等,還有一些根據特殊應用場景設計的網路結構,如Yolo等。此外,當前的研究者並不滿足於用人工的方式探索有效的網路結構,NAS(網路結構搜索)問題也越來越成為研究的熱點,相信未來會有更多高效的網路結構,而經典永遠都是經典,即使長江後浪推前浪,其設計的精髓和實驗依然值得後來人細細品味。

參考文獻

[1] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.

[2] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.

[3] 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.

[4] Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 2818-2826.

[5] 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.

[6] Huang G, Liu Z, Van Der Maaten L, et al. Densely connected convolutional networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4700-4708.


推薦閱讀:
相关文章