Identity Mappings in Deep Residual Networks(譯) 轉載

 

 

論文地址:Identity Mappings in Deep Residual Networks

譯文地址:http://blog.csdn.net/wspba/article/details/60750007

摘要

深度殘差網絡作爲一種極深的網絡框架,在精度和收斂等方面都展現出了很好的特性。在本文中,我們分析了殘差塊(residual building blocks)背後的計算傳播方式,表明了當跳躍連接(skip connections)以及附加激活項都使用恆等映射(identity mappings)時,前向和後向的信號能夠直接的從一個block 傳遞到其他任意一個block。一系列的“消融”實驗(ablation experiments)也驗證了這些恆等映射的重要性。這促使我們提出了一個新的殘差單元,它使得訓練變得更簡單,同時也提高了網絡的泛化能力。我們報告了1001層ResNet在CIFAR-10(4.62\% error) 和CIFAR-100上的結果,以及200層ResNet在ImageNet上的結果。代碼可在 https://github.com/KaimingHe/resnet-1k-layers上下載。

介紹

深度殘差網絡(ResNets)由很多個“殘差單元”組成。每一個單元(Fig.1 (a))可以表示爲:

其中 xlxl 和 xl+1xl+1 是第ll 個單元的輸入和輸出, FF 表示一個殘差函數。在He2016中, h(xl)=xlh(xl)=xl 代表一個恆等映射,ff 代表 ReLU。

 

 

這裏寫圖片描述


Fig.1 (a) 原始殘差單元;(b) 本文提出的殘差單元;右:1001層ResNets 在CIFAR-10上的訓練曲線。實線對應測試誤差(右側的y軸),虛線對應訓練損失(左側的y軸)。本文提出的單元使得ResNet-1001的訓練更簡單。

 

超過100層的ResNets在ImageNet \cite{Russakovsky2015}和MSCOCO \cite{Lin2014}競賽的許多識別挑戰任務中展現出了極高的精度。ResNets的核心思想就是學習一個額外的對應於h(xl)h(xl) 的殘差函數 FF ,而這個思想的關鍵就是恆等映射h(xl)=xlh(xl)=xl 。這是通過一個恆等的跳躍連接(“捷徑”)來實現的。

本文中,我們不只是在殘差單元內部,而是在整個網絡中創建一個“直接”的計算傳播路徑來分析深度殘差網絡。我們的推導展示了:如果h(xl)h(xl) 和 f(yl)f(yl) 都是恆等映射,那麼在前向和反向階段,信號可以直接的從一個單元傳遞到其他任意一個單元。我們的實驗表明了,當框架接近於以上兩種狀態時,訓練變得更加簡單。

爲了瞭解跳躍連接的作用,我們分析和比較了 h(xl)h(xl) 的各種類型。我們發現了He2016中使用的恆等映射h(xl)=xlh(xl)=xl 在我們所有研究的類型中,誤差衰減最快,訓練誤差最低,而使用縮放、門控以及1×× 1 卷積的跳躍連接都產生了很高的訓練損失和誤差。這些實驗表明,一個“乾淨”的信息通路 (Fig.1,2和4中的灰色箭頭)對於簡化優化是很有幫助的。

爲了構建一個恆等映射 f(yl)=ylf(yl)=yl ,我們將激活函數(ReLU 和 BN) 看作是權重層的 “pre-activation”,而不是傳統的“post-activation”。通過這個觀點產生了一個新的殘差單元,如(Fig.1(b))所示。基於這個單元構建的1001層ResNet在CIFAR-10/100上展現了更具競爭力的結果,並且與原始的ResNet相比,也更容易訓練,泛化能力更強。針對200層ResNet在ImageNet上出現的過擬合現象,我們進一步展示了使用改進後網絡的結果。這些結果表明了,作爲深度學習成功的關鍵,模型的深度仍然具有很大的可拓展空間。

Analysis of Deep Residual Networks

He2016中的ResNets是通過將相同連接形狀的blocks進行堆疊的模塊化框架。本文中,我們將這些blocks稱爲“殘差單元(Residual Units)”。He2016中的原始殘差單元執行以下計算(Eq.1,Eq.2):

 


其中xlxl 是第ll 個殘差單元的輸入特徵。Wl={Wl,k|1≤k≤K}Wl={Wl,k|1≤k≤K} 是一組與第ll 個殘差單元相關的權重(偏置項),KK 是每一個殘差單元中的層數( He2016中KK 爲2或者3)。FF 代表殘差函數,形如He2016中兩個3×× 3卷積層的堆疊。函數ff 是元素相加後的操作,在 He2016 ff 是ReLU。函數 hh 被設置爲恆等映射: h(xl)=xlh(xl)=xl 。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

這裏寫圖片描述
這裏寫圖片描述

3.1 Experiments on Skip Connections
我們在CIFAR-10上使用He2016中的110層ResNet進行實驗。這個極深的ResNet-110含有54個2層殘差單元(由3×× 3的卷積層組成),這對優化造成了一定的挑戰。我們的實現細節(見附錄)與He2016中的相同。爲了避免隨機變量的影響,本文中我們的結果爲在CIFAR上每個框架運行5次得到的準確率的中位數。

雖然在上述分析中,ff 爲恆等映射,但是本節的實驗中都是基於f=f= ReLU;我們在下一節中對恆等映射 ff 進行分析。在測試集上我們的原始ResNet-110的錯誤率爲6.61% 。與其他變形的比較 (Fig.2和 Table1)總結如下:

Constant scaling 對於所有的捷徑連接,我們設置λ=0.5λ=0.5 (Fig.2(b))。我們進一步考慮FF 的兩種縮放情況: (i) FF 不被縮放; (ii) FF 有常數標量 1−λ=0.51−λ=0.5 進行縮放,這與highway門控類似,但是它是冷凍門控。前一種情況不能很好的收斂;後一種可以收斂,但是測試錯誤率(Table1, 12.35%)比原始的ResNet-110高得多。Fig.3(a) 顯示了訓練錯誤率比原始ResNet-110的要高,表明了當捷徑信號被縮放時,優化變得更加困難。

Exclusive gating 根據採用門控機制的Highway Networks,我們設計一個門控函數g(x)=σ(Wgx+bg)g(x)=σ(Wgx+bg) ,表示由權重WgWg 、偏置項bgbg 以及sigmoid函數σ(x)=11+e−xσ(x)=11+e−x 組成的變換。在一個卷積網絡中g(x)g(x) 通過 1×1×1 的卷積層實現。門控函數通過元素乘法來調節信號。

我們對“exclusive”門控進行研究 — FF 由 g(x)g(x) 進行縮放,捷徑連接由1−g(x)1−g(x) 進行縮放。如 Fig2.(c)所示。我們發現偏置項bgbg 的初始化對於門控模型的訓練是至關重要的,我們設置bgbg 的初始值範圍爲0到-10,遞減量爲1,然後通過cross-validation來執行超參數搜索。然後使用最佳值(這裏爲−6−6 )來在訓練集上進行訓練,測試錯誤率爲 8.70% (Table1),這仍然落後於原始的ResNet-110。Fig.3(b)展示了訓練曲線。Table1同樣展示了使用了不同初始值的實驗結果,注意到當bgbg 的初始化不合理時,exclusive gating網絡並不能收斂到一個好的結果。

Exclusive gating機制的影響是雙面的。當 1−g(x)1−g(x) 接近1時,門控捷徑連接接近於恆等映射,這有助於信息的傳遞;但是這種情況下,g(x)g(x) 接近於0,從而阻礙了函數FF 。 爲了避免在捷徑連接中門控函數的影響,我們在接下來研究一個non-exclusive的門控機制。

Shortcut-only gating 這種情況下,函數FF 不進行縮放;只有捷徑連接由1−g(x)1−g(x) 進行縮放。如Fig.2(d)所示。偏置項bgbg 的初始值同樣很重要。當bgbg 的初始值爲0時(即1−g(x)1−g(x) 爲 0.5),網絡收斂到一個很差的結果 12.86% (Table1)。這同樣產生了很高的訓練錯誤率(Fig.3(c))。

當bgbg 的初始值是負很多的數(例如, −6−6 )時,1−g(x)1−g(x) 的值接近於1,捷徑連接接近於恆等映射。因此,結果(6.91%, Table1)與原始ResNet-110的結果很接近。

1×× 1 convolutional shortcut 接下來我們使用 1×× 1 的卷積捷徑連接替代恆等連接在進行實驗。這種方案在He2016中使用在34層的ResNet(16個殘差單元)上(即方案C),並展現除了很好的結果,表明了1×× 1 卷積捷徑連接是有效果的。但是我們發現當殘差單元有很多時,這並不能起到特別好的效果。當使用1×× 1 的卷積捷徑連接時,110 層的ResNet的結果很差(12.22%, Table1)。同樣的訓練誤差也變得很高 (Fig.3(d))。當堆疊了如此多的殘差單元時(ResNet-110 中有54個),即便是最短的路徑可能也會對信號的傳播造成阻礙。當在ImageNet上使用1×× 1卷積捷徑連接的ResNet-110時,出現了類似的結果。

Dropout shortcut 最後我們在恆等捷徑連接上添加Dropout(比率爲0.5) 來進行實驗(Fig.2(f))。網絡並沒有收斂到一個很好的結果。Dropout在統計學上相當於給捷徑連接強加了一個λλ 爲0.5的縮放,這和0.5的constant scaling很類似,同樣的阻礙了信號的傳播。

這裏寫圖片描述

3.2 Discussions
如Fig.2中灰色箭頭所示,捷徑連接是信息傳遞最直接的路徑。 捷徑連接中的操作 (縮放、門控、1×× 1 的卷積以及 dropout) 會阻礙信息的傳遞,以致於對優化造成困難。

值得注意的是1×× 1的卷積捷徑連接引入了更多的參數,本應該比恆等捷徑連接具有更加強大的表達能力。事實上,shortcut-only gating 和1×× 1的卷積涵蓋了恆等捷徑連接的解空間(即,他們能夠以恆等捷徑連接的形式進行優化)。然而,它們的訓練誤差比恆等捷徑連接的訓練誤差要高得多,這表明了這些模型退化問題的原因是優化問題,而不是表達能力的問題。

On the Usage of Activation Functions

以上的實驗內容驗證了Eq.5和Eq.8中的分析,兩個公式都是基於連接後的激活函數 ff 爲恆等連接的假設。但是在上述實驗中ff 是以He2016中的ReLU設計的,因此,Eq.5和8只是以上實驗的估計。接下來我們研究ff 的影響。

我們希望通過重新安排激活函數(ReLU和/或BN)來使得 ff 爲一個恆等映射。He2016中的原始殘差連接的形狀如Fig.4(a) — BN在每一個權重層之後使用,之後再接一個ReLU,在最後的元素相加之後還有最後一個ReLU(即f=f= ReLU)。 Fig.4(b-e)展示了我們研究的其他形式,解釋如下。
這裏寫圖片描述
這裏寫圖片描述

4.1 Experiments on Activation
本章,我們使用He2016中的ResNet-110和164層瓶頸結構(稱爲ResNet-164)來進行實驗。瓶頸殘差單元包含一個1×× 1的層來降維,一個3×× 3的層,還有一個1×× 1的層來恢復維度。正如He2016中所述,它的計算複雜度和包含兩個3×× 3的層的殘差單元相同。更多細節參見附錄。ResNet-164的基本結構在CIFAR-10上具有很好的結果——5.93%(Table2)。

BN after addition 在將ff 調整至恆等映射之前,我們先反其道而行之,在加法後添加一個BN(Fig.4(b))。這樣ff 就包含了BN和ReLU。這樣的結果比基本結構的結果要差很多(Table2)。不像原始的設計,目前的BN層改變了流經捷徑連接的信號,並阻礙了信息的傳遞,這從訓練一開始降低訓練誤差的困難就可以看出(Fig.6 left)。

 

 

 

 

 

這裏寫圖片描述


後激活(post-activation)與預激活(pre-activation)的區別是由元素級加法的存在而造成的。一個含有NN 層的平鋪網絡,包含有N−1N−1 個激活層(BN/ReLU),而我們如何考慮它們是否是後激活或者預激活都不要緊。但是對附加的分支層來說,激活函數的位置就變得很重要了。

 

我們使用以下兩種設計進行實驗:(i) 只使用ReLU的預激活(Fig.4(d)),和(ii) 全預激活 (Fig.4(e)) ,它的BN和ReLU全都放置在權重層的前面。Table2表明了,只使用ReLU預激活的結果與原始ResNet-110/164的很接近。這個ReLU層不與BN層連接使用,因此無法共享BN所帶來的好處。
 

這裏寫圖片描述

然而,令人驚訝的是,當BN和ReLU都用在預激活上,結果得到了很可觀的提高(Table2與Table3)。在Table3中,展示了使用不同結構的結果:(i) ResNet-110,(ii) ResNet-164,(iii) 一個110層的ResNet結構,其中每一個捷徑連接跳過1層(即,每一個殘差單元只包含一層),稱它爲“ResNet-110(1layer)”,以及(iv) 一個含有333個殘差單元的1001層瓶頸結構(對應於每一種尺寸特徵圖有111個殘差單元),稱它爲“ResNet-1001”。我們同樣在CIFAR-100上進行實驗。Table3表明了我們的“預激活”模型比原始的模型的性能要好得多。分析過程如下。

4.2 Analysis
我們發現預激活的影響具有兩個方面。第一,由於ff也是恆等映射,優化變得更加簡單(與原始ResNet相比)。第二,在預激活中使用BN能夠提高模型的正則化。

Ease of optimization 這個影響在我們訓練1001層ResNet時尤爲顯著。Fig.1展示了訓練和測試曲線。使用He2016中的原始結構時,訓練錯誤率在一開始下降的特別慢。對於f=f= ReLU,如果信號是負的時候會造成一定的影響,而當殘差單元很多時,這個影響將會變得尤爲突出,所以Eq.3(Eq.5也是)並不是一個好的估計。另一方面,當ff時一個恆等映射時,信號在兩個單元之間能夠很直接的進行傳遞。我們的1001層網絡的訓練誤差能夠降低的特別快(Fig.1)。它同樣達到了所有我們研究的模型中最低的誤差,表明了在優化上的成功。

我們同樣發現如果ResNet層數不多時(例如,Fig.6(右)中的164層),f=f= ReLU 的影響並不是很強烈。在訓練初期,訓練曲線似乎收到了一點影響,但是馬上回歸到良好的狀態。通過監控模型的響應,我們觀測到,這是因爲在經過一定的訓練後,權重被調整到使得 Eq.1中的ylyl總是大於0的,因此ff並不會截斷它(由於先前ReLU的存在,xlxl 總是非負的,因此只有當F是非常負的時候,ylyl纔會小於0)。當時在使用1000層的模型時,這種截斷就會更加頻繁。

Reducing overfitting 使用這個預激活單元的另一個影響就是正則化,如Fig.6(右)所示。預激活版本的模型達到收斂時產生了稍高的訓練損失,但是卻只產生了最低的的測試錯誤率。這個現象在CIFAR-10和100上的ResNet-110,ResNet-110(1-layer)以及ResNet-164上都觀測到了。這可能是由BN的正則化效應引起的。在原始殘差單元中(Fig.4(a)),儘管BN對信號進行了標準化,但是它很快就被合併到捷徑連接上,組合的信號並不是被標準化的。這個非標準化的信號又被用作下一個權重層的輸入。恰恰相反的是,在我們的預激活版本的模型中,權重層的輸入總是標準化的。
 

這裏寫圖片描述

Results

這裏寫圖片描述


 

這裏寫圖片描述

Comparisons on CIFAR-10/100
Table4在 CIFAR-10/100上比較了目前最好的方法,我們的模型取得了非常有競爭性的結果。我們發現對於這些小數據集,我們並不需要特意剪裁網絡的寬度和深度,也不需要使用正則化技術(例如dropout)來保證模型的效果。我們只通過一個簡單卻有效的方式——加深網絡。這些結果展示了推進深度極限的潛力。

Comparisons on ImageNet
接下來我們展示在1000類的ImageNet數據集上的實驗結果。我們使用含有Fig.2& 3中跳躍連接的ResNet-101在ImageNet上進行了初步的實驗,也同樣遇到了優化難題。在第一個學習率上,這些非恆等捷徑連接網絡的訓練誤差顯然比原始的ResNet高得多(與Fig.3類似),由於資源有限,我們決定停止訓練。但是我們完成了“BN在加法後”版本的ResNet的實驗(Fig.4(b))。這個模型的單一裁切(single-crop)(224××224)的驗證錯誤率爲24.6%/7.5%,而原始ResNet-101的爲23.6%/7.1%。這和Fig.6(左) 中CIFAR上的結果一致。

Table5展示了ResNet-152和 ResNet-200的結果,所有訓練從頭開始。我們注意到原始的ResNet論文中在訓練模型時,使用了圖像較短邊s∈[256,480]s∈[256,480]的尺寸抖動(scale jittering),所以當s=256s=256時,在224××224的裁切圖像的測試上加了負的偏置。相反的,在所有原始的以及我們提出的ResNet上,我們從s=320s=320的圖像中裁切一個單一的320××320圖像進行測試。
即使ResNets是在更小的裁切圖像上進行訓練的,但是由於ResNets的全卷積設計,在更大的裁切圖像上它們也能夠很容易的進行測試。這和Inception v3使用的299××299的尺寸很接近,因此是一個更公平的比較。

原始 ResNet-152在320××320裁切圖像上的top-1錯誤率爲21.3%,而我們的與激活版本的錯誤率爲21.1%。在ResNet-152上的增益並不是很大,因爲這個模型並沒有表現出很嚴重的泛化困難。然而原始的ResNet-200的錯誤率比ResNet-152的要高,爲21.8%。但是我們發現原始 ResNet-200 的訓練誤差比ResNet-152的更低,表明受到了過擬合的問題。

我們的預激活ResNet-200的錯誤率爲20.7%,比原始ResNet-200的要低1.1%,並且比兩個版本的ResNet-152都要低。當使用尺寸和縱橫比增強方案時,我們的ResNet-200比Inception v3的結果更好 (Table5),與我們同期的工作中,Inception-ResNet-v2 模型單一裁切的結果爲19.9%/4.9%。我們期望我們的觀測以及提出的殘差單元將會有助於這種類型以及其他泛化類型ResNets的訓練。

Computational Cost
我們模型的計算複雜度和深度呈線性關係(所以1001層網絡的複雜度爲100層網絡的近10倍)。在CIFAR上,ResNet-1001使用2塊GPU花費了27個小時的訓練時間;在ImageNet上,ResNet-200使用8塊GPU花費了將近3周的訓練時間 (這是可以和VGG媲美的)。

Conclusions

本文研究了深度殘差網了的連接機制背後的傳播方式。我們的推導表明了恆等捷徑連接和恆等附加激活對於信息的順利傳播是至關重要的。“消融”實驗(Ablation experiments)展示了和我們推導一致的現象。我們同時也提出二來1000層的深度網絡,能夠容易的訓練並達到了更好的準確率。

Appendix: Implementation Details

本文的實現細節和超參數和He2016中的一致。在CIFAR上我們只是用了He2016中的平移和翻轉的增強方案。初始學習率爲0.1,在第32k和48k時學習率除以10。根據He2016,對於所有在CIFAR上的實驗,我們在前400個迭代使用一個更小的學習率0.01來預熱訓練,之後再將學習率調回0.1,儘管我們認爲這對本文提出的殘差單元並不是必要的。在2塊GPU上mini-batch的大小爲128(每一塊上各64),權重衰減爲0.001,動量爲0.9,權重按照He2015進行初始化。

在ImageNet上,我們使用He2016一樣的數據增強方案來訓練模型。初始學習率爲0.1(沒有預熱),然後在第30和60個epochs時學習率除以10。在8塊GPU上的大小爲256(每一塊上個32)。權重衰減、動量和權重初始化和上述一致。

當使用預激活殘差單元(Fig.4(d)(e) 和 Fig.5)時,我們特別關注整個網絡的第一個和最後一個殘差單元。對於第一個殘差單元(接在一個獨立的卷積層 conv11 後面),我們在 conv11 後面執行第一個激活,然後再分成兩條路徑;對於最後一個殘差單元(後面接着平均池化層和一個全連接分類器),在它的元素加法後執行一個額外的激活。這兩個特殊情況是我們通過Fig.5中的修改程序來獲得預激活網絡自然而然產生的結果。

瓶頸殘差單元(對於CIFAR上的ResNet-164/1001)是根據 \cite{He2016}來構建的。例如ResNet-110中的這裏寫圖片描述替換成ResNet-164中的這裏寫圖片描述,參數數量沒有發生改變。對於瓶頸ResNets,當特徵圖的尺寸減少時,我們使用投影捷徑連接(projection shortcuts)來增加維度,在預激活單元中,這些投影捷徑連接同樣適用。

 

轉自:https://blog.csdn.net/wspba/article/details/60750007

 

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