Deep Residual Learning for Image Recognition

1.abstract

此篇文章說明越深的網路越難學,經由此篇網路所介紹的shortcut技巧,resnet可以把網路加深到152層(比VGG網路深8倍),並且使用ensemble的技巧加上resnet可以使得網路在2015 Imagenet 測試集上得到3.57%的錯誤率,是當時ILSVRC2015 比賽的第一名。



上圖即是說明此現象,由圖可以看出,當網路從20層加深到56層的時候,錯誤率更高了,這現象同時體現在訓練集以及測試集中

2.main

作者的想法很簡單,就是把前一層的輸入透過一個連接方式連接到下一層,這麼做可以解決梯度消失的問題,分成兩種,一種稱做identity mapping就是直接拉一個連接點,但有時候F(X)與X的大小不一定完全一樣,這時候就要透過其他方法來讓兩者的大小相等

  • A:使用padding增加dimension
  • B:使用projection shortcuts,也就是使用1*1的卷積核增加dimension,其餘的使用identity mapping
  • C:全部使用projection shortcuts

作者分別針對三種實驗比較結果,從上表可以發現,效果比分別是C>B>A,作者說明A的效果差是因為僅僅對feature map 做padding並不會有殘差學習效果,而最好的效果是C,作者說明可能是因為有額外的參數供模型學習,但作者往後的實驗沒有使用C選項,因為參數量會多很多,這樣會使得模型大小增加

3.experiment

  • Imagenet

    作者一開始拿VGG模型開始改,作者設計出一個34層的網路,這網路的feature map size可以和原本的VGG相對應,如下圖所示。作者設計出的網路是3.6billion flops遠比VGG網路19.6billion flops少,雖然更深但是計算量確更少,且由下表的結果可以發現不只計算量更少,準確率也更高



之後作者將18層網路與34層網路相比較,從下述兩張圖表可以發現三件事

1.resnet-34 比 resnet-18 效果要好

2.與不是resnet的結構相比較,可以發現同樣是增加網路深度到34層,但是resnet的版本可以得到更低的錯誤率

3.resnet-34的版本相對收斂快了許多



作者實作residual 結構的時候共有兩種,一種是左邊的兩個3*3卷積層,用在resnet-34網路上,但若用左邊的架構套用在更深的網路的話那模型就會太大了,因此作者又設計出右邊的residual架構,稱作bottleneck,主要是為了減少深層網路的整體參數量

作者針對Imagenet做了五種模型,從50layer開始就把residual block換成了3層layer的模式,即使網路已經加深到了152層(11.3 billion flops)這麼深了,但是計算複雜度(flops)依然小於VGG16/19(15.3/19.6 billion flops)

各種不同深度的網路實驗效果如下,可以發現網路152層擁有最高的準確率,在當時是ILSVRC比賽的第一名,是劃時代之作

  • Cifar-10

作者另外針對cifar-10資料集去做實驗,第一層採用的是3*3的卷積層,之後就是採用下面的公式圖表做設計,因此包括全連接層的話總共有6n+2層網路,隨著n=3、5、7、9,網路總層數分別為20、32、44、56,各個階段的filter在feature map 32X32的時候為16,之後是32、64。

各個網路的實驗效果如下表所示,resnet-110達到了最低的錯誤率6.43,作者也實驗了超級深的網路resnet-1202,但實驗效果沒有預期好,作者猜測這可能是模型over-fitting了

下圖是不同網路的比較表,左邊是plain-network,中間是resnet-network,和Imagenet的實驗結果一樣,同樣都存在著網路越深訓練錯誤率越小的效果

  • layer response

    作者把每層網路的feature map取標準差然後畫成圖表呈現如下,經由實驗發現出,resnet的layer response比plain net的小很多,且隨著網路的深度加深,網路的響應也隨之越來越低,這也符合剛開始作者的最初想法。

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments