ResNet(一)相关概念
文章目錄
- 一、ResNet 介紹
- 1.1 ResNet 由來
- 1.2 深度殘差網絡 DRN 之恒等映射
- 1.3 34層的深度殘差網絡的結構圖
- 1.4 深度殘差網絡的結構圖實線和虛線
- 1.5 不同層的殘差學習單元
- 二、ResNet 結構
- 2.1 ResNet基本架構圖
- 2.2 基本參數解釋
- 2.3 residual 分支和 identity 分支
- 2.4 Post-activation 和 Pre-activation
- 三、深度學習發展歷程
一、ResNet 介紹
1.1 ResNet 由來
??ResNet由微軟研究院的kaiming He等4名華人提出,通過使用Residual Unit成功訓練152層深的神經網絡,在ILSVRC 2015比賽中獲得了冠軍,取得3.57%的top5錯誤率,同時參數量卻比VGGNet低,效果非常突出。ResNet的結構可以極快地加速超深神經網絡的訓練,模型的準確率也有非常大的提升。
??ResNet最初的靈感出自這個問題:在不斷增加神經網絡的深度時,會出現一個Degradation(退化)的問題,即準確率會先上升然后達到飽和,再持續增加深度則會導致準確率下降。這并不是過擬合的問題,因為不光在測試集上誤差增大,訓練集本身誤差也會增大。
1.2 深度殘差網絡 DRN 之恒等映射
??深度殘差網絡(Deep Residual Network,簡稱DRN)之恒等映射。
??前面描述了一個實驗結果現象,在不斷加神經網絡的深度時,模型準確率會先上升然后達到飽和,再持續增加深度時則會導致準確率下降,示意圖如下:
??那么我們作這樣一個假設:假設現有一個比較淺的網絡(Shallow Net)已達到了飽和的準確率,這時在它后面再加上幾個恒等映射層(Identity mapping,也即y=x,輸出等于輸入),這樣就增加了網絡的深度,并且起碼誤差不會增加,也即更深的網絡不應該帶來訓練集上誤差的上升。而這里提到的使用恒等映射直接將前一層輸出傳到后面的思想,便是著名深度殘差網絡ResNet的靈感來源。
??ResNet引入了殘差網絡結構(residual network),通過這種殘差網絡結構,可以把網絡層弄的很深(據說目前可以達到1000多層),并且最終的分類效果也非常好,殘差網絡的基本結構如下圖所示,很明顯,該圖是帶有跳躍結構的:
??假定某段神經網絡的輸入是x,期望輸出是H(x),即H(x)是期望的復雜潛在映射,如果是要學習這樣的模型,則訓練難度會比較大;
??回想前面的假設,如果已經學習到較飽和的準確率(或者當發現下層的誤差變大時),那么接下來的學習目標就轉變為恒等映射的學習,也就是使輸入x近似于輸出H(x),以保持在后面的層次中不會造成精度下降。
??在上圖的殘差網絡結構圖中,通過shortcut connections(捷徑連接) 的方式,直接把輸入x傳到輸出作為初始結果,輸出結果為H(x)=F(x)+x,當F(x)=0時,那么H(x)=x,也就是上面所提到的恒等映射。于是,ResNet相當于將學習目標改變了,不再是學習一個完整的輸出,而是目標值H(X)和x的差值,也就是所謂的 殘差F(x) := H(x)-x,因此,后面的訓練目標就是要將殘差結果逼近于0,使到隨著網絡加深,準確率不下降。
??這種殘差跳躍式的結構,打破了傳統的神經網絡n-1層的輸出只能給n層作為輸入的慣例,使某一層的輸出可以直接跨過幾層作為后面某一層的輸入,其意義在于為疊加多層網絡而使得整個學習模型的錯誤率不降反升的難題提供了新的方向。
??至此,神經網絡的層數可以超越之前的約束,達到幾十層、上百層甚至千層,為高級語義特征提取和分類提供了可行性。
1.3 34層的深度殘差網絡的結構圖
??下面感受一下34層的深度殘差網絡的結構圖,是不是很壯觀:
1.4 深度殘差網絡的結構圖實線和虛線
??從圖可以看出,怎么有一些“shortcut connections(捷徑連接)”是實線,有一些是虛線,有什么區別呢?
??因為經過“shortcut connections(捷徑連接)”后,H(x)=F(x)+x,如果F(x)和x的通道相同,則可直接相加,那么通道不同怎么相加呢。上圖中的實線、虛線就是為了區分這兩種情況的:
- 實線的Connection部分,表示通道相同,如上圖的第一個粉色矩形和第三個粉色矩形,都是3x3x64的特征圖,由于通道相同,所以采用計算方式為H(x)=F(x)+x
- 虛線的的Connection部分,表示通道不同,如上圖的第一個綠色矩形和第三個綠色矩形,分別是3x3x64和3x3x128的特征圖,通道不同,采用的計算方式為H(x)=F(x)+Wx,其中W是卷積操作,用來調整x維度的。
1.5 不同層的殘差學習單元
??除了上面提到的兩層殘差學習單元,還有三層的殘差學習單元,如下圖所示:
??兩種結構分別針對ResNet34(左圖)和ResNet50/101/152(右圖),其目的主要就是為了降低參數的數目。左圖是兩個3x3x256的卷積,參數數目: 3x3x256x256x2 = 1179648,右圖是第一個1x1的卷積把256維通道降到64維,然后在最后通過1x1卷積恢復,整體上用的參數數目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,右圖的參數數量比左圖減少了16.94倍,因此,右圖的主要目的就是為了減少參數量,從而減少計算量。
??對于常規的ResNet,可以用于34層或者更少的網絡中(左圖);對于更深的網絡(如101層),則使用右圖,其目的是減少計算和參數量。
??經檢驗,深度殘差網絡的確解決了退化問題,如下圖(后期更新實驗用圖)所示,左圖為平原網絡(plain network)網絡層次越深(34層)比網絡層次淺的(18層)的誤差率更高;右圖為殘差網絡ResNet的網絡層次越深(34層)比網絡層次淺的(18層)的誤差率更低。
二、ResNet 結構
2.1 ResNet基本架構圖
-
圖1 是2016年ResNet V1 架構圖;
??1)BN和ReLU在weight的后面;屬于常規范疇,我們平時也都這個順序:Conv → BN → ReLU;
??2)最后的ReLU在addition的后面;常規ReLU在addition的前面; -
圖(2)的結構為何會阻礙反向傳播時的信息。
-
圖3 是不work的情況
-
圖4 的結構與ResNet原結構伯仲之間,稍稍遜色
-
圖5 的結構卻好于ResNet原結構,是ResNet V2 架構圖
2.2 基本參數解釋
- weight指conv層
- BN指Batch Normalization層
- ReLU指激活層
- addition指相加
2.3 residual 分支和 identity 分支
??ResNet要盡量保證兩點:
????1)不輕易改變”identity“分支的值,也就是輸入與輸出一致;
????2)addition之后不再接改變信息分布的層;
??對于每個圖右側部分我們稱作“residual”分支,左側部分我們稱作“identity”分支”。
??如果ReLU作為“residual”分支的結尾,我們不難發現“residual”分支的結果永遠非負,這樣前向的時候輸入會單調遞增,從而會影響特征的表達能力,所以我們希望“residual”分支的結果應該在(-∞, +∞);這點也是我們以后設計網絡時所要注意的。
- 對于圖(3)把ReLU作為“residual”分支的結尾,所以是不work的情況。
- 如圖(2),保證了“residual”分支的取值范圍;但是,這里BN改變了“identity”分支的分布,影響了信息的傳遞,在訓練的時候會阻礙loss的下降;
2.4 Post-activation 和 Pre-activation
??Post-activation”和”Pre-activation”,其中Post和Pre的概念是相對于weight(conv)層來說的,那么我們不難發現,圖(1), (2), (3)都是”Post-activation”,圖(4), (5)都是”Pre-activation”,那么兩種模式哪一個更好呢?這里我們就用實驗結果說話。上圖是5種結構在Cifar10上的實驗結果;一共實驗了兩種網絡ResNet110和ResNet164(注:這里直接摘抄了原文的圖片,本人后期將更新最新的實驗圖);
??從實驗結果上,我們可以發現圖(4)的結構與ResNet原結構伯仲之間,稍稍遜色,然而圖(5)的結構卻好于ResNet原結構,我們通常把圖5的結構稱作ResNetV2。
??圖5的結構好的原因在于兩點:
????1)反向傳播基本符合假設,信息傳遞無阻礙;
????2)BN層作為pre-activation,起到了正則化的作用;
三、深度學習發展歷程
??ResNet在ILSVRC2015競賽中驚艷亮相,一下子將網絡深度提升到152層,將錯誤率降到了3.57,在圖像識別錯誤率和網絡深度方面,比往屆比賽有了非常大的提升,ResNet毫無懸念地奪得了ILSVRC2015的第一名。如下圖所示:
歡迎學習交流,個人QQ 87605025總結
以上是生活随笔為你收集整理的ResNet(一)相关概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: whisper 强大且开源的语音转文字
- 下一篇: Neutron Metering as