1. 程式人生 > >ResNet: Deep Residual Learning for Image Recognition詳解

ResNet: Deep Residual Learning for Image Recognition詳解

Deep Residual Learning for Image Recognition 這是一篇2015年何凱明在微軟團隊提出的一篇大作,截止目前其論文引用量達12000多次。

摘要

   網路比較深的模型比較難以訓練。作者提出了一個殘差學習的框架來減輕模型的訓練難度,並使得其模型深度遠遠大於之前的工作。我們明確地將層作為輸入學習殘差函式,而不是學習未知的函式。我們提供了非常全面的實驗資料來證明,殘差網路更容易被優化,並且可以在深度增加的情況下讓精度也增加。在ImageNet的資料集上我們評測了一個深度152層(是VGG的8倍)的殘差網路,但依舊擁有比VGG更低的複雜度。殘差網路整體達成了3.57%的錯誤率,這個結果獲得了ILSVRC2015的分類任務第一名,我們還用CIFAR-10資料集分析了100層和1000層的網路。

一、介紹

      最近的研究表明網路的深度是非常重要的,不僅是ImageNet挑戰賽以及其他非常重要的視覺任務都收益於比較深的網路模型。由於網路模型深度的的驅動下,存在一個問題,是不是很多層的疊加很深的網路就能夠學到到更好的網路?梯度爆炸問題很好否定的上面的問題。這個問題雖然通過初試標準化,中間層標準化等措施很大程度上解決了梯度爆炸的問題,使得網路的深度可以達到幾十層的網路深度,並可以使用SGD進行梯度反向傳播。

     當很深的網路在開始訓練時在收斂,但是隨著網路的深度增加卻出現了一個模型退化的問題,就是模型的準確率卻達到飽和甚至出現意想不到的退化現象。奇怪的是,這種模型退化現象不是由過擬合導致的,而是由在合適的淺層網路中加入更多的層導致的更高的訓練誤差,如下圖所示:

    模型的退化(訓練誤差)表明不是所有的系統都是相似的很容易優化。讓我們考慮一個淺層架構和它的對應的增加了更多層的深層架構。存在一個解決方案來構建更深層次的模型:新增的層是自身對映,其他層從是訓練好的淺模型中複製而來。這種特殊的構建方式讓我們推測,深的模型應該不會比淺的模型產生更高的訓練誤差。但實驗結果表明,我們手頭上有的方案都找不到解,找不到更好或者同樣好的解(或者是無法在可接受的時間裡做完)。

     在本文中,我們通過引入一個深度殘差學習框架,解決了這個退化問題。我們不期望每一層能直接吻合一個對映,我們明確的讓這些層去吻合殘差對映。形式上看,就是用H(X)

來表示最優解對映,但我們讓堆疊的非線性層去擬合另一個對映F(X):=H(X) - X, 此時原最優解對映H(X)就可以改寫成F(X)+X,我們假設殘差對映跟原對映相比更容易被優化。極端情況下,如果一個對映是可優化的,那也會很容易將殘差推至0,把殘差推至0和把此對映逼近另一個非線性層相比要容易的多。

    F(X)+X的公式可以通過在前饋網路中做一個“快捷連線”來實現(如下圖2) ,快捷連線跳過一個或多個層。在我們的用例中,快捷連線簡單的執行自身對映,它們的輸出被新增到疊加層的輸出中。自身快捷連線既不會新增額外的引數也不會增加計算複雜度。整個網路依然可以用SGD+反向傳播來做端到端的訓練。

    在統計學中,殘差的定義為實際觀測值與估計值(擬合值)的差值,這裡則是直接的對映H(x)與快捷連線x的差值。

   這樣設計的主要思想:去構造對映H(x),與構造殘差對映F(x)是等價的,但是殘差對映F(x)比H(x)更容易優化。

  如果f 啟用函式也是恆等對映,也就是 x_{l+1} = y_l = h(x_l)+F(x_l,w_l) , 則X_{l+1}=X_l+F(X_l,W_l)  

看下殘差網路的前向傳播過程:


      前向過程,最後的結果表示直接的前向過程,連加的運算(考慮的殘差元為一個單元,殘差元的內部還是兩層的連乘),即從第l層可以直接到第L層,而傳統的網路則是連乘運算,計算量明顯不同。(從連乘到連加)

三、殘差網路與普通網路的區別

    

對於殘差元來說,前向過程是線性的,而且後面的輸入等於輸入加上每一次的殘差元的結果,而普通的網路,則為每一層卷積的連乘運算;

殘差網路的第一大特點,反向更新解決梯度消失的問題:

殘差網路在反向傳播的時候,則只求鏈式法則前面的部分,即從第L層的梯度可以基本上保持穩定的傳遞到第l層反向過程。

四、殘差網路和普通的網路反向傳播的求導對比

     

     之前的正向和反向可以保證計算相對簡單,主要是存在兩個恆等對映。其中啟用函式不為恆等對映就為普通的網路結構。快捷連線部位為恆等對映時,ReLu的使用,使得學習週期大大縮短。綜合速率和效率,DL中大部分啟用函式應該選擇ReLu。

五、考慮如果殘差網路的快捷連線不為恆等對映的情況

    

    如此時英文描述的一樣,h(xl)時,只要係數不為1,在對誤差求導時總是會出現梯度消失或者梯度爆炸的問題。

 

參考:https://blog.csdn.net/qq_29184757/article/details/77983824