論文筆記——Deep Residual Learning for Image Recognition

論文地址:Deep Residual Learning for Image Recognition網絡

ResNet——MSRA何凱明團隊的Residual Networks,在2015年ImageNet上大放異彩,在ImageNet的classification、detection、localization以及COCO的detection和segmentation上均斬獲了第一名的成績,並且Deep Residual Learning for Image Recognition也得到了CVPR2016的best paper,實在是實至名歸。就讓咱們來觀摩大神的這篇上乘之做。app

ResNet最根本的動機就是所謂的「退化」問題,即當模型的層次加深時,錯誤率卻提升了,以下圖:
ide

可是模型的深度加深,學習能力加強,所以更深的模型不該當產生比它更淺的模型更高的錯誤率。而這個「退化」問題產生的緣由歸結於優化難題,當模型變複雜時,SGD的優化變得更加困難,致使了模型達不到好的學習效果。函數

針對這個問題,做者提出了一個Residual的結構:
學習

即增長一個identity mapping(恆等映射),將原始所須要學的函數H(x)轉換成F(x)+x,而做者認爲這兩種表達的效果相同,可是優化的難度卻並不相同,做者假設F(x)的優化 會比H(x)簡單的多。這一想法也是源於圖像處理中的殘差向量編碼,經過一個reformulation,將一個問題分解成多個尺度直接的殘差問題,可以很好的起到優化訓練的效果。
這個Residual block經過shortcut connection實現,經過shortcut將這個block的輸入和輸出進行一個element-wise的加疊,這個簡單的加法並不會給網絡增長額外的參數和計算量,同時卻能夠大大增長模型的訓練速度、提升訓練效果,而且當模型的層數加深時,這個簡單的結構可以很好的解決退化問題。
接下來,做者就設計實驗來證實本身的觀點。
首先構建了一個18層和一個34層的plain網絡,即將全部層進行簡單的鋪疊,而後構建了一個18層和一個34層的residual網絡,僅僅是在plain上插入了shortcut,並且這兩個網絡的參數量、計算量相同,而且和以前有很好效果的VGG-19相比,計算量要小不少。(36億FLOPs VS 196億FLOPs,FLOPs即每秒浮點運算次數。)這也是做者反覆強調的地方,也是這個模型最大的優點所在。
優化

模型構建好後進行實驗,在plain上觀測到明顯的退化現象,並且ResNet上不只沒有退化,34層網絡的效果反而比18層的更好,並且不只如此,ResNet的收斂速度比plain的要快得多。
編碼

對於shortcut的方式,做者提出了三個選項:
A. 使用恆等映射,若是residual block的輸入輸出維度不一致,對增長的維度用0來填充;
B. 在block輸入輸出維度一致時使用恆等映射,不一致時使用線性投影以保證維度一致;
C. 對於全部的block均使用線性投影。
對這三個選項都進行了實驗,發現雖然C的效果好於B的效果好於A的效果,可是差距很小,所以線性投影並非必需的,而使用0填充時,能夠保證模型的複雜度最低,這對於更深的網絡是更加有利的。
進一步實驗,做者又提出了deeper的residual block:
.net

這至關於對於相同數量的層又減小了參數量,所以能夠拓展成更深的模型。因而做者提出了50、10一、152層的ResNet,並且不只沒有出現退化問題,錯誤率也大大下降,同時計算複雜度也保持在很低的程度。
這個時候ResNet的錯誤率已經把其餘網絡落下幾條街了,可是彷佛還並不知足,因而又搭建了更加變態的1202層的網絡,對於這麼深的網絡,優化依然並不困難,可是出現了過擬合的問題,這是很正常的,做者也說了之後會對這個1202層的模型進行進一步的改進。(想一想就可怕。)設計

在文章的附錄部分,做者又針對ResNet在其餘幾個任務的應用進行了解釋,畢竟得到了第一名的成績,也證實了ResNet強大的泛化能力,感興趣的同窗能夠好好研究這篇論文,是很是有學習價值的。orm

轉至:http://blog.csdn.net/wspba/article/details/56019373

相關文章
相關標籤/搜索