【深度學習】經典神經網絡 ResNet 論文解讀

ResNet 是何凱明團隊的作品,對應的論文 《Deep Residual Learning for Image Recognition》是 2016 CVPR 最佳論文。ResNet 的 Res 也是 Residual 的縮寫,它的用意在於基於殘差學習,讓神經網絡能夠越來越深,準確率越來越高。

我們都知道,自 2012 年 AlexNet 在 ILSVRC 一戰成名後,卷積神經網絡便一發不可收拾,後續的各類競賽中各種神經網絡都大發異彩,除了更高的準確率之外,它們普遍的特徵就是,網絡的層級越來越深了。

這裏會產生一個問題,那就是神經網絡真的越深越好嗎?

但至少有證據表明,情況不是這樣的,如果神經網絡越來越深,這個神經網絡可能會出現退化(degradation) 的現象。這裏說的退化是指網絡層級加深後,訓練的準確率卻可能出現飽和的現象。
在這裏插入圖片描述
上面的圖片指示的是在 CIFAR-10 這個小型的數據集上,56 層的神經網絡的表現比不過 20 層的神經網絡。也就是前面說的層數越深,網絡卻反而退化了。

如何構建更深層的網絡?

前面提到的,當網絡層次更深時,反而會出現退化的現象,那麼有沒有辦法避免呢?

有一個解決方案是:

在一個的常規的比較淺的模型上添加新的層,而新的層是基於 identity mapping 的。

identity 是相同的意思,identity mapping 可以稱爲恆等變換,也就是輸入與輸出是相等的映射關係。

通俗來講,就是在一個淺層的網絡模型上進行改造,然後將新的模型與原來的淺層模型相比較,這裏有個底線就是,改造後的模型至少不應該比原來的模型表現要差。因爲新加的層可以讓它的結果爲 0,這樣它就等同於原來的模型了。這個假設是 ResNet 的出發點。

那麼如何做呢?

作者引入了 deep residual learning framework,也就是基於殘差的深度學習框架,實際上是需要對常規的神經網絡的改造。

我們都知道,目前流行的神經網絡都可以看成是卷積層的堆疊,可以用棧來表示,我們就叫它卷積棧好了.

輸入數據經過每個卷積層都會發生變化,產生新的 featuremap ,我們可以說數據在輸入與輸出間發生了映射,也就是 mapping。神經網絡中的權重參數一個作用就是去擬合這種輸入與輸出之間的 mapping。

ResNet 準備從這一塊動手,假設現在有一個棧的卷積層比如說 2 個卷積層堆疊,將當前這個棧的輸入與後面的棧的輸入之間的 mapping 稱爲 underlying mapping,現在的工作是企圖替換它引入一種新的 mapping 關係,ResNet 稱之爲 residual mapping 去替換常規的 mapping 關係。

意思是與其讓卷積棧直接擬合 underlying mapping,不如讓它去擬合 residual mapping。而 residual mapping 和 underlying mapping 其實是有關聯的。

將 underlyingmapping 標記爲 H(x)H(x)

將經過堆疊的非線性層產生的 mapping 標記爲 F(x):=H(x)xF(x) := H(x)-x

所以,最原始的 mapping 就被強制轉換成 F(x)+xF(x)+x

然後,作者假設對 residual mapping 的優化要比常規的 underlying mapping 要簡單和容易

F(x)+xF(x)+x 在實際的編碼過程中,可以被一種叫做快捷連接的結構件來實現。
在這裏插入圖片描述

快捷連接通常會跳過 1 個或者多個層,在 ResNet 中快捷連接直接運用了 identity mapping,意思就是將一個卷積棧的輸入直接與這個卷積棧的輸出相加。

這樣有什麼好處呢?

  1. 並沒有增加新的參數
  2. 整個網絡也仍然可以由 SGD 進行訓練。
  3. 容易被通用的神經網絡框架實現。

並且,F(x)F(x) 表示殘差,最理想的情況是 identity mapping 是最優的輸出,那麼讓F(x)F(x) 爲 0 就好了,現實是F(x)F(x)不可能全爲 0,那麼這些多出來的東西就可以增強網絡的表達能力。

而 ResNet 依靠成績說話,它是 ILSVRC 2015 年圖像分類冠軍。而且 ResNet 的泛化變現也很卓越,在 ImageNet 目標檢測、ImageNet 目標定位、COCO 目標檢測、COCO 圖像分割等競賽中都取得了當年(2015)的冠軍。

並且,ResNet 是當年 ImageNet 參賽模型中層級最深的模型,達到了 152層。

這些證據證明了 ResNet 加深網絡後,性能比其他的模型更突出。

Deep Residual Learning

Residual Learning 的理論依據

我們可以將焦點放在 H(x)H(x) 上。

理論上有一種假設,多層卷積的參數可以近似地估計很複雜的函數表達公式的值,那麼多層卷積也肯定可以近似地估計 H(x)xH(x)-x 這種殘差公式。

所以與其讓卷積棧去近似的估計 H(x)H(x),還不如讓它去近似地估計 F(x):=H(x)xF(x):=H(x)-x,F(x)F(x)就是殘差。

作者假設的是,殘差比原始的 mapping 更容易學習。

作者在他的另外一篇論文《Identity Mappings in Deep Residual Networks》中給出了詳細的討論。

一個殘差單元,它的輸入與輸出的關係可以用下面的公式表達:
Yl=h(xl)+F(xl)Yl=h(xl)+F(xl)
xl+1=f(Yl)xl+1=f(Yl)

ll 代表層的意思,xlxl 代表當前這個殘差單元的信號輸入,xl+1xl+1代表輸出,同時也是神經網絡下一層的輸入。
h(x)h(x)代表的 identity mapping,F(xl)F(xl) 是這個單元的殘差,f(yl)f(yl) 是 ReLU 激活函數。

我們先整理一下思路,神經網絡訓練過程中反向傳播的梯度非常重要,如果梯度接近於 0 ,那麼信號就無法反向傳播了。

在這裏插入圖片描述

XL 代表任意的一個更深層次的輸入,而 Xl 可以代表相對的比較淺的層次的輸入,結合之前的公式,可以很容易遞推得到上面的公司。

引用鏈式求導法則。
在這裏插入圖片描述

ε\varepsilon 代表的是 loss 方程

最激動人心的地方在於上面公式的括號部分,它是 1 加上某個值,只要這個值不恰好爲 -1,那麼梯度就不會爲 0,也就是說從 XL 到 Xl 的梯度就可以一直傳遞下去,梯度能夠有效傳遞,神經網絡的訓練過程纔會更加高效。

網絡結構

ResNet 的起始是從一個常規的比較淺的網絡上探求加層的過程。

這個常規的比較淺的網絡是大名鼎鼎的 VGG-19。

在這裏插入圖片描述
作者對 VGG-19 進行仿製與改造,得到了一個 34 層的 plain network,然後又在這個 34 層的 plain network 中插入快捷連接,最終形成了一個 34 層的 residual network。

在這裏插入圖片描述
我們回到這張圖上面,F(x)F(x) 要與 x 相加,那麼它們的維度就需要一樣。

而 ResNet 採用的是用 1x1 的卷積核去應對維度的變化,通過 1x1 的卷積核去對輸入進行升維和降維。

1x1卷積核的意義可以參考

ResNet 作者做了大量的模型評估工作,網絡的層數從 18 到 152 都有試驗。
在這裏插入圖片描述
值得注意的是,從 50-layer 起,ResNet 採用了一種 bottleneck design 的手段。
在這裏插入圖片描述
1x1 的卷積核讓整個殘差單元變得更加細長,這也是 bottleneck 的含義,更重要的是參數減少了。

在這裏插入圖片描述
最終在 ImageNet 驗證集上的表現也證明了 ResNet 比當時其他網絡要強,並且 ResNet 本身層級越多準確率越高。

最後,爲了證明 ResNet 的泛化能力,作者也在 CIFAR-10 數據集上做了測試和分析,ResNet 甚至做到了 1000 層以上。

這證明了基於殘差學習可以讓網絡更深。

總結

1、ResNet 在當年大放異彩靠的是它優異的表現。
2、論文更多講述的是經驗,這些經驗靠實驗結果表現出了 ResNet 的高效,但後來的補充材料給出了理論依據,自此它才變得更加讓人信服。
3、ResNet 並非橫空出世,它是基於淺層網絡的探索性的結果,就如 VGG 是在 AlexNet 的基礎上探索得到的。
4、ResNet 驗證了大量的結構,並且進行了大量的橫向和縱向對比纔得到的最理想的結果,這份細緻和耐心值得我們每個人學習。

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