殘差網絡(Residual Networks, ResNets)


1. 什么是殘差(residual)?

  “殘差在數理統計中是指實際觀察值與估計值(擬合值)之間的差。”“如果回歸模型正確的話, 我們可以將殘差看作誤差的觀測值。”

  更准確地,假設我們想要找一個 $x$,使得 $f(x) = b$,給定一個 $x$ 的估計值 $x_0$,殘差(residual)就是 $b-f(x_0)$,同時,誤差就是 $x-x_0$。

  即使 $x$ 不知道,我們仍然可以計算殘差,只是不能計算誤差罷了。

2. 什么是殘差網絡(Residual Networks,ResNets)?

  在了解殘差網絡之前,先了解下面這個問題。

  Q1:神經網絡越深越好嗎?(Deeper is better?)

  A1:如圖 1 所示,在訓練集上,傳統神經網絡越深效果不一定越好。而 Deep Residual Learning for Image Recognition 這篇論文認為,理論上,可以訓練一個 shallower 網絡,然后在這個訓練好的 shallower 網絡上堆幾層 identity mapping(恆等映射) 的層,即輸出等於輸入的層,構建出一個 deeper 網絡。這兩個網絡(shallower 和 deeper)得到的結果應該是一模一樣的,因為堆上去的層都是 identity mapping。這樣可以得出一個結論:理論上,在訓練集上,Deeper 不應該比 shallower 差,即越深的網絡不會比淺層的網絡效果差。但為什么會出現圖 1 這樣的情況呢,隨着層數的增多,訓練集上的效果變差?這被稱為退化問題(degradation problem),原因是隨着網絡越來越深,訓練變得原來越難,網絡的優化變得越來越難。理論上,越深的網絡,效果應該更好;但實際上,由於訓練難度,過深的網絡會產生退化問題,效果反而不如相對較淺的網絡。而殘差網絡就可以解決這個問題的,殘差網絡越深,訓練集上的效果會越好。(測試集上的效果可能涉及過擬合問題。過擬合問題指的是測試集上的效果和訓練集上的效果之間有差距。)

圖 1 不同深度的傳統神經網絡效果對比圖

(“plain” network指的是沒有使用 shortcut connection 的網絡)

  殘差網絡通過加入 shortcut connections,變得更加容易被優化。包含一個 shortcut connection 的幾層網絡被稱為一個殘差塊(residual block),如圖 2 所示。(shortcut connection,即圖 2 右側從 $x$ 到 $\bigoplus$ 的箭頭)

圖 2 殘差塊

  2.1 殘差塊(residual block)

  如圖 2 所示,$x$ 表示輸入,$F(x)$ 表示殘差塊在第二層激活函數之前的輸出,即 $F(x) = W_2\sigma(W_1x)$,其中 $W_1$ 和 $W_2$ 表示第一層和第二層的權重,$\sigma$ 表示 ReLU 激活函數。(這里省略了 bias。)最后殘差塊的輸出是 $\sigma(F(x) + x)$。

  當沒有 shortcut connection(即圖 2 右側從 $x$ 到 $\bigoplus$ 的箭頭)時,殘差塊就是一個普通的 2 層網絡。殘差塊中的網絡可以是全連接層,也可以是卷積層。設第二層網絡在激活函數之前的輸出為 $H(x)$。如果在該 2 層網絡中,最優的輸出就是輸入 $x$,那么對於沒有 shortcut connection 的網絡,就需要將其優化成 $H(x) = x$;對於有 shortcut connection 的網絡,即殘差塊,如果最優輸出是 $x$,則只需要將 $F(x) = H(x) - x$ 優化為 0 即可。后者的優化會比前者簡單。這也是殘差這一叫法的由來。

  2.2 殘差網絡舉例

  圖 3 最右側就是就是一個殘差網絡。34-layer 表示含可訓練參數的層數為34層,池化層不含可訓練參數。圖 3 右側所示的殘差網絡和中間部分的 plain network 唯一的區別就是 shortcut connections。這兩個網絡都是當 feature map 減半時,filter 的個數翻倍,這樣保證了每一層的計算復雜度一致。

  ResNet 因為使用 identity mapping,在 shortcut connections 上沒有參數,所以圖 3 中 plain network 和 residual network 的計算復雜度都是一樣的,都是 3.6 billion FLOPs.


圖 3  VGG-19、plain network、ResNet

  殘差網絡可以不是卷積神經網絡,用全連接層也可以。當然,殘差網絡在被提出的論文中是用來處理圖像識別問題。

  2.3 為什么殘差網絡會work?

  我們給一個網絡不論在中間還是末尾加上一個殘差塊,並給殘差塊中的 weights 加上 L2 regularization(weight decay),這樣圖 1 中 $F(x) = 0$ 是很容易的。這種情況下加上一個殘差塊和不加之前的效果會是一樣,所以加上殘差塊不會使得效果變得差。如果殘差塊中的隱藏單元學到了一些有用信息,那么它可能比 identity mapping(即 $F(x) = 0$)表現的更好。

  "The main reason the residual network works is that it's so easy for these extra layers to learn the identity function that you're kind of guaranteed that it doesn't hurt performance. And then lot of time you maybe get lucky and even helps performance, or at least is easier to go from a decent baseline of not hurting performance, and then creating the same can only improve the solution from there."


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM