深度卷積神經網絡CNN中shortcut的使用

導語

shortcut(或shortpath,中文“直連”或“捷徑”)是CNN模型發展中出現的一種非常有效的結構,本文將從Highway networks到ResNet再到DenseNet概述shortcut的發展。

前言       

       自2012年Alex Krizhevsky利用深度卷積神經網絡(CNN)(AlexNet [1])取得ImageNet比賽冠軍起,CNN在計算機視覺方面的應用引起了大家廣泛地討論與研究,也涌現了一大批優秀的CNN模型。研究人員發現,網絡的深度對CNN的效果影響非常大,但是單純地增加網絡深度並不能簡單地提高網絡的效果,由於梯度發散,反而可能損害模型的效果。而shortcut的引入就是解決這個問題的妙招。本文主要就模型發展中的shortcut展開討論。歡迎大家多多批評指正。

一、Highway networks

       Highway [2] 是較早將shortcut的思想引入深度模型中一種方法,目的就是爲了解決深度網絡中梯度發散,難以訓練的問題。我們知道,對於最初的CNN模型(稱爲“plain networks”,並不特指某個模型框架),只有相鄰兩層之間存在連接,如圖1所示(做的圖比較醜,請多擔待),x、y是相鄰兩層,通過W_H連接,通過將多個這樣的層前後串接起來就形成了深度網絡。相鄰層之間的關係如下,

其中H表示網絡中的變換。

圖1

       爲了解決深度網絡的梯度發散問題,Highway在兩層之間增加了(帶權的)shortcut(原文中並沒有使用這個名詞,爲統一起見,採用術語shortcut)。兩層之間的結構如圖2所示,

圖2

x,y的關係如下式,

其中設置C=1-T,可以將上式改寫爲,

       作者將T稱爲“transform gate”,將C稱爲“carry gate”。輸入層x是通過C的加權連接到輸出層y。通過這種連接方式的改進,緩解了深度網絡中的梯度發散問題。Highway networks與plain networks的訓練誤差對比如圖3所示。可以看到對於plain networks,隨着層數的增加,訓練誤差在逐步擴大,而對於highway networks,訓練誤差比較穩定,顯著低於plain networks的誤差,尤其是在層數非常深的時候。

圖3

算法在CIFAR數據集上的分類結果如圖4所示。

圖4

       儘管在實驗結果上,highway networks並沒有比之前的一些模型取得顯著地提升,但是它的這種思想對後面的模型改進影響非常大。

二、ResNet

       ResNet [3]的動機依然是解決深度模型中的退化問題:層數越深,梯度越容易發散,誤差越大,難以訓練。理論上,模型層數越深,誤差應該越小纔對,因爲我們總可以根據淺層模型的解構造出深層模型的解(將深層模型與淺層模型對應的層賦值爲淺層模型的權重,將後面的層取爲恆等映射),使得這個深層模型的誤差不大於淺層模型的誤差。但是實際上,深度模型的誤差要比淺層模型的誤差要大,在CIFAR-10上面的訓練和測試誤差如圖5所示。

圖5

       作者認爲產生這種現象的原因是深度模型難以優化,難以收斂到較優的解,並假設相比於直接優化最初的plain networks的模型F(x)=y,殘差F(x)=y-x更容易優化。對於plain networks的模型,形式化地表示爲圖6(本質上與圖1的結構類似,採用圖6主要是爲了與論文中的描述一致),F就是要優化的目標F(x)=y。

圖6

而對於ResNet,形式化地表示爲圖7,優化的目標F爲F(x)=y-x,即爲殘差。

圖7

       需要注意的是,變換F可以是很多層,也就是說shortcut不一定只跨越1層。並且實際中,由於shortcut只跨越單層沒有優勢,ResNet中是跨越了2層或3層,如圖8所示。ResNet-34中,採用圖8左側的shortcut跨越方式;ResNet-50/101/152採用圖8右側的shortcut跨越方式。

圖8

ResNet-34與其他兩種模型的對比如圖9所示。

圖9

       經過改進之後,ResNet與plain networks在ImageNet上的訓練誤差對比如圖10。對於plain networks,34層的模型誤差要比18層的誤差大,而對於ResNet,34層的模型誤差要小於18層的誤差。

圖10

在ImageNet和CIFAR-10上面的結果對比如圖11所示。

圖11

對比highway networks和ResNet,可以看到ResNet的改進主要在以下方面,

1,將highway networks的T和C都設爲1,降低模型的自由度(深度模型中,自由度越大未必越好。自由度越大,訓練會比較困難)。

2,shortcut不僅限於跨越1層,而可以跨越2層或3層。

三、DenseNet

       DenseNet [4]的初衷依然是爲了解決深度模型的退化問題——梯度發散,借鑑highway networks和ResNet的思路,DenseNet將shortcut用到了“極致”——每兩層之間都添加shortcut,L層的網絡共有L*(L-1)/2個shortcut(這樣會不會太簡單粗暴了?模型會不會太大?參數會不會太多?計算會不會太慢?放心,作者當然不會直接這麼做)。通過shortcut可以直接將淺層的信息傳遞到深層,一方面可以解決退化問題,另一方面也可以看作是特徵重用(feature reuse)。

       首先來回顧一下highway networks和ResNet的連接單元,爲了與文中表達式保持一致,又做了幾幅醜圖,見諒。對於plain networks,相鄰兩層之間有,

連接單元如圖12所示,

圖12

對於ResNet,相鄰兩層之間有,

連接單元如圖13所示,

圖13

而對於DenseNet,則有,

連接單元如圖14所示,每層的輸出結果都會通過shortcut連接到後面的層。

圖14

       如果真的每層的輸出都稠密地連接到後面的所有層,那麼模型將變得非常“寬”,計算將會很慢。因此,作者採用的是“局部”稠密連接,如圖15所示,每個block裏面才進行稠密連接。每個block裏面的連接方式如圖16所示,前面層的輸出通過shortcut直接連接到block中後面的其他層。block之間通過transition層連接。

圖15

圖16

       對於一個包括t層的block,假設每層輸出k個feature map(或通道),則第i(1 ≤i≤ t)層的輸入feature map數爲k*(i-1)+k0,其中k0爲block的輸入的通道數。將層分block只是限制了i的大小,如果每層的輸出數k比較大的話,計算仍然很慢,因此作者也對k進行了限制,文中k稱爲growth rate。此外爲了將模型進一步壓縮,作者還採用了bottleneck layer和對transition的輸出進行壓縮(DenseNet-BC)。

       在ImageNet任務上,不同層數的DenseNet的架構如圖17所示,

圖17

相比ResNet,DenseNet的參數更少(主要是因爲feature map少),計算更快。對比如圖18所示,

圖18

       DenseNet在CIFAR和SVHN數據集上的誤差對比如圖19所示,可以看出,DenseNet在模型大小和算法精度上都具有非常大的優勢。從實用角度來講,DenseNet獲得CVPR2017 best paper也不足爲奇。

圖19

       對比highway networks和ResNet,可以看到DenseNet的改進主要在shortcut的使用上,將網絡層進行稠密連接,shortcut可以跨越很多層並可以同時存在,通過將網絡分爲block和限制每層的輸出通道數來減少參數和降低計算複雜度。

總結

       爲了解決深度模型中的梯度發散問題,很多技術方法被提了出來,shortcut是其中一種非常有效的方法。本文主要概述了shortcut使用的一些歷程,希望通過本文能給其他技術方法的改進帶來一絲啓發。不足之處還請多多指正。謝謝!

參考文獻:

1 ImageNet Classification with Deep Convolutional Neural Networks.

2 Training Very Deep Networks.

3 Deep Residual Learning for Image Recognition.

4 Densely Connected Convolutional Networks.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章