殘差網(wǎng)絡(luò)ResNet筆記

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í),同等映射有兩種可選方案:

  1. 直接通過zero padding 來增加維度(channel)。
  2. 乘以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:

  1. 實(shí)驗(yàn)了plain-18和plain-34,展示了退化問題。說明了退化問題不是因?yàn)樘荻葟浬ⅲ驗(yàn)榧尤肓薆N。另外也不能簡單地增加迭代次數(shù)來使其收斂,增加迭代次數(shù)仍然會(huì)出現(xiàn)退化問題。
  1. 實(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)化,收斂更快。
  1. 對(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,不采用這種方法。
  1. 更深的瓶頸結(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ā)生了過擬合。
  1. 最后作者把ResNet用到了其他比賽上,拿了很多冠軍...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評(píng)論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,348評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,083評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,442評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,802評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,983評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,542評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,287評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,486評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,710評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評(píng)論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,224評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,462評(píng)論 2 378

推薦閱讀更多精彩內(nèi)容