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