經典 CNN 模型整理 (05) - ResNet
4 min readOct 29, 2020
本系列將整理一些經典 CNN 模型的重點,目的是讓讀者和自己可以在最短的時間內回想起被遺忘的記憶,比較不熟悉的朋友也可以用重點去搭配論文幫助消化!
上一篇:GoogleNet
<Deep Residual Learning for Image Recognition> Kaiming et al., 2015.
ResNet 在 2015 年帶著五個冠軍榮譽發佈:ImageNet 分類、檢測、定位;COCO 檢測、分割。下面來聊聊何博士這篇神級論文的重點:
- Degradation Problem(退化問題)-當網路加深時,準確度卻出現飽和甚至下降的狀況,因為不僅測試、連訓練誤差也增加【如圖二】故不會是過擬合,為此本篇提出了 residual(殘差)架構。
- Residual(殘差)-這裡用 x 表示輸入、H(x) 表示輸出(學到的特徵)、定義兩者間的差異為 F(x) = H(x) - x 也就殘差,故輸出也能看做 F(x) + x,即公式從 x → H(x) 轉為 x → F(x) + x ,殘差接在激活函數前【如圖一】。
直觀來說學習微小的殘差部分也比較容易,另外這樣的短路連接(Shortcut Connections)結構也沒有增加額外的參數量跟計算需求。
假設一種極端狀況:在這幾層都沒學到任何東西也就是 F(x) = 0,此時輸入=輸出,即為恆等映射(Identity Mapping)。 - Identity vs. Projection Shortcuts-這裡先透過公式讓大家更了解兩者區別:Identity Shortcuts ( y = F(x, W) + x );Projection Shortcuts ( y = F(x, W) + Wx )
前面已經證明 Identity Shortcuts 的效果,在論文中接著比較其與 Projection Shortcuts 交互產生的三種配置:(A)當維度增加時使用 Zero-Padding Shortcuts 其他用 Identity Shortcuts;(B)當維度增加時使用 Projection Shortcuts(1 x 1 卷積)其他用 Identity Shortcuts;(C)全部使用 Projection Shortcuts。
效果 A < B < C 但差異不大,(A)使用於 ResNet-18/34 與一般架構(plain nets)及 CIFAR10 的實驗中;(B)使用於 ResNet-50/101/152;而(C)會增加過多記憶體和時間複雜度故不採用。 - Bottleneck Architectures-為了在 ImageNet 任務中使用更深的網路,他們設計出了新的 Bottleneck 架構【如圖三(右)】,其中加入了 1 x 1 卷積來調整維度。
- Warm up-他們發現直接使用 0.1 作為起始學習率太大,故先以 0.01 開始到一定程度收斂(training error < 80 %)後再回到 0.1,Pytorch 實現可以參考我的這篇文章。
順帶一提他們使用 SGD 搭配 weight decay = 0.0001 & momentum = 0.9 且不使用 dropout。
感謝觀看,有任何問題歡迎留言討論或連繫我,祝有個愉快的一天😉