深度殘差網路

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)” role=”presentation”>H(x)H(x)H(x),讓F(X)=H(x)−x” role=”presentation”>F(X)=H(x)−xF(X)=H(x)−xF(X)=H(x)-x,原來的H(x)=F(x) x” role=”presentation”>H(x)=F(x) xH(x)=F(x) xH(x)=F(x) x。假設殘差對映4F(x)比原来的” role=”presentation”>比原來的比原來的比原來的H(x)更容易学习。极端的,如果一个恒等映射是可优化的,那么用一组非线性层来优化残差到0比优化这个恒等映射简单。” role=”presentation”>更容易學習。極端的,如果一個恆等對映是可優化的,那麼用一組非線性層來優化殘差到0比優化這個恆等對映簡單。更容易學習。極端的,如果一個恆等映射是可優化的,那麼用一組非線性層來優化殘差到0比優化這個恆等映射簡單。更容易學習。極端的,如果一個恆等對映是可優化的,那麼用一組非線性層來優化殘差到0比優化這個恆等對映簡單。
F(x) x$在網路中表現為跳過連線,把輸入加到預測出來的殘差輸出中。不需要額外的引數和計算,也不會破壞原來端到端的結構,能夠很容易的用現有的庫實現。
通過實驗證明了:

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

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

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

深度殘差學習

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

  1. 恆等對映 identity mapping

    y=F(x,{Wi}) x(1)” role=”presentation”>y=F(x,{Wi}) x(1)y=F(x,{Wi}) x(1)

    y = F(x,\{W_i\}) x \quad (1)

  2. 線性對映 projection mapping

    y=F(x,{Wi}) Wsx(2)” role=”presentation”>y=F(x,{Wi}) Wsx(2)y=F(x,{Wi}) Wsx(2)

    y = F(x,\{W_i\}) W_sx \quad (2)

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

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

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

網路結構

殘差網路結構

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

Residual網路:在plain的基礎上增加殘差捷徑連線。實線表示輸出和輸出大小一致,可以直接用式(1)連線;虛線維度加倍了,有兩種方法來處理:使用0填充來增加維度,使用式(2)的乘上Ws來匹配維度(通過1×1卷積來實現)。這兩種卷積的步長都是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)” role=”presentation”>y=F(x,{Wi}) x(1)y=F(x,{Wi}) x(1)

    y = F(x,\{W_i\}) x \quad (1)

  2. 線性對映 projection mapping

    y=F(x,{Wi}) Wsx(2)” role=”presentation”>y=F(x,{Wi}) Wsx(2)y=F(x,{Wi}) Wsx(2)

    y = F(x,\{W_i\}) W_sx \quad (2)

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

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

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

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

34層殘差網路ABC對映對比

單模型結果:

殘差單模型比較

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

Bottleneck設計

設計了Bottleneck結構,考慮到訓練時間的開銷,使用1×1,3×3,1×1的3層卷積來代替原來的2層卷積作為一個塊,1×1的卷積可以減少和恢復維度。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評價結果