天天看點

深度學習之基礎模型—resNet

The depth of representation is of central importance for many visual recognition tasks

繼VGG和GoogLeNet在網絡深度上進行了進一步的嘗試,取得了比較大的進展-網絡越深效果也越好-,但也遇到了問題:

網絡越深,越容易出現梯度消失,導緻模型訓練難度變大,出現“退化”現象
           

注:從VGG的結果也能感覺到,當網絡深度達到一定深度的時候,模型的效果很難再提升

深度學習之基礎模型—resNet

作者也進一步通過實驗指出了網絡深度的增加,會出現“退化”現象,

退化:當模型的深度增加時,輸出的錯誤率反而提高了
           
深度學習之基礎模型—resNet

Q:如何有效的解決網絡深度的增加,帶來的“退化”問題?

A:出現退化的問題,主要是由于網絡深度的增加,帶來的在網絡訓練的時候,梯度無法有效的傳遞到淺層網絡,導緻出現梯度彌散(vanishing)。BN(BatchNormalization)通過規範化輸出資料來改變資料分布,是一個向前的過程來解決梯度彌散問題,而resNet網絡通過增加skip connection(Identity Map)來直接連接配接淺層網絡與深層網絡,進而使得梯度能夠很好的傳遞到淺層。[作者在後面又提出了質疑]

殘差網絡

針對出現的“退化”問題,作者提出了殘差網絡的概念:

假設:如果多層非線性層疊加可以漸進逼近複雜的函數,那麼也能漸進逼近殘差函數:H(X)-X
           

這樣,可以用多層網絡來逼近殘差函數

F(X):=H(X)−X

進而原來的網絡結構就變成了

F(X)+X

其中一個殘差結構如下:

深度學習之基礎模型—resNet

說明:

  • 如果添加了identity mapings,則結構更深的網絡不會比淺的網絡效果差
  • 多層非線性層疊加在一起構成的網絡結構,很難學習到identify mapings
  • 如果identity mapings是最優的連結方式,那麼 F(X) 方面的權重參數則會趨于0
  • 如果最優的映射接近identity mapings,則優化的時候,找到相對于identity mapings的 F(x) (初始參數在0附近),要比逼近一個全新的函數要簡單的多

Identity Mapping

關于shortcut connection提出了兩種連接配接方式

方式一:

y=F(X,Wi) +   X

其中 F(X,Wi)=W2σ(W1X) ,如上圖上描述的,表示多個非線性卷積層的疊加, σ 表示非線性激活函數ReLU, F+X 表示shortcut connection,對應每一個像素相加。

說明:該網絡結構相對于plain Net沒有增加任何參數

深度學習之基礎模型—resNet

方式二:

y=F(X,Wi) +WsX

其中,如果想要改變輸入輸出的channels個數,則可以通過線性變換 Ws 來實作shortcut connection。

關于 F(X,Wi) 論文中也提到,也不要局限于上面提到了2層卷積的連接配接,可以更加變化豐富多樣些,如下

深度學習之基礎模型—resNet

注:其中一個這樣的小單元,稱之為一個block。在建構深層的網絡結構時,作者将第二種結構稱之為bottleneck

網絡結構

作者在此部分重點對比了plain Network 與resNet兩種結構,進而來說明resNet的優越性。

深度學習之基礎模型—resNet

注:左側:VGG-19(19.6 billion FLOPS),中間:PlainNet-34(3.6 billion FLOPS),右側:ResNet-34(3.6 billion FLOPS)

說明:

  • plain Net根據VGG網絡的設計思路,簡單的堆積卷積層,構架了一個18層和34層
  • resNet與對應的PlainNet的參數個數相同
  • resNet網絡結構中,
    • 實線:代表的是上述提到的方程1,輸入輸出的次元沒有改變,
    • 虛線:代表的是上書提到的方程2,輸入輸出的次元發生了改變,具體的實作是卷積的步長設定為2

Implemenation

訓練說明:

  • 随機resize 到256,480
  • 随機裁剪224x224
  • 随機水準鏡像
  • 減去均值
  • 卷積操作之後,非線性激勵函數之前,使用BN(BatchNormalization)操作
  • 使用SGD優化,mini-batch=256
  • 學習率=0.1,然後當誤差不下降後,降低10倍
  • 疊代次數 60 x 104
  • 沒有使用dropout操作

測試說明:

  • 對比了标準的10-crop測試(4個角落,中間位置,乘以水準鏡像)
  • 采用fully convolutional 的形式,對最後的結果取平均(将圖像的短邊縮放到{224, 256, 384, 480, 640} 之一)

實驗

實驗一:ImageNet Classification

深度學習之基礎模型—resNet
深度學習之基礎模型—resNet

Q:作者指出優化難度好像并不是由于梯度消失引起的?

A:支援這種觀點可以通過上述對比實驗可以看出:

These plain neworks are trained with BN, which ensures forward propagated signals to have non-zero variances.

We also verify that the backward propagated gradients exhibit healthy norms with BN.

So neither forward nor backward signals varnish.

實際上,plainNet-34 仍然可以達到具有競争力的結果,也可以指出優化過程仍然起到了作用。 是以,作者得出,這種深度的plainNets的收斂可能是指數級别的(非常慢)速率,導緻訓練誤差偏高【作者也進一步證明了通過更多的疊代次數(3x),仍然觀察到了退化現象】

residual Networks

實驗一:

作者對比了18-layer和34-layer的plainNet和ResNets。

深度學習之基礎模型—resNet

說明:

  • 兩折的基礎網絡是相同的,resNet同plainNet
  • 不同的是ResNet使用了shortcut connection:使得每兩個卷積增加了一個shortcut connnection
  • 所有的shortcut 采用Identity Mapping,如果次元增加了,則采用0補足,進而相對于plainNet不會帶來任何額外參數
  • 結果ResNet效果都要比plainNet要好。
    • 通過table2,可以看出resNet可以比較好的控制“退化”問題,
    • top-1 error的對比,更能展現殘差在提高網絡深度方面更加有效
    • 收斂速度:通過對比18-layer發現resNet和plainNet的最終精度差不多,說明網絡深度不是特别深的時候,SGD能然可以對plainNet找到一個不錯的最優解,但是Resnet提供了一種收斂速度更快的結構

實驗二:

對比Identity和projection兩種shortcuts connection

深度學習之基礎模型—resNet

說明:

  • 作者對比了3種short connections
    • A:zero-padding shortcuts for increasing dimensions, identity shortcuts for others
    • B:projection shortcuts for increasing dimensions, identity shortcuts for others
    • C:projection shortcuts for all shortcut
  • 通過Table 3可以看出B略微好于A,C好于B。
    • B>A:A中的zero-padding沒有進行殘差學習
    • C>B:C好于B得益于更多的參數(13個projection shortcuts)
  • 作者指出:這種結構的細微差别并不是解決“退化”問題的本質因素。為了考慮到模型的參數大小,記憶體和時間複雜度的問題,在後續的實驗中,作者沒有考慮C方法

Deeper Bottleneck Architectures

在進行ImageNet挑戰的時候,考慮到訓練時間問題,作者修改了block結構,由于在3x3卷積前後都采用了1x1的卷積操作,是以稱之為bottlenet。

注:1x1卷積主要用來降維和擴維用,使得3x3的卷積輸入輸出的次元更低。

深度學習之基礎模型—resNet

說明:

  • parameter-free:改為bottleneck之後,仍然采用identity mapping進行shortcut connection,沒有增加參數個數
  • Identity mapping更加适合bottleneck結構:如果将Identity mapping替換為Projection Mapping,由于Projection的輸入輸出緯度都很高,進而模型的大小和時間負責度都擴大了1倍。是以
  • -

50-layer-ResNet

在resNet-34的基礎上,将block結構中的2層3x3的卷積換成上述的bottleneck結構,并采用B(projection shortcuts for increasing dimensions, identity shortcuts for others)結構來增加次元

101-layer and 152-layer ResNets

利用更多的3-layer結構(bottleneck)來生成更加深的網絡結構。但是盡管152的網絡結構非常深,但是相比于VGG-16(19)的模型複雜度還是小很多

model complexity
resNet-152 11.3 billion FLOPS
VGG-16 15.3 billion FLOPS
VGG-19 19.6 billion FLOPS

注:50/101/152-layer的resNets要比34層的結構有更高的精度,并沒有觀察到“退化”問題。

結果:

深度學習之基礎模型—resNet
深度學習之基礎模型—resNet

參考文獻

https://arxiv.org/pdf/1512.03385v1.pdf

http://blog.csdn.net/wspba/article/details/56019373

http://news.ifeng.com/a/20170825/51759378_0.shtml

http://blog.csdn.net/u010789558/article/details/52932427

繼續閱讀