Deep Residual Learning for Image Recognition
1. 思想
作者根據(jù)輸入將層表示為學(xué)習(xí)殘差函數(shù)。實(shí)驗(yàn)表明,殘差網(wǎng)絡(luò)更容易優(yōu)化,并且能夠通過增加相當(dāng)?shù)纳疃葋硖岣邷?zhǔn)確率。
核心是解決了增加深度帶來的副作用(退化問題),這樣能夠通過單純地增加網(wǎng)絡(luò)深度,來提高網(wǎng)絡(luò)性能。
- 作者在ImageNet上實(shí)驗(yàn)了一個(gè)152層的殘差網(wǎng)絡(luò),比VGG深8倍,取得了3.57%的錯(cuò)誤率。
- 作者通過一系列實(shí)驗(yàn)證明了表示的深度(即網(wǎng)絡(luò)的深度)對(duì)很多視覺識(shí)別任務(wù)都至關(guān)重要。僅僅由于使用了非常深的網(wǎng)絡(luò),作者就在COCO目標(biāo)檢測數(shù)據(jù)集上獲得了28%的相對(duì)提升。
2. 筆記
網(wǎng)絡(luò)的深度為什么重要?
因?yàn)镃NN能夠提取low/mid/high-level的特征,網(wǎng)絡(luò)的層數(shù)越多,意味著能夠提取到不同level的特征越豐富。并且,越深的網(wǎng)絡(luò)提取的特征越抽象,越具有語義信息。
為什么不能簡單地增加網(wǎng)絡(luò)層數(shù)?
- 對(duì)于原來的網(wǎng)絡(luò),如果簡單地增加深度,會(huì)導(dǎo)致梯度彌散或梯度爆炸。
對(duì)于該問題的解決方法是正則化初始化和中間的正則化層(Batch Normalization),這樣的話可以訓(xùn)練幾十層的網(wǎng)絡(luò)。
- 雖然通過上述方法能夠訓(xùn)練了,但是又會(huì)出現(xiàn)另一個(gè)問題,就是退化問題,網(wǎng)絡(luò)層數(shù)增加,但是在訓(xùn)練集上的準(zhǔn)確率卻飽和甚至下降了。這個(gè)不能解釋為overfitting,因?yàn)閛verfit應(yīng)該表現(xiàn)為在訓(xùn)練集上表現(xiàn)更好才對(duì)。
退化問題說明了深度網(wǎng)絡(luò)不能很簡單地被很好地優(yōu)化。
作者通過實(shí)驗(yàn):通過淺層網(wǎng)絡(luò)+ y=x 等同映射構(gòu)造深層模型,結(jié)果深層模型并沒有比淺層網(wǎng)絡(luò)有等同或更低的錯(cuò)誤率,推斷退化問題可能是因?yàn)樯顚拥木W(wǎng)絡(luò)并不是那么好訓(xùn)練,也就是求解器很難去利用多層網(wǎng)絡(luò)擬合同等函數(shù)。
怎么解決退化問題?
深度殘差網(wǎng)絡(luò)。如果深層網(wǎng)絡(luò)的后面那些層是恒等映射,那么模型就退化為一個(gè)淺層網(wǎng)絡(luò)。那現(xiàn)在要解決的就是學(xué)習(xí)恒等映射函數(shù)了。 但是直接讓一些層去擬合一個(gè)潛在的恒等映射函數(shù)H(x) = x,比較困難,這可能就是深層網(wǎng)絡(luò)難以訓(xùn)練的原因。但是,如果把網(wǎng)絡(luò)設(shè)計(jì)為H(x) = F(x) + x,如下圖。我們可以轉(zhuǎn)換為學(xué)習(xí)一個(gè)殘差函數(shù)F(x) = H(x) - x. 只要F(x)=0,就構(gòu)成了一個(gè)恒等映射H(x) = x. 而且,擬合殘差肯定更加容易。
其他的參考解釋
- F是求和前網(wǎng)絡(luò)映射,H是從輸入到求和后的網(wǎng)絡(luò)映射。比如把5映射到5.1,那么引入殘差前是F'(5)=5.1,引入殘差后是H(5)=5.1, H(5)=F(5)+5, F(5)=0.1。這里的F'和F都表示網(wǎng)絡(luò)參數(shù)映射,引入殘差后的映射對(duì)輸出的變化更敏感。比如s輸出從5.1變到5.2,映射F'的輸出增加了1/51=2%,而對(duì)于殘差結(jié)構(gòu)輸出從5.1到5.2,映射F是從0.1到0.2,增加了100%。明顯后者輸出變化對(duì)權(quán)重的調(diào)整作用更大,所以效果更好。殘差的思想都是去掉相同的主體部分,從而突出微小的變化,看到殘差網(wǎng)絡(luò)我第一反應(yīng)就是差分放大器...地址
至于為何shortcut的輸入時(shí)X,而不是X/2或是其他形式。kaiming大神的另一篇文章[2]中探討了這個(gè)問題,對(duì)以下6種結(jié)構(gòu)的殘差結(jié)構(gòu)進(jìn)行實(shí)驗(yàn)比較,shortcut是X/2的就是第二種,結(jié)果發(fā)現(xiàn)還是第一種效果好啊(攤手)。
這種殘差學(xué)習(xí)結(jié)構(gòu)可以通過前向神經(jīng)網(wǎng)絡(luò)+shortcut連接實(shí)現(xiàn),如結(jié)構(gòu)圖所示。而且shortcut連接相當(dāng)于簡單執(zhí)行了同等映射,不會(huì)產(chǎn)生額外的參數(shù),也不會(huì)增加計(jì)算復(fù)雜度。 而且,整個(gè)網(wǎng)絡(luò)可以依舊通過端到端的反向傳播訓(xùn)練。
ImageNet上的實(shí)驗(yàn)證明了作者提出的加深的殘差網(wǎng)絡(luò)能夠比簡單疊加層生產(chǎn)的深度網(wǎng)絡(luò)更容易優(yōu)化,而且,因?yàn)樯疃鹊脑黾樱Y(jié)果得到了明顯提升。另外在CIFAR-10數(shù)據(jù)集上相似的結(jié)果以及一系列大賽的第一名結(jié)果表明ResNet是一個(gè)通用的方法。
相關(guān)的工作
-
殘差表示
VALD,F(xiàn)isher Vector都是是對(duì)殘差向量編碼來表示圖像,在圖像分類,檢索表現(xiàn)出優(yōu)于編碼原始向量的性能。
在low-level的視覺和計(jì)算機(jī)圖形學(xué)中,為了求解偏微分方程,廣泛使用的Multigrid方法將系統(tǒng)看成是不同尺度上的子問題。每個(gè)子問題負(fù)責(zé)一種更粗糙與更精細(xì)尺度的殘差分辨率。Multigrid的一種替換方法是層次化的預(yù)處理,層次化的預(yù)處理依賴于兩種尺度的殘差向量表示。實(shí)驗(yàn)表明,這些求解器要比對(duì)殘差不敏感的求解器收斂更快。 -
shortcut連接
shortcut連接被實(shí)驗(yàn)和研究了很久。Highway networks也使用了帶有門函數(shù)的shortcut。但是這些門函數(shù)需要參數(shù),而ResNet的shortcut不需要參數(shù)。而且當(dāng)Highway networks的門函數(shù)的shortcut關(guān)閉時(shí),相當(dāng)于沒有了殘差函數(shù),但是ResNet的shortcut一直保證學(xué)習(xí)殘差函數(shù)。而且,當(dāng)Highway networks的層數(shù)急劇增加時(shí),沒有表現(xiàn)出準(zhǔn)確率的上升了。總之,ResNet可以看成是Highway networks的特例,但是從效果上來看,要比Highway networks好。
深度殘差學(xué)習(xí)
-
殘差學(xué)習(xí)
根據(jù)多層的神經(jīng)網(wǎng)絡(luò)理論上可以擬合任意函數(shù),那么可以利用一些層來擬合函數(shù)。問題是直接擬合H(x)還是殘差函數(shù),由前文,擬合殘差函數(shù)F(x) = H(x) - x更簡單。雖然理論上兩者都能得到近似擬合,但是后者學(xué)習(xí)起來顯然更容易。
作者說,這種殘差形式是由退化問題激發(fā)的。根據(jù)前文,如果增加的層被構(gòu)建為同等函數(shù),那么理論上,更深的模型的訓(xùn)練誤差不應(yīng)當(dāng)大于淺層模型,但是出現(xiàn)的退化問題表面,求解器很難去利用多層網(wǎng)絡(luò)擬合同等函數(shù)。但是,殘差的表示形式使得多層網(wǎng)絡(luò)近似起來要容易的多,如果同等函數(shù)可被優(yōu)化近似,那么多層網(wǎng)絡(luò)的權(quán)重就會(huì)簡單地逼近0來實(shí)現(xiàn)同等映射,即F(x) = 0。
實(shí)際情況中,同等映射函數(shù)可能不會(huì)那么好優(yōu)化,但是對(duì)于殘差學(xué)習(xí),求解器根據(jù)輸入的同等映射,也會(huì)更容易發(fā)現(xiàn)擾動(dòng),總之比直接學(xué)習(xí)一個(gè)同等映射函數(shù)要容易的多。根據(jù)實(shí)驗(yàn),可以發(fā)現(xiàn)學(xué)習(xí)到的殘差函數(shù)通常響應(yīng)值比較小,同等映射(shortcut)提供了合理的前提條件。 - 通過shortcut同等映射
F(x)與x相加就是就是逐元素相加,但是如果兩者維度不同,需要給x執(zhí)行一個(gè)線性映射來匹配維度:
用來學(xué)習(xí)殘差的網(wǎng)絡(luò)層數(shù)應(yīng)當(dāng)大于1,否則退化為線性。文章實(shí)驗(yàn)了layers = 2或3,更多的層也是可行的。
用卷積層進(jìn)行殘差學(xué)習(xí):以上的公式表示為了簡化,都是基于全連接層的,實(shí)際上當(dāng)然可以用于卷積層。加法隨之變?yōu)閷?duì)應(yīng)channel間的兩個(gè)feature map逐元素相加。
-
網(wǎng)絡(luò)結(jié)構(gòu)
作者由VGG19設(shè)計(jì)出了plain 網(wǎng)絡(luò)和殘差網(wǎng)絡(luò),如下圖中部和右側(cè)網(wǎng)絡(luò)。然后利用這兩種網(wǎng)絡(luò)進(jìn)行實(shí)驗(yàn)對(duì)比。
key point:
設(shè)計(jì)網(wǎng)絡(luò)的規(guī)則:1.對(duì)于輸出feature map大小相同的層,有相同數(shù)量的filters,即channel數(shù)相同;2. 當(dāng)feature map大小減半時(shí)(池化),filters數(shù)量翻倍。
對(duì)于殘差網(wǎng)絡(luò),維度匹配的shortcut連接為實(shí)線,反之為虛線。維度不匹配時(shí),同等映射有兩種可選方案:
- 直接通過zero padding 來增加維度(channel)。
- 乘以W矩陣投影到新的空間。實(shí)現(xiàn)是用1x1卷積實(shí)現(xiàn)的,直接改變1x1卷積的filters數(shù)目。這種會(huì)增加參數(shù)。
-
實(shí)施
key point:
訓(xùn)練測試的multi-scale,BN,color augmentation. 測試時(shí)的10-cut.
實(shí)驗(yàn)
key point:
- 實(shí)驗(yàn)了plain-18和plain-34,展示了退化問題。說明了退化問題不是因?yàn)樘荻葟浬ⅲ驗(yàn)榧尤肓薆N。另外也不能簡單地增加迭代次數(shù)來使其收斂,增加迭代次數(shù)仍然會(huì)出現(xiàn)退化問題。
- 實(shí)驗(yàn)了ResNet-18和ResNet-34不會(huì)出現(xiàn)退化問題,ResNet-34明顯表現(xiàn)的比ResNet-18和plain-34好,證明了殘差學(xué)習(xí)解決了隨網(wǎng)絡(luò)深度增加帶來的退化問題。 而且同等深度的plain-18和ResNet-18,殘差網(wǎng)絡(luò)更容易優(yōu)化,收斂更快。
- 對(duì)于同等映射維度不匹配時(shí),匹配維度的兩種方法,zero padding是參數(shù)free的,投影法會(huì)帶來參數(shù)。作者比較了這兩種方法的優(yōu)劣。實(shí)驗(yàn)證明,投影法會(huì)比zero padding表現(xiàn)稍好一些。因?yàn)閦ero padding的部分沒有參與殘差學(xué)習(xí)。實(shí)驗(yàn)表明,將維度匹配或不匹配的同等映射全用投影法會(huì)取得更稍好的結(jié)果,但是考慮到不增加復(fù)雜度和參數(shù)free,不采用這種方法。
- 更深的瓶頸結(jié)構(gòu):
作者探索的更深的網(wǎng)絡(luò)。 考慮到時(shí)間花費(fèi),將原來的building block(殘差學(xué)習(xí)結(jié)構(gòu))改為瓶頸結(jié)構(gòu),如上圖。首端和末端的1x1卷積用來削減和恢復(fù)維度,相比于原本結(jié)構(gòu),只有中間3x3成為瓶頸部分。這兩種結(jié)構(gòu)的時(shí)間復(fù)雜度相似。此時(shí)投影法映射帶來的參數(shù)成為不可忽略的部分(以為輸入維度的增大),所以要使用zero padding的同等映射。
替換原本ResNet的殘差學(xué)習(xí)結(jié)構(gòu),同時(shí)也可以增加結(jié)構(gòu)的數(shù)量,網(wǎng)絡(luò)深度得以增加。生成了ResNet-50,ResNet-101,ResNet-152. 隨著深度增加,因?yàn)榻鉀Q了退化問題,性能不斷提升。
作者最后在Cifar-10上嘗試了1202層的網(wǎng)絡(luò),結(jié)果在訓(xùn)練誤差上與一個(gè)較淺的110層的相近,但是測試誤差要比110層大1.5%。作者認(rèn)為是采用了太深的網(wǎng)絡(luò),發(fā)生了過擬合。
- 最后作者把ResNet用到了其他比賽上,拿了很多冠軍...