深度殘差網絡

Deep Residual Learning for Image Recognition

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.


總結

隨着網絡深度加深,出現了訓練誤差增大的退化現象。用一些層來擬合H(x)的關係,本文用其等價的形式H(x)=F(x)+x,來擬合F(x)的方法,降低了solver優化的難度,從而在很大程度上解決了退化問題,通過跳過連接來實現殘差學習。

在ImageNet的1000分類上實驗,比較了18層和34層的普通和殘差網絡的訓練誤差,普通網絡18層好,殘差網絡34層好,同時殘差網絡整體比普通網絡好,說明對於能夠找到解決方法的問題,殘差也能加快學習速度。對比了線性映射和恆等映射,發現線性映射能夠增加準確率,但不是退化問題的主要因素。爲了更深和方便,構造了比原來的2層開銷小的3層結構,得到了50層網絡,然後又通過增加3層的殘差塊構造了101和152層網絡,準確率越來越高。

在CIFAR-10上實驗了20,32,44,56層網絡,得到了和ImageNet一樣的結論,證明了其通用性。另外訓練了110層網絡,效果更好。分析了各層的響應,殘差網絡的方差更小,證明了其更容易優化。嘗試了超過1000層的網絡,訓練誤差差不多,但是測試不好,可能是因爲缺少正則化和dropout從而導致泛化差。包攬ILSVRC和COCO2015競賽的ImageNet檢測定位、COCO檢測和分割的冠軍。


摘要

越深的網絡越難訓練。作者提出了一種殘差學習框架,讓深的網絡更容易訓練。用學習殘差函數來重新定義層。經驗表明這種殘差網絡更容易優化,層數增加準確率也會提高。在ImageNet數據集中用152層的網絡,雖然比VGG16層數多了8倍,但模型複雜度比VGG16低。使用集成模型在ImageNet上的錯誤率是3.57%,ILSVRC2015的冠軍,也用100層和1000層的網絡分析了CIFAR-10。

對於很多視覺模式任務來說,深度是核心重點。由於深度的增加,作者獲得了COCO目標檢測數據集28%的相對提升。深度殘差網絡也在ILSVRC和COCO2015競賽的ImageNet檢測定位、COCO檢測和分割中獲得了冠軍。

引言

深度卷積神經網絡能夠整合各個層次的信息用來進行端到端的任務。網絡深度很重要。

網絡變深了之後一開始就會容易梯度爆炸/彌散,導致不能收斂,使用標準初始化和標準化層來解決。

深的網絡可以收斂了以後,退化問題又出來了。退化是指隨着網絡加深,準確度飽和並降低。退化不是由過擬合引起的,層數越多訓練誤差越大。

退化問題顯示了不是所有的系統都容易優化的。假設有一個網絡,對應還有一個通過恆等映射來構造的加深網絡,那麼加深網絡的訓練誤差不會比淺層的差。但是實驗顯示現有的優化器找不到和淺層網絡一樣好的解。

使用殘差結構來解決退化問題。假設我們需要擬合的關係是H(x) ,讓F(X)=H(x)x ,原來的H(x)=F(x)+x 。假設殘差映射4F(x) H(x)0 F(x)+x$在網絡中表現爲跳過連接,把輸入加到預測出來的殘差輸出中。不需要額外的參數和計算,也不會破壞原來端到端的結構,能夠很容易的用現有的庫實現。
通過實驗證明了:

  1. 深殘差網絡更容易優化,同樣深度的普通網絡的訓練誤差比殘差網絡要大;
  2. 殘差網絡可以從深度中獲得比普通網絡更多的性能。

在CIFAR-10中也有同樣的現象,說明這種作用具有通常的效果,不單單在特定的數據集上。成功訓練了100層的網絡,並且嘗試了超過1000層的網絡。

在ImageNet分類數據集上,152層殘差網絡,目前比賽網絡層數最深的網絡,集成模型top-5誤差爲3.57%,獲得了ILSVRC-2015分類比賽、檢測、定位、COCO檢測、分割的冠軍。這些都說明了殘差學習準則具有廣泛性,能夠應用到其他的深度學習任務中。

深度殘差學習

用一些層來擬合需要的關係映射H(x) 。假設可以用一些非線性的層來逼近這個關係,那麼和逼近H(x)x 是等價的。也就是說擬合H(x) 和擬合F(x)=H(x)x 是等價,但是學習的難度是不一樣的。

  1. 恆等映射 identity mapping

    y=F(x,{Wi})+x(1)
  2. 線性映射 projection mapping

    y=F(x,{Wi})+Wsx(2)

通過恆等映射加深網絡,訓練誤差也不會比原來要小。但是退化現象說明了很深的網絡很難優化。通過殘差來重構網絡,優化殘差比優化一個重新的函數要簡單。恆等映射比0映射更容易學習。

使用跳過連接來實現如上的殘差結構。如式1的殘差塊不需要額外的參數和計算,在實際和比較實驗(原始加深和殘差加深)都很有用。式1只有在x和F(x)維度一樣的纔可以用,否則就需要增加Ws來匹配。實驗表明維度相同的時候使用恆等映射已經足夠了,不需要Ws來增加模型複雜度。

殘差函數F的構建是很靈活的,可以跳過2-3個或者更多的層,但是隻跳過一個層,就類似於一個線性函數y=W1x+x ,沒有看到有什麼優勢。

網絡結構

殘差網絡結構

plain網絡:受VGG啓發,使用3x3卷積核,有如下2個設計原則:1. 卷積核數量和輸出的feature map大小一樣;2. feature map大小減半,卷積核數量加倍。通過步長爲2的卷積進行下采樣。最後是global平均池化和1000全連接的softmax。以上模型比VGG模型的卷積核和複雜度都低。

Residual網絡:在plain的基礎上增加殘差捷徑連接。實線表示輸出和輸出大小一致,可以直接用式(1)連接;虛線維度加倍了,有兩種方法來處理:使用0填充來增加維度,使用式(2)的乘上Ws來匹配維度(通過1x1卷積來實現)。這兩種卷積的步長都是2,來減小feature map的大小。

實現

訓練:把圖片resize到[256, 480],隨機裁剪到224,水平翻轉和按通道去均值,顏色標準化,在每個卷積之後和激活函數前使用BN,batch大小256,初始學習率0.1,到平穩期的時候除以10,訓練了60萬步,權重衰減係數0.0001,動量因子0.9,沒有使用dropout。

測試:測試階段,採用和VGG論文中一樣的10裁剪測試。以及在[41, 13]中用的全卷積形式(?),平均各個尺度的分數。得到結果。

實驗

ImageNet分類

1000分類,訓練圖片1.28百萬張,驗證機5萬張,測試集10萬張。評價標準top-1和top-5。

網絡結構如下:

[ImageNet對比網絡結構

Plain網絡

34層的網絡驗證集誤差比17層高,即使18層是34層的子任務之一,從34層訓練集誤差比18層誤差高中可以看到退化現象。可能是由於梯度彌散導致了退化。使用了BN,在前向中檢查輸出方差不爲0,反向梯度也正常,用了BN以後沒有梯度彌散。34層的網絡性能也還算不錯,所以可能是由於優化難度加大,收斂速度減慢,導致了退化問題。

18層34層普通網絡訓練對比

Residual 網絡

在base-line的基礎上每2個卷積增加了恆等映射的捷徑連接,維度不同的地方使用了0填充。

  1. 和plain相反,34層的ResNet比18層的性能好,訓練集和驗證集誤差都好。說明解決了退化問題。
  2. 和plain相比,34層的ResNet比18層的性能好,說明ResNet在深網絡中有效。
  3. 18層的ResNet也比plain準確率高,說明了ResNet在淺一點的網絡,現有的優化方法能夠找到優解,也能夠加快收斂。

18層34層殘差網絡訓練對比

top-1評價指標的對比:

ImageNet18層34層普通網絡和殘差網絡對比

對比恆等映射和線性映射

  1. 恆等映射 identity mapping

    y=F(x,{Wi})+x(1)
  2. 線性映射 projection mapping

    y=F(x,{Wi})+Wsx(2)

對比在維度不對時使用0填充和線性映射,以及在維度相同時使用恆等映射和線性映射。

A,0填充和恆等映射;B,維度不同時使用線性映射和恆等映射;C,都使用線性映射。

表3顯示,ABC都比不用殘差塊好。B比A好,可能是因爲0填充,有部分沒有用殘差學習;C比B好,可能是C比B多使用了參數。

ABC之間差別不大,說明了這個映射不是退化問題的關鍵因素。

34層殘差網絡ABC映射對比

單模型結果:

殘差單模型比較

模型融合結果:
模型融合結果

Bottleneck設計

設計了Bottleneck結構,考慮到訓練時間的開銷,使用1x1,3x3,1x1的3層卷積來代替原來的2層卷積作爲一個塊,1x1的卷積可以減少和恢復維度。2層和3層的設計具有相似的時間複雜度。

不用參數的映射對這種bottleneck結構很重要,如果使用了線性映射,那麼時間和空間複雜度加倍,因爲捷徑連接了2個高維。所以恆等映射會讓bottleneck更加有效。

Bottleneck和普通殘差塊結構

使用更多的3層塊來構造101層和152層網絡,其複雜度比VGG16更低。20/101/152層殘差網絡比34層的準確率更高,沒有退化問題,越深的網絡準確率越高。

CIFAR-10和分析

整體的網絡結構如下表,改變n的大小來調整整體的網路層數。使用如圖3中的結構。爲了分析進行簡化,使用A方案。

CIFAR-10整體網絡結構

訓練過程:權重衰減0.0001,動量因子0.9,使用[13]中的權重初始化,使用BN但是沒用dropout,batch大小128,在2快GPU上訓練。初始學習率爲0.1,在32K和48K步的時候除以10,在64K步的時候結束訓練。訓練圖片45K,驗證圖片5K。用[24]的訓練數據擴增,4像素的填充,32大小的隨機裁剪和水平翻轉,測試的時候只預測原始的32大小的圖片。

比較n=3,5,7,9,也就是比較20,32,44,56層的網絡。從普通和殘差網絡對比來看,越深的殘差網絡性能越好,說明克服了優化困難。

CIFAR-10不同深度的普通殘差網絡訓練結果對比

讓n=18,構建了110層的殘差網絡,學習率從0.1降到0.01訓練,知道400代訓練誤差低於80%以後改回0.1繼續訓練,收斂的很好。和其他深的網絡FitNet和Highway網絡相比,參數更少,但是效果更好。

每層響應分析

每層BN層和ReLU層中間的數據,ResNet的方差都比plain的小,證明了3.1節,殘差塊比普通更接近0,更容易學習。

CIFAR-10每層響應方差值

探索超過1000層的網絡

n=200,構造了1202層的網絡,和110層的網絡相比,訓練誤差差不多,但是測試誤差高,可能是由於過擬合導致了泛化性能變差,將來使用正則化和dropout進行測試。

CIFAR-10的1202層殘差網絡測試誤差

PASCAL和COCO的目標檢測比賽

基於Faster R-CNN框架,使用101層的殘差網絡代替VGG16進行特徵提取,都比原來要好,COCO相對提升了28%。

PASCAL和COCO評價結果

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