其實ResNet這篇論文看了很多次了,也是近幾年最火的算法模型之一,一直沒整理出來(其實不是要到用可能也不會整理吧,懶字頭上一把刀啊,主要是是為了將resnet作為encoder嵌入到unet架構中,自己復現模型然后在數據集上進行測試所以才決定進行整理),今天把它按照理解盡可能詳細的解釋清楚跟大家一起分享一下,哪里沒有說明白或者說錯的,歡迎指出留言。
深度殘差神經網絡(Residual Networks)是2015年(12月在arxiv.org可下載)何凱明大神提出來的一個神經網絡模型,獲得了2015年多個競賽數據集的第一。模型被提出主要是為了解決如下兩個主要問題:
- 減緩深度學習模型難以訓練的問題(e.g. 超過100層的神經網絡)
- 模型退化(degradation problem)問題,這個之后會詳細解釋什么是退化(表示看了論文很迷茫,還是看了不少別人的博客才恍然大悟)
這里還有一點需要被注意的是,深度殘差網絡是基於這么一個假設:越深的網絡理應具備更好的學習能力。這個后來也確實被證明層數的增加確實帶來不一樣的效果,不論以什么樣的形式疊加和計算(如AlexNet、GoogLeNet、DenseNet等等)。
一、簡要介紹
雖然假設越深的網絡應該具備更好的表征學習能力,但是接踵而來的問題也很明顯,如梯度消失和梯度爆炸(vanishing/exploding gradients)會阻礙收斂的情況。但是歸一化(normalized initialization & batch normalization)都極大程度的緩解了梯度所帶來的問題。相反的,深度學習網絡所面對的不是收斂不收斂的問題,反而是隨着層數的增加所面臨的網絡退化問題,原文如是說:with the network depth increasing, accuracy gets saturated and then degrades rapidly。需要注意的是網絡的退化不是因為過擬合等導致的。
那什么是“退化”呢?這里主要分成兩塊來詳細進行解釋:
①隨着網絡訓練層數的增加,退化問題會以正確性達到飽和程度,這是可預見或者說符合預期的。但是何為“可預見”呢?這主要是搭建網絡的時候,一般期望足夠深的網絡是具備相應的學習能力的,以此來保證所創建的模型能足以良好地表征(modelling)數據中所有的特征。那么這個時候就會想,是否額外增加層數會加強網絡的學習能力並使其能完全學習到數據中的所有特征。然而根據觀察並不是如此,當網絡層數的增加(層數增加在准確率飽和區間之后),網絡的預測准確率不升反降。當然這個可以認為是過擬合導致的。但是如果不是過擬合導致的原因呢?
②假設現在有一個N層網絡,它的訓練誤差為e1,對於另外一個網絡M層網絡(M > N),我們的期望是至少該M層網絡的表現能力跟N層網絡的表現能力是一致的。假設M層網絡的前面部分網絡是N層網絡構成,然后剩下的M-N層網絡由恆等映射網絡構成,也就是說剩下的這些網絡的每一層的輸入和輸出保持一致,沒有任何多余的因素加入,這么做的原因是希望后續的網絡能很好的學習前N層網絡學習的結果,如果存在這么一個M層網絡,就希望它具備更好的表征能力。但是事實卻不是如此,上圖來自於原論文,可以看出深層網絡並沒有帶來更好的結果。這就是所謂的網絡退化問題,也是ResNet提出來最主要要解決的問題。那ResNet是如何解決退化問題的呢?
二、殘差模塊
殘差模塊就是ResNet提出來解決退化問題的,其主要結構如下圖所示。也就是說經過疊加的基層神經網絡之后,原本前面的輸出會和這幾層疊加神經網絡輸出疊加(論文中稱之為恆等映射)作為下一個疊加模塊的輸入。假設放到卷積神經網絡中,它的表現形式就是(output + ((conv + bn + relu) + (conv + bn))) + relu。這么做有一個優勢就是恆等映射並不會引入新的訓練參數或者增加額外的計算開銷。
除此之外,殘差神經網絡還具備如下兩個有點:①比沒有引入殘差模塊的普通疊加網絡來說具備更好的收斂及更易於優化,②除此之外,對比一般殘差網絡能極大地提升訓練和預測地准確度。下圖是ResNet-34的網絡結構圖:
這里有些朋友對Highway Networks(15年5月)可能有了解覺得ResNet跟其是一個類型的網絡,甚至有說ResNet就是變種的highway networks(這個跟論文的發布前后有關系,因為highway networks比resnet早幾個月誕生,其實有點撞車的意味)。當然何凱明大神在論文中有指出他們跟highway networks的差別,主要體現在下兩方面:
- highway network提出的short-cut connection with gating function是與數據獨立開來的,並且有學習參數,而ResNet的identity mapping(恆等映射)是沒有任何參數的;
- highway network沒有提到任何關於深度網絡(特別是100層以上的網絡)所體現出來的性能和在特定數據上訓練的結果(這點ResNet確實做得更好,其實深度學習領域相關的算法往往是先有實踐后有理論,所以實驗的論證是非常有必要的,ResNet在這上面做的實驗是很充足,這點也反映在論文上面);