ResNet v1
1、四個問題
-
要解決什麼問題?/ 用了什麼辦法解決?
- 理論上來說,深層網絡的效果至少不會比淺層網絡差。
- 對於淺層網絡A,深層網絡B,假設B的前面部分與A完全相同,後面部分都是恆等映射,這樣B至少也會與A性能相同,不會更差。
- 在深層網絡中存在梯度消失/梯度爆炸(vanishing/exploding gradients)。
- 歸一初始化(normalized initialization)和中間歸一化(intermediate normalization)在很大程度上解決了這一問題,它使得數十層的網絡在反向傳播的隨機梯度下降(SGD)上能夠收斂。
- 訓練深層網絡時會出現退化(degrdation):隨着網絡深度的增加,準確率達到飽和(不足爲奇)然後迅速退化。
- 提出深度殘差網絡來解決這一問題。
- 這一退化並不是由過擬合導致的,而是網絡過深導致難以訓練。論文中給出的例子中深層網絡的訓練和測試誤差都比淺層網絡的更高,如下圖。
- 理論上來說,深層網絡的效果至少不會比淺層網絡差。
-
效果如何?
- 在ImageNet上進行了相關實驗展示了前面提到的退化問題以及評估深度殘差網絡,結果表明:
- 極深的殘差網絡是很容易優化的,但是對應的“plain”網絡(僅是堆疊了層)在深度增加時卻出現了更高的錯誤率。
- 深度殘差網絡能夠輕易的由增加層來提高準確率,並且結果也大大優於以前的網絡。
- 在ImageNet上進行了相關實驗展示了前面提到的退化問題以及評估深度殘差網絡,結果表明:
-
還存在什麼問題?
- 論文中實驗了一個超過1000層的模型,該1202層的模型的測試結果比110層的模型要差,儘管訓練錯誤率差不多。這很有可能是過擬合導致的,可能還需要更強大的正則化方法比如maxout或者dropout來對網絡進行改進。
2、論文概述
2.1、殘差單元
We hypothesize that it is easier to optimize the residual mapping than to optimize the original, unreferenced mapping
- 設計殘差單元的初衷:
- 相比於使用幾層網絡來擬合一個隱藏的非線性映射,讓網絡來學習它的殘差會更容易一些,即訓練殘差比原始函數更容易。
- 極端情況下,如果恆等映射(identity mapping)更理想,那麼將殘差網絡變爲0比堆疊多個非線性層來擬合恆等映射更容易。
2.2、shortcut連接
- 殘差塊通過shortcut連接實現。
- 恆等shortcuts(identity shortcuts):要求兩個輸入的維度相同。
- 映射shortcuts(projection shortcuts):如果兩個輸入的維度不同,可以給shortcut連接加上一個線性映射。
- shortcuts實現的三種選項:
- 對增加的維度使用0填充,所有的shortcuts是無參數的 。
- 對增加的維度使用projection shortcuts,其它使用identity shortcuts 。
- 所有的都採用projection shortcuts 。
- 三種選項相計較:
- 2略好於1,可以認爲是1中填充的0並沒有進行殘差學習。
- 3略好於2,可以將其歸結於更多的projection shortcuts引入了更多的參數。
- 1、2、3幾個模型的差距很小,說明了projection shortcuts對於解決退化(degradation)問題不是必須得。
- 爲了減少複雜度和模型尺寸,不採用模型3,而是選擇模型2。
2.3、瓶頸結構
- 第一個卷積負責減小維度,讓中間的卷積獲得更少的通道數, 第二個卷積負責增加維度。整個架構類似瓶頸,可以減少計算複雜度。
2.4、網絡結構
2.5、訓練細節
- 圖像增強:從原始圖像或水平翻轉圖像中隨機採樣一個的crop。
- 圖像預處理:減去均值。
- 卷積結構:每個卷積層後,都接一個batch normalization(BN)。
- 超參數:batch size爲256;學習率爲0.1,當測試集上的錯誤率平穩後就將學習率除以10;採用SGD,權值衰減設置爲0.0001,動量爲0.9;整個模型迭代次;
- 測試時,融合多個模型的結果,分別計算多尺度圖片的結果,對結果的評分取均值。(調整圖像的大小使它的短邊長度分別爲 )