1. 程式人生 > >經典神經網路學習(四)——ResNet

經典神經網路學習(四)——ResNet

今天看的ResNet網路,主要參考了一下幾篇文章:

ResNet是在2015年ImageNet上大由MSRA何凱明團隊提出的Residual Networks。在ImageNet的classification、detection、localization以及COCO的detection和segmentation上均斬獲了第一名的成績,而且Deep Residual Learning for Image Recognition也獲得了CVPR2016的best paper,實在是實至名歸。

1.ResNet意義

隨著網路的加深,出現了訓練集準確率下降的現象,我們可以確定這不是由於Overfit過擬合造成的(過擬合的情況訓練集應該準確率很高);所以作者針對這個問題提出了一種全新的網路,叫深度殘差網路,它允許網路儘可能的加深,其中引入了全新的結構如下圖所示:

其中ResNet提出了兩種mapping:一種是identity mapping,指的就是上圖中”彎彎的曲線”,另一種residual mapping,指的就是除了”彎彎的曲線“那部分,所以最後的輸出是 y=F(x)+x (即將原始所需要學的函式H(x)轉換成F(x)+x)
identity mapping顧名思義,就是指本身,也就是公式中的x,而residual mapping指的是“差”,也就是y−x,所以殘差指的就是F(x)部分。 

兩種ResNet設計

這兩種結構分別針對ResNet34(左圖)和ResNet50/101/152(右圖),一般稱整個結構為一個”building block“。其中右圖又稱為”bottleneck design”,目的一目瞭然,就是為了降低引數的數目,第一個1x1的卷積把256維channel降到64維,然後在最後通過1x1卷積恢復,整體上用的引數數目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck的話就是兩個3x3x256的卷積,引數數目: 3x3x256x256x2 = 1179648,差了16.94倍。 
對於常規ResNet,可以用於34層或者更少的網路中,對於Bottleneck Design的ResNet通常用於更深的如101這樣的網路中,目的是減少計算和引數量(實用目的)。

ResNet的基本思想是引入了能夠跳過一層或多層的“shortcut connection”,如上圖所示

我們可以清楚的”實線“和”虛線“兩種連線方式, 
實線的的Connection部分(”第一個粉色矩形和第三個粉色矩形“)都是執行3x3x64的卷積,他們的channel個數一致,所以採用計算方式: 
y=F(x)+x 
虛線的的Connection部分(”第一個綠色矩形和第三個綠色矩形“)分別是3x3x64和3x3x128的卷積操作,他們的channel個數不同(64和128),所以採用計算方式: 
y=F(x)+Wx 
其中W是卷積操作,用來調整x的channel維度的;

ResNet的具體結構: