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檢測和分割中獲得了冠軍。
引言
深度卷積神經網絡能夠整合各個層次的信息用來進行端到端的任務。網絡深度很重要。
網絡變深了之後一開始就會容易梯度爆炸/彌散,導致不能收斂,使用標準初始化和標準化層來解決。
深的網絡可以收斂了以後,退化問題又出來了。退化是指隨着網絡加深,準確度飽和並降低。退化不是由過擬合引起的,層數越多訓練誤差越大。
退化問題顯示了不是所有的系統都容易優化的。假設有一個網絡,對應還有一個通過恆等映射來構造的加深網絡,那麼加深網絡的訓練誤差不會比淺層的差。但是實驗顯示現有的優化器找不到和淺層網絡一樣好的解。
使用殘差結構來解決退化問題。假設我們需要擬合的關係是 ,讓 ,原來的 。假設殘差映射4F(x) H(x) F(x)+x$在網絡中表現爲跳過連接,把輸入加到預測出來的殘差輸出中。不需要額外的參數和計算,也不會破壞原來端到端的結構,能夠很容易的用現有的庫實現。
通過實驗證明了:
- 深殘差網絡更容易優化,同樣深度的普通網絡的訓練誤差比殘差網絡要大;
- 殘差網絡可以從深度中獲得比普通網絡更多的性能。
在CIFAR-10中也有同樣的現象,說明這種作用具有通常的效果,不單單在特定的數據集上。成功訓練了100層的網絡,並且嘗試了超過1000層的網絡。
在ImageNet分類數據集上,152層殘差網絡,目前比賽網絡層數最深的網絡,集成模型top-5誤差爲3.57%,獲得了ILSVRC-2015分類比賽、檢測、定位、COCO檢測、分割的冠軍。這些都說明了殘差學習準則具有廣泛性,能夠應用到其他的深度學習任務中。
深度殘差學習
用一些層來擬合需要的關係映射 。假設可以用一些非線性的層來逼近這個關係,那麼和逼近 是等價的。也就是說擬合 和擬合 是等價,但是學習的難度是不一樣的。
恆等映射 identity mapping
線性映射 projection mapping
通過恆等映射加深網絡,訓練誤差也不會比原來要小。但是退化現象說明了很深的網絡很難優化。通過殘差來重構網絡,優化殘差比優化一個重新的函數要簡單。恆等映射比0映射更容易學習。
使用跳過連接來實現如上的殘差結構。如式1的殘差塊不需要額外的參數和計算,在實際和比較實驗(原始加深和殘差加深)都很有用。式1只有在x和F(x)維度一樣的纔可以用,否則就需要增加Ws來匹配。實驗表明維度相同的時候使用恆等映射已經足夠了,不需要Ws來增加模型複雜度。
殘差函數F的構建是很靈活的,可以跳過2-3個或者更多的層,但是隻跳過一個層,就類似於一個線性函數 ,沒有看到有什麼優勢。
網絡結構
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。
網絡結構如下:
Plain網絡
34層的網絡驗證集誤差比17層高,即使18層是34層的子任務之一,從34層訓練集誤差比18層誤差高中可以看到退化現象。可能是由於梯度彌散導致了退化。使用了BN,在前向中檢查輸出方差不爲0,反向梯度也正常,用了BN以後沒有梯度彌散。34層的網絡性能也還算不錯,所以可能是由於優化難度加大,收斂速度減慢,導致了退化問題。
Residual 網絡
在base-line的基礎上每2個卷積增加了恆等映射的捷徑連接,維度不同的地方使用了0填充。
- 和plain相反,34層的ResNet比18層的性能好,訓練集和驗證集誤差都好。說明解決了退化問題。
- 和plain相比,34層的ResNet比18層的性能好,說明ResNet在深網絡中有效。
- 18層的ResNet也比plain準確率高,說明了ResNet在淺一點的網絡,現有的優化方法能夠找到優解,也能夠加快收斂。
top-1評價指標的對比:
對比恆等映射和線性映射
恆等映射 identity mapping
線性映射 projection mapping
對比在維度不對時使用0填充和線性映射,以及在維度相同時使用恆等映射和線性映射。
A,0填充和恆等映射;B,維度不同時使用線性映射和恆等映射;C,都使用線性映射。
表3顯示,ABC都比不用殘差塊好。B比A好,可能是因爲0填充,有部分沒有用殘差學習;C比B好,可能是C比B多使用了參數。
ABC之間差別不大,說明了這個映射不是退化問題的關鍵因素。
單模型結果:
模型融合結果:
Bottleneck設計
設計了Bottleneck結構,考慮到訓練時間的開銷,使用1x1,3x3,1x1的3層卷積來代替原來的2層卷積作爲一個塊,1x1的卷積可以減少和恢復維度。2層和3層的設計具有相似的時間複雜度。
不用參數的映射對這種bottleneck結構很重要,如果使用了線性映射,那麼時間和空間複雜度加倍,因爲捷徑連接了2個高維。所以恆等映射會讓bottleneck更加有效。
使用更多的3層塊來構造101層和152層網絡,其複雜度比VGG16更低。20/101/152層殘差網絡比34層的準確率更高,沒有退化問題,越深的網絡準確率越高。
CIFAR-10和分析
整體的網絡結構如下表,改變n的大小來調整整體的網路層數。使用如圖3中的結構。爲了分析進行簡化,使用A方案。
訓練過程:權重衰減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層的網絡。從普通和殘差網絡對比來看,越深的殘差網絡性能越好,說明克服了優化困難。
讓n=18,構建了110層的殘差網絡,學習率從0.1降到0.01訓練,知道400代訓練誤差低於80%以後改回0.1繼續訓練,收斂的很好。和其他深的網絡FitNet和Highway網絡相比,參數更少,但是效果更好。
每層響應分析
每層BN層和ReLU層中間的數據,ResNet的方差都比plain的小,證明了3.1節,殘差塊比普通更接近0,更容易學習。
探索超過1000層的網絡
n=200,構造了1202層的網絡,和110層的網絡相比,訓練誤差差不多,但是測試誤差高,可能是由於過擬合導致了泛化性能變差,將來使用正則化和dropout進行測試。
PASCAL和COCO的目標檢測比賽
基於Faster R-CNN框架,使用101層的殘差網絡代替VGG16進行特徵提取,都比原來要好,COCO相對提升了28%。