《Deep Residual Learning for Image Recognition》論文閱讀

朋友們從本週開始我會着手更新新系列的博客,論文閱讀系列。當然此係列我會盡力細緻地介紹論文,不過因爲水平有限,難免會有理解不到位甚至錯誤的地方,因此歡迎評論探討。同時本系列更趨向於介紹論文大致思想,對於論文中太細的小細節便不再做更多介紹,若是大家想更加詳細地瞭解一篇論文的話,還是去看英文原版的吧。但若是想快速瞭解論文思想和梗概或是不一樣的讀者想法,大概看看我的博客也不錯。歡迎大家評論區留言提建議。

 

第一篇先拿resnet開刀了,這篇文章想來是近年來deep learning領域最有名的文章了吧,2016CVPR best paper,爲之後幾年的很多研究打下了基礎。這一篇文章可以說寫的是非常好啊,邏輯清晰且通俗易懂。同時這個新的網絡結構思路也是天馬行空驚爲天人。愷明醬現在好像去了facebook。話不多說,進入正題:

《Deep Residual Learning for Image Recognition》

Abstract:

事情的起因在於越深的網絡越難以訓練,因此作者提出了殘差網絡。在ImageNet數據集上,作者使用了152層的殘差網絡進行訓練,比VGG網絡深了8倍,但是複雜度卻更低。同時精度取得了第一。

 

Introduction:

首先,作者拋出觀點,隨着網絡層數的加深,網絡的表達能力會更強,這已經被很多研究所證實。與此同時,梯度消失/爆炸問題也隨之出現,但是隨着歸一地初始化以及在網絡中間層進行歸一化等等方式的出現,反向傳播的梯度下降又變得可行起來。

但是呢,有一個問題出現了,見下圖:

圖中56層的‘plain’網絡,即56層全連接網絡,不僅是測試誤差,它的訓練誤差也比20層的網絡高!那麼這就不是一個過擬合問題了,因爲如果是過擬合的話,訓練時誤差應該很低而測試時很高。而圖中是無論訓練還是測試都更高。

我們試想一下,假設有兩個網絡,三層和五層網絡,我們最終要得到的結果是1。如果三層網絡就可以輸出1,那麼五層網絡只要在最後兩層做一個恆等變換,文中叫“identity mapping”,便也可以得到1。因此理論上五層網絡絕對不應該比三層網絡差的,但是呢實驗結果表明,這多出來的網絡層並不能做到這種恆等變換。因此在這篇文章中,何愷明給出瞭解決方法,見下圖:

設網絡輸入爲x,經過幾層網絡的輸出爲F(x),而要傳給下層網絡的輸入爲H(x),右邊那條路叫做shortcut(捷徑)。

在正常的網絡中,應該傳遞給下一層網絡的輸入是

H(x)=F(x)

但在resnet中,傳遞給下一層的輸入變爲

H(x)=F(x)+x

這樣網絡會比之前的方式更容易優化。試想極端情況,這幾層網絡完全是多餘的,那麼在正常的網絡中,這幾層網絡就要努力做到恆等變換,使得

H(x)=F(x)=x

而在resnet中,只需要把F(x)變爲0即可,輸出變爲

H(x)=F(x)+x=0+x=x

很明顯,將網絡的輸出優化爲0比將其做一個恆等變換要容易得多。

 

於是乎,resnet的核心公式如下:

其中Ws是一個矩陣。當然作者也指出實驗證明了對於同等維度的變換不需要用到Ws,只需要在維度不一致的情況下使用Ws來統一維度即可。而且此網絡結構完全適用於CNN。

整個的resnet結構對比圖如下:

以及各個層數的resnet詳細結構表:

當然啦作者還做了個對比實驗:

上圖左邊是plain network,加了BN(batch normalization)來訓練以防止梯度消失。而右邊是resnet的結果。可以看出對於普通網絡,更深的網絡訓練誤差不一定更低,而resnet有效地克服了這個問題。而且resnet並沒有增大網絡的參數。

 

值得一提的是,由於在F(x)+x的時候會有維度不一致的問題,作者在這裏提出了三種shortcut的方式。A、升維的時候直接用0padding(與前面的圖一樣,沒有多餘參數) B、升維的時候用1*1的卷積層來進行升維  C、在所有shortcut中使用1*1卷積。

結果自然是C最好,但是因爲C的結果只好了一點點,但是參數多了很多,所以並沒有被採用(結果好的原因只是因爲參數變多了而已)。而A的方式因爲相比普通網絡完全沒有增多參數,且結果也相當不錯得到了採用。

 

在實驗部分作者跑了許多實驗,當然結果都是爲了說明resnet非常牛逼,這裏就不做過多的介紹了。感興趣的朋友請看看原文吧。比較惹人注意的是1000+層的網絡出現了過擬合,結果並沒有比100+的網絡更好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章