深度學習: ResNet (殘差) 網路
Introduction
添加了一些直達通道,相當於加入了約束。使得某些原本就應為identity mapping的module,直接獲得identity mapping的能力。
起因
2015年之前,在層數不多的深度網路模型中,人們通過 設定 合理的權重初始化、改進啟用函式 等等一系列手段,有效緩解了梯度消失,使得深度網路訓練變得可行。
於是煉丹師們覺得,簡單地累加網路層,訓練誤差(低誤差意味著更強大的表達能力)在模型收斂後maybe會進一步降低。結果不僅沒有,誤差反而更大了(下圖為20層和56層的常規網路在CIFAR-10資料集上的 訓練錯誤率[左圖] 和 測試錯誤率[右圖]):
研究發現,原來 如果繼續加大網路的層數,梯度消失這貨就會又跑出來作祟了。原來那些對應措施已經不夠用了,是時候開始鳥槍換炮了。
於是 ResNet (殘差) 網路 在2015年便應運而生:
殘差模組
殘差網路是由下面這種 殘差模組 壘疊而成:
殘差模組 又分為 常規殘差模組[左圖]
和 瓶頸殘差模組 (bottleneck residual block)[右圖]
:
瓶頸殘差模組 中的1×1卷積能夠起到升降維的作用,從而令3×3卷積可以在較低維度的輸入上進行。在非常深的網路中,該設計可大幅減少計算量。
殘差網路
由於 殘差模組 的引入,有效緩解了梯度消失的影響,使得網路模型層數可以大大增加。
下圖為 ResNet-34網路 與 VGG-19網路 的深度對比:
下圖為 ResNet-152網路 與 VGG-19網路 的深度對比。深度差距就更誇張了:
隨著層數的加深,模型的表達能力自然跟著水漲船高:
ResNet橫掃當年 ILSVRC 和 COCO 等競賽一系列子任務的第一名,成為網路結構的主流,並影響至今。
Version
ResNet自身也有多個版本。基本上是層數越深,誤差越小,模型表達能力越強: