ResNet論文逐段精讀【論文精讀】

Motivation:
網(wǎng)絡(luò)變深之后,出現(xiàn)degradation problem,訓(xùn)練精度和測(cè)試精度相比淺層網(wǎng)絡(luò)都下降了
核心思想:

假設(shè)我們要學(xué)的function是H(x),假設(shè)網(wǎng)絡(luò)輸出是F(x),要通過學(xué)習(xí)使F(x)與H(x)之間的差別盡可能地小
現(xiàn)在我們不學(xué)這個(gè),去學(xué)H(x) - x也就是殘差
現(xiàn)在就變成了F(x) = H(x) - x
即F(x) + x = H(x),因此每層網(wǎng)絡(luò)的輸出現(xiàn)在要加上輸入x 再過激活函數(shù)
因?yàn)檎撐闹杏X得,學(xué)習(xí)殘差比學(xué)習(xí)原始的mapping function H(x)會(huì)更容易
另外對(duì)于高通道數(shù)的殘差塊(),加了一個(gè)bottleneck architecture,先用1x1卷積層把通道數(shù)降低,然后再用1x1卷積層把通道數(shù)升回去
一個(gè)細(xì)節(jié):對(duì)于非bottleneck architecture,每個(gè)大層 (論文中table 1的conv2_x就是一個(gè)大層) 的第一個(gè)殘差塊中第一個(gè)3x3的conv,stride是2,因此把輸出的長(zhǎng)寬都減半,而第二個(gè)3x3的conv 則stride為1,輸出的長(zhǎng)寬不變 (源碼中有padding,具體可以看這里的講解https://blog.csdn.net/u014453898/article/details/97115891),所以對(duì)于這樣的殘差塊我們必須要用projection mapping因?yàn)槊總€(gè)feature map (對(duì)每個(gè)channel convolution的output shape) shape不一樣了,對(duì)于剩下的3x3 conv,shape一樣的,我們用identity mapping
這篇知乎文章也講的很好:
https://zhuanlan.zhihu.com/p/152268938
效果:
有殘差連接,收斂更快,網(wǎng)絡(luò)越深時(shí)精度越高