1. 程式人生 > >論文筆記:ResNet v2

論文筆記:ResNet v2

ResNet v2

1、四個問題

  1. 要解決什麼問題?
    • 進一步提高ResNet的效能。
    • 解釋為何Identity mapping(恆等對映)的效果會比較好。
  2. 用了什麼方法解決?
    • 提出了一個新的殘差單元結構。
    • 從理論和實驗上分析了identity mapping的有效性。
  3. 效果如何?
    • 使用1001層的ResNet,在CIFAR-10資料集上錯誤率為4.62%,在CIFAR-100資料集上錯誤率為22.71%。都是目前最好的結果。
    • ImageNet 2012資料集上,top-1錯誤率為20.1%,top-5錯誤率為4.8%,超過Inception v3,也是最優結果。
  4. 還存在什麼問題?
    • ResNet模型可以有極深的深度,更強大的學習能力,同時也會帶來更多的引數,更大的計算量,如何對其進行壓縮,降低計算成本也是個需要考慮的問題。

2、論文概述

2.1、簡介

在這裡插入圖片描述

  • 上式是原始殘差單元,公式引數說明:
    • x l
      x_l
      x l + 1
      x_{l+1}
      分別是第 l l 層網路的輸入和輸出。
    • F F 表示殘差函式。
    • h ( x l ) = x l h(x_l) = x_l 表示恆等對映(identity mapping)。
    • f f 表示ReLU函式。
    • 後面預設認為 h ( x l ) = x l h(x_l) = x_l f ( y l ) = y l f(y_l) = y_l

在這裡插入圖片描述

  • 原始殘差單元結構如a圖所示,改進的殘差單元結構如b圖所示。
  • 為了理解跳躍連線(skip connection)的作用,作者實驗了各種不同的 h ( x ) h(x) (identity mapping),即圖中的灰色線部分。最終的實驗結果表明,保持一個clean information path有助於提升效果。
  • 提出了預啟用(pre-activation)和後啟用(post-activation)。
    • 預啟用:bn -> relu -> conv
    • 後啟用:conv -> bn -> relu
  • 在新的殘差結構中改進如下:
    1. 將啟用函式放到旁路,從shortcut中移除,保證clean information path。
    2. 旁路中的結構從 conv-bn-relu(後啟用) 轉換為 bn-relu-conv(預啟用)。

2.2、關於深度殘差網路結構的分析

  • 原始殘差單元的數學表示,符號意義不做贅述。

在這裡插入圖片描述

  • 假設 h ( x l ) = x l h(x_l) = x_l (恆等對映), f ( y l ) = y l f(y_l) = y_l (啟用函式也是一個恆等對映)。

在這裡插入圖片描述

  • 迴圈套用 x l + 2 = x l + 1 + F ( x l + 1 , W l + 1 ) = x l + F ( x l , W l ) + F ( x l + 1 , W l + 1 ) x_{l+2} = x_{l+1} + F(x_{l+1}, W_{l+1}) = x_l + F(x_l, W_l) + F(x_{l+1}, W_{l+1}) ,可以得到下式:

在這裡插入圖片描述

  • 按照鏈式法則求導:

在這裡插入圖片描述

  • 公式說明:
    1. ϵ \epsilon 是loss函式值。
    2. 根據鏈式求導法則,可以求出梯度,如上式所示。
    3. 梯度 ϵ x l \frac{\partial \epsilon}{\partial x_l} 可以拆分成兩部分:對於第 L L 層的梯度, ϵ x L \frac{\partial \epsilon}{\partial x_L} ;以及每一層卷積層所擬合的殘差函式對應的梯度, ϵ x L x l i = l L 1 F ( x i , W i ) \frac{\partial \epsilon}{\partial x_L} \frac{\partial}{\partial x_l} \sum_{i=l}^{L-1}F(x_i, W_i)
    4. 對於普通的沒有shortcut連線的網路來說,只存在 ϵ x L x l i = l L 1 F ( x i , W i ) \frac{\partial \epsilon}{\partial x_L} \frac{\partial}{\partial x_l} \sum_{i=l}^{L-1}F(x_i, W_i) 這一項,而對於ResNet來說,則額外引入了 ϵ x L \frac{\partial \epsilon}{\partial x_L} ϵ x L \frac{\partial \epsilon}{\partial x_L} 的存在確保了較深層網路的梯度可以傳遞到較淺層網路去。
    5. 其實另外還有一點,引入了shortcut還減少了梯度消散的可能性。因為除非 ϵ x L x l i = l L 1 F ( x i , W i ) \frac{\partial \epsilon}{\partial x_L} \frac{\partial}{\partial x_l} \sum_{i=l}^{L-1}F(x_i, W_i)