——————————————————————————————————————————————————————
本文為在csdn博主z小白的文章基礎上,做了一些自己的理解與擴展,文末附有原文鏈接,尊重知識產權從我做起。
——————————————————————————————————————————————————————
簡介
ResNet是何凱明大神在2015年提出的一種網絡結構,獲得了ILSVRC-2015分類任務的第一名,同時在ImageNet detection,ImageNet localization,COCO detection和COCO segmentation等任務中均獲得了第一名,在當時可謂是轟動一時。
ResNet又名殘差神經網絡,指的是在傳統卷積神經網絡中加入殘差學習(residual learning)的思想,解決了深層網絡中梯度彌散和精度下降(訓練集)的問題,使網絡能夠越來越深,既保證了精度,又控制了速度。
我求求你們關注我好不好,泣不成聲。。。
出發點
隨着網絡的加深,由於模型訓練過程中有梯度的方向傳播,多層次求導會連乘,可能會導致梯度趨近於0,從而梯度消散,導致網絡很難收斂甚至無法收斂。梯度彌散問題目前有很多的解決辦法,包括網絡初始標准化,數據標准化以及中間層的標准化(Batch Normalization)等。但是網絡加深還會帶來另外一個問題:隨着網絡加深,出現訓練集與測試集准確率均下降的現象,如下圖,這是經過數據驗證過的。
很多同學第一反應肯定是“這不是過擬合了嗎”。其實,這不是由於過擬合引起的。過擬合通常指模型在訓練集表現很好,在測試集很差。凱明大神針對這個問題提出了殘差學習的思想。
殘差學習指的是什么?
殘差學習的思想就是上面這張圖,可以把它理解為一個block,定義如下:
y= F(x,{W;})+x
殘差學習的block一共包含兩個分支或者兩種映射(mapping):
1. identity mapping,指的是上圖右邊那條彎的曲線。顧名思義,identity mapping指的就是本身的映射,也就是自身;
2. residual mapping,指的是另一條分支,也就是F(x)部分,這部分稱為殘差映射,我習慣的認為其是卷積計算部分
最后這個block輸出的是卷積計算部分+其自身的映射后,relu激活一下。
為什么殘差學習可以解決“網絡加深准確率下降”的問題?
對於一個神經網絡模型,如果該模型是最優的,那么訓練就很容易將residual mapping優化到0,此時只剩下identity mapping,那么無論怎么增加深度,理論上網絡會一直處於最優狀態。因為相當於后面所有增加的網絡都會沿着identity mapping(自身)進行信息傳輸,可以理解為最優網絡后面的層數都是廢掉的(不具備特征提取的能力),實際上沒起什么作用。這樣,網絡的性能也就不會隨着深度的增加而降低了。
我這里數學推導了一下
①沒有跳躍鏈接時,L的梯度值會因為連乘而趨近於0;
②有跳躍連接時,最后L的梯度值,由於中間部分趨近於0了,所有上圖最后一行“+”后面的就是趨近於0的唄,結構圖中間部分相當於沒用了,但還有跳躍鏈接傳過去的L2的梯度值傳到L的位置,相當於變相加強了L+2的梯度值。
網絡結構
文中提到了一個名詞叫“Shortcut Connection”,實際上它指的就是identity mapping,這里先解釋一下,免的大家后面會confuse。針對不同深度的ResNet,作者提出了兩種Residual Block:
對上圖做如下說明:
1. 左圖為基本的residual block,residual mapping為兩個64通道的3x3卷積,輸入輸出均為64通道,可直接相加。該block主要使用在相對淺層網絡,比如ResNet-34;
2. 右圖為針對深層網絡提出的block,稱為“bottleneck” block,主要目的就是為了降維。首先通過一個1x1卷積將256維通道(channel)降到64通道,最后通過一個256通道的1x1卷積恢復。
通過上面的介紹我們知道,residual mapping和identity mapping是沿通道維度相加的,那么如果通道維度不相同怎么辦?
作者提出在identity mapping部分使用1x1卷積進行處理,表示如下:
其中,Ws指的是1x1卷積操作。
下圖為VGG-19,Plain-34(沒有使用residual結構)和ResNet-34網絡結構對比:
對上圖進行如下說明:
1. 相比於VGG-19,ResNet沒有使用全連接層,而使用了全局平均池化層,可以減少大量參數。VGG-19大量參數集中在全連接層;
2. ResNet-34中跳躍連接“實線”為identity mapping和residual mapping通道數相同,“虛線”部分指的是兩者通道數不同,需要使用1x1卷積調整通道維度,使其可以相加。
論文一共提出5種ResNet網絡,網絡參數統計表如下:
其中152層效果最好,日常工作中101層和50層最常用,相差不大(flops為計算次數)
————————————————
版權聲明:本文為CSDN博主「z小白」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zzc15806/article/details/83540661