論文筆記:Deep Residual Learning for Image Recognition(ResNet)

一、基本信息

標題:Deep Residual Learning for Image Recognition
時間:2015
第一作者:Kaiming He
論文領域:深度學習、計算機視覺、CNN
引用格式:He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

二、研究背景

最近的證據揭示了網絡深度是至關重要的,領先結果中對挑戰ImageNet數據集都利用“非常深”的模型,深度從16到30。
深度加深帶來的問題:

  • 梯度消失和爆炸(vanishing/exploding gradients)

對於該問題的解決方法是正則化初始化和中間的正則化層(Batch Normalization),這樣的話可以訓練幾十層的網絡。

  • 開始收斂時,退化問題產生,精確度下降(退化並不是過度擬合引起的,在適當深度的模型上增加更多的層會導致更高的訓練誤差
    本文說道不是過擬合問題:因爲可以從圖中看出隨着深度的增加,訓練誤差變大(事實上,測試誤差也很大),而過擬合指訓練誤差小,測試誤差大
    在這裏插入圖片描述

有兩種解決思路,一種是調整求解方法,比如更好的初始化、更好的梯度下降算法等;另一種是調整模型結構,讓模型更易於優化——改變模型結構實際上是改變了error surface的形態。
ResNet的作者從後者入手,探求更好的模型結構。將堆疊的幾層layer稱之爲一個block,對於某個block,其可以擬合的函數爲F(x)F(x),如果期望的潛在映射爲H(x)H(x),與其讓F(x)F(x) 直接學習潛在的映射,不如去學習殘差H(x)xH(x)−x,即F(x):=H(x)xF(x):=H(x)−x,這樣原本的前向路徑上就變成了F(x)+xF(x)+x,用F(x)+xF(x)+x來擬合H(x)H(x)。作者認爲這樣可能更易於優化,因爲相比於讓F(x)F(x)學習成恆等映射,讓F(x)F(x)學習成0要更加容易——後者通過L2正則就可以輕鬆實現。這樣,對於冗餘的block,只需F(x)0F(x)→0就可以得到恆等映射,性能不減。

退化

按理說,當我們堆疊一個模型時,理所當然的會認爲效果會越堆越好。因爲,假設一個比較淺的網絡已經可以達到不錯的效果,那麼即使之後堆上去的網絡什麼也不做,模型的效果也不會變差。
然而事實上,這卻是問題所在。“什麼都不做”恰好是當前神經網絡最難做到的東西之一。
也許賦予神經網絡無限可能性的“非線性”讓神經網絡模型走得太遠,卻也讓它忘記了爲什麼出發(想想還挺哲學)。這也使得特徵隨着層層前向傳播得到完整保留(什麼也不做)的可能性都微乎其微。用學術點的話說,這種神經網絡丟失的“不忘初心”/“什麼都不做”的品質叫做恆等映射(identity mapping)。因此,可以認爲Residual Learning的初衷,其實是讓模型的內部結構至少有恆等映射的能力。以保證在堆疊網絡的過程中,網絡至少不會因爲繼續堆疊而產生退化!
作者:薰風初入弦
鏈接:https://www.zhihu.com/question/64494691/answer/786270699
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

三、創新點

Residual Block結構

F(x)+xF(x)+x構成的block稱之爲Residual Block,即殘差塊,如下圖所示,多個相似的Residual Block串聯構成ResNet。
在這裏插入圖片描述
本文通過引入殘差學習(residual learning)來解決退化問題,即⊕上方學習的爲H(x)xH(x) - x,這也正是要學習的殘差F(x):=H(x)xF(x) := H(x) - x,希望通過H(x)=F(x)xH(x) = F(x)⊕x擬合xx,這裏引入了x,把恆等映射作爲網絡H(x)的一部分。而原本是H(x)H(x)擬合xx
這裏有個疑問:F(x)+x=H(x)x+x=H(x)F(x) + x = H(x) - x + x = H(x)這從等式角度來說本來就相等,爲什麼叫做擬合呢? H(x)x+x=H(x)H(x) - x + x = H(x),如果考慮上圖2層網絡擬合右邊H(x)H(x)是原本需要擬合的函數,那麼左邊的殘差學習的是H(x)xH(x)- x,兩邊學習的容易程度也不一樣。個人理解。

參考解釋1:
怎麼解決退化問題?
深度殘差網絡。如果深層網絡的後面那些層是恆等映射,那麼模型就退化爲一個淺層網絡。那現在要解決的就是學習恆等映射函數了。 但是直接讓一些層去擬合一個潛在的恆等映射函數H(x) = x,比較困難,這可能就是深層網絡難以訓練的原因。但是,如果把網絡設計爲H(x) = F(x) + x,如下圖。我們可以轉換爲學習一個殘差函數F(x) = H(x) - x. 只要F(x)=0,就構成了一個恆等映射H(x) = x. 而且,擬合殘差肯定更加容易。
標識快捷連接既不增加額外的參數,也不增加計算複雜度。整個網絡仍然可以通過帶有反向傳播的SGD進行端到端的訓練。

參考解釋2:
F是求和前網絡映射,H是從輸入到求和後的網絡映射。比如把5映射到5.1,那麼引入殘差前是F’(5)=5.1,引入殘差後是H(5)=5.1, H(5)=F(5)+5, F(5)=0.1。這裏的F’和F都表示網絡參數映射,引入殘差後的映射對輸出的變化更敏感。比如原來是從5.1到5.2,映射F’的輸出增加了1/51=2%,而對於殘差結構從5.1到5.2,映射F是從0.1到0.2,增加了100%。明顯後者輸出變化對權重的調整作用更大,所以效果更好。殘差的思想都是去掉相同的主體部分,從而突出微小的變化,看到殘差網絡我第一反應就是差分放大器…
作者:theone
鏈接:https://www.zhihu.com/question/53224378/answer/159102095
來源:知乎

必須要大於1層,否則沒有效果:
y=F(x,{Wi})+x=(W1x)+x=(W1+1)x\mathbf{y}=\mathcal{F}\left(x,\left\{W_{i}\right\}\right)+x=\left(W_{1} x\right)+x=\left(W_{1}+1\right) x

緯度問題

The convolutional layers mostly have 3 * 3 filters and follow two simple design rules:
(i) for the same output feature map size, the layers have the same number of filters;
(ii) if the feature map size is halved, the number of filters is doubled so as to preserve the time complexity per layer.

(i)空間緯度

之前提到輸入x要與F(x)維度一樣,如果不一樣則投影到WsW_s解決空間緯度問題:
y=F(x,{Wi})+Wsx\mathbf{y}=\mathcal{F}\left(\mathbf{x},\left\{W_{i}\right\}\right)+W_{s} \mathbf{x}

(ii)深度緯度

When the dimensions increase (dotted line shortcuts in Fig. 3), we consider two options:
(A) The shortcut still performs identity mapping, with extra zero entries padded for increasing dimensions. This option introduces no extra parameter;
(B) The projection shortcut in Eqn.(2) is used to match dimensions (done by 1* 1 convolutions).

(A)就是直接補0,不需要額外參數
(B)就是在跳接過程中加一個1*1的卷積層進行升維,下面右圖
在這裏插入圖片描述

網絡結構

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

以及下面繼續加深網絡:
在這裏插入圖片描述

四、實驗結果

在這裏插入圖片描述
在這裏插入圖片描述
18層效果還不是很明顯,34層以及有很大改進。

作者最後在Cifar-10上嘗試了1202層的網絡,結果在訓練誤差上與一個較淺的110層的相近,但是測試誤差要比110層大1.5%。作者認爲是採用了太深的網絡,發生了過擬合。

在這裏插入圖片描述
在表3中,比較了三個選項:

  • (A)填充零的快捷方式用於增加維度,並且所有的快捷方式都是無參數的(與右表2和圖4相同);
  • (B)投影捷徑用於增加維度,其他捷徑爲同一性;
  • ©所有捷徑都是投影。
    作者考慮內存和時間,最後使用B

五、結論與思考

作者結論

總結

有了梯度相關性這個指標之後,作者分析了一系列的結構和激活函數,發現resnet在保持梯度相關性方面很優秀(相關性衰減從12L\frac{1}{2^{L}}到了1L\frac{1}{\sqrt{L}} )。這一點其實也很好理解,從梯度流來看,有一路梯度是保持原樣不動地往回傳,這部分的相關性是非常強的。

思考

感覺跳接(shortcut connection)和FCN的跳躍連接很像。那邊可以跳多層還能上採樣疊加。

參考

ResNet詳解與分析
殘差網絡ResNet筆記

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