ResNet網(wǎng)絡(luò)

ResNet (Residual Neural Network幼衰,殘差網(wǎng)絡(luò))由微軟研究院何凱明等人提出的,通過在深度神經(jīng)網(wǎng)絡(luò)中加入殘差單元(Residual Unit)使得訓(xùn)練深度比以前更加高效谦絮。ResNet在2015年的ILSVRC比賽中奪得冠軍,ResNet的結(jié)構(gòu)可以極快的加速超深神經(jīng)網(wǎng)絡(luò)的訓(xùn)練洁仗,模型準(zhǔn)確率也有非常大的提升层皱。


ResNet V1

在ResNet之前,瑞士教授Schimidhuber提出了Highway Network,其原理與ResNet非常相似。通常認(rèn)為神經(jīng)網(wǎng)絡(luò)的深度對(duì)其性能非常重要坠非,但是網(wǎng)絡(luò)越深訓(xùn)練越困難免糕,Highway Network的目標(biāo)就是解決極深的神經(jīng)網(wǎng)絡(luò)難以訓(xùn)練的問題。

Highway Network相當(dāng)于修改了每一層激活函數(shù),此前激活函數(shù)只是對(duì)輸入做一次非線性變換y=H(x, Wh), 而Highway Network則允許保留一部分比例的原始輸入x,即y=H(x, Wh)* T(x , Wt)+x*C(x, Wc),其中T為變換系數(shù)钉赁,C為保留系數(shù),論文中令C=1-T携茂。這樣前面一層的信息你踩,有一定比例可以不經(jīng)過矩陣乘法和非線性變換,直接傳輸?shù)较乱粚踊淇啵路鹨粭l信息高速公路带膜,因此得名Highway Network。

ResNet和Highway Network非常相似鸳谜,也是允許原始輸入信息直接輸出到后面的層中膝藕。ResNet最初的靈感出自這樣一個(gè)問題:在不斷加深的網(wǎng)絡(luò)中,會(huì)出現(xiàn)一個(gè)Degradation的問題咐扭,即準(zhǔn)確率會(huì)先升然后達(dá)到飽和芭挽,在持續(xù)加深網(wǎng)絡(luò)反而會(huì)導(dǎo)致網(wǎng)絡(luò)準(zhǔn)確率下降。而且這并非是由于過擬合導(dǎo)致的蝗肪,因?yàn)槠洳粌H在測(cè)試集上誤差增大袜爪,訓(xùn)練集本身誤差也會(huì)增大。假設(shè)有一個(gè)比較淺的網(wǎng)絡(luò)達(dá)到了飽和的準(zhǔn)確率薛闪,在后面加上幾個(gè)y=x的全等映射層辛馆,起碼誤差不會(huì)增加,即更深的網(wǎng)絡(luò)不應(yīng)該帶來訓(xùn)練集上的誤差上升豁延,而這里提到的使用全等映射直接將前一層輸出傳到后面的思想昙篙,就是ResNet的靈感來源腊状。假定某神經(jīng)網(wǎng)絡(luò)的輸入是x,期望輸出是H(x)苔可,如果我們直接把輸入x傳到輸出作為初始結(jié)果缴挖,那么此時(shí)我們需要學(xué)習(xí)的目標(biāo)就是F(x) = H(x) - x。一個(gè)殘差學(xué)習(xí)單元(Residual Unit)如下圖所示硕蛹,ResNet相當(dāng)于將學(xué)習(xí)目標(biāo)改變了醇疼,不再是學(xué)習(xí)一個(gè)完整的輸出H(x),只是輸出和輸入的差別H(x) - x法焰,即殘差。
殘差學(xué)習(xí)單元

下面我們?cè)倏匆幌耉GG19倔毙,一個(gè)34層深的普通卷積網(wǎng)絡(luò)和34層深的ResNet網(wǎng)絡(luò)的對(duì)比圖埃仪。可以看到普通直連的卷積網(wǎng)絡(luò)和ResNet的最大區(qū)別在于陕赃,ResNet有很多旁路的支線將輸入直接連到后面的層卵蛉,使得后面的層可以直接學(xué)習(xí)殘差,這種結(jié)構(gòu)也被稱為shortcut或skip connections么库。
3個(gè)網(wǎng)絡(luò)對(duì)比

傳統(tǒng)的卷積層或全連接層在傳遞信息時(shí)傻丝,或多或少會(huì)存在信息丟失、損耗等問題诉儒。ResNet在某種程度上解決了這個(gè)問題葡缰,通過直接將輸入信息繞道傳到輸出,保護(hù)信息的完整性忱反,整個(gè)網(wǎng)絡(luò)只需要學(xué)習(xí)輸入泛释、輸出差別的那一部分,簡(jiǎn)化學(xué)習(xí)目標(biāo)和難度温算。

殘差學(xué)習(xí)單元可以有不同的層數(shù)怜校,如下圖所示。兩層殘差單元中包含兩個(gè)相同輸出通道數(shù)(因?yàn)闅埐畹扔谀繕?biāo)輸出減去輸入注竿,因此輸入輸出維度需保持一致)的3*3卷積茄茁;而3層的殘差網(wǎng)絡(luò)則使用了1*1卷積,并且是在中間3*3的前后都使用了1*1卷積巩割,有先降維在升維的操作裙顽。
兩種殘差學(xué)習(xí)單元

此外,ResNet論文中還提到了針對(duì)輸出和輸入維度不同時(shí)的做法喂分。當(dāng)輸入輸出相同時(shí)使用的是恒等快捷連接(Identity shortcuts)锦庸,當(dāng)輸入輸出維度不同時(shí)使用的是投影快捷連接(下圖2)和填充零。
Identity shortcuts
Projection shortcuts

如上所示蒲祈,投影快捷連接相當(dāng)于對(duì)原始輸入做了一個(gè)線性映射變換維度使得其維度與F(x, W)維度相同甘萧。

ResNet論文中作者嘗試了3種不同的殘差單元快捷連接方式:(A)零填充快捷連接用來增加維度萝嘁,這時(shí)所有的快捷連接仍然都是沒有參數(shù)的;(B)投影快捷連接用來增加維度扬卷,其他的快捷連接是恒等的牙言;(C)所有的快捷連接都是投影連接。比較結(jié)果見下圖怪得。
A咱枉、B、C三種快捷連接比較

結(jié)果顯示徒恋,B比A略好蚕断,這是因?yàn)锳中的零填充確實(shí)沒有殘差學(xué)習(xí)。而C比B稍好入挣,這是由于投影快捷連接引入了額外參數(shù)亿乳。但A、B径筏、C之間的細(xì)微差異表明投影連接對(duì)于解決退化問題不是至關(guān)重要的葛假,而不/少使用投影連接可以減少內(nèi)存/時(shí)間復(fù)雜性和模型大小。而且無參數(shù)恒等快捷連接對(duì)于瓶頸架構(gòu)(3層殘差學(xué)習(xí)單元)尤為重要滋恬,因?yàn)槠款i架構(gòu)中層具有較小的輸入輸出聊训,快捷連接是連接到兩個(gè)高維端,此時(shí)恒等快捷連接無需參數(shù)恢氯,而使用投影的話則會(huì)顯示時(shí)間和模型復(fù)雜度加倍带斑。因此,恒等快捷連接可以為瓶頸設(shè)計(jì)得到更有效的模型酿雪。

最后遏暴,作者嘗試了更深的1000層以上的神經(jīng)網(wǎng)絡(luò),發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)仍然能夠較好的學(xué)習(xí)指黎,但是其測(cè)試誤差比100多層的殘差網(wǎng)絡(luò)要差朋凉,而訓(xùn)練誤差則與100多層的殘差網(wǎng)絡(luò)相似,作者認(rèn)為這可能是由于過擬合導(dǎo)致的醋安,可通過加大正則化來解決這一問題杂彭。


ResNet V2

在ResNet V1中,作者研究通過加入殘差單元使得訓(xùn)練深度達(dá)到上百層的神經(jīng)網(wǎng)絡(luò)成為可能吓揪,解決了梯度消失/爆炸的問題亲怠。而在ResNet V2中作者進(jìn)一步證明了恒等映射(Identity mapping)的重要性。同時(shí)作者還提出了一種新的殘差單元(采用了預(yù)激活)使得訓(xùn)練變得更簡(jiǎn)單柠辞,同時(shí)還提高了模型的泛化能力团秽。

在ResNet V2中,作者提出了不止在殘差單元內(nèi)部,而是在整個(gè)神經(jīng)網(wǎng)絡(luò)中都創(chuàng)建了‘直接’的計(jì)算傳播路徑习勤。在ResNet V1中踪栋,殘差學(xué)習(xí)單元的

前向傳播計(jì)算公式如下:
ResNet V1

其中h(x) = x。而通過遞歸图毕,對(duì)于任意深的單元L和任意淺的單元l夷都,可以得到:

而在反向傳播階段,由鏈?zhǔn)角髮?dǎo)可得到下面這個(gè)式子:
鏈?zhǔn)椒▌t
上式由兩部分組成予颤,其中第一部分‘1’直接傳遞信息而不涉及任何權(quán)重層囤官,而后面一部分則表示通過權(quán)重層的傳遞。第一部分‘1’保證了信息能夠直接傳回任意淺層l蛤虐。

上式同樣表明了在一個(gè)mini-batch中不可能出現(xiàn)梯度消失的現(xiàn)象党饮,因?yàn)樯鲜角髮?dǎo)的第二部分對(duì)于一個(gè)mini-batch來說,不可能所有樣本其導(dǎo)數(shù)都為-1笆焰,因此劫谅,可能會(huì)出現(xiàn)權(quán)重很小的情況,但是不會(huì)出現(xiàn)梯度消失的情況嚷掠。

作者研究了使用不同函數(shù)來代替殘差單元中的恒等映射:
使用不同方式替代恒等連接

通過研究這些不同的快捷連接,作者發(fā)現(xiàn)大部分快捷連接方式無法很好地收斂荞驴,其中很大部分是由于使用這些快捷連接后或多或少會(huì)出現(xiàn)梯度消失或者梯度爆炸的現(xiàn)象不皆,最后結(jié)果顯示恒等映射效果最好。

雖然恒等映射在這些方法中表寫結(jié)果最好熊楼,仍需引起注意的是1×1的卷積捷徑連接引入了更多的參數(shù)霹娄,本應(yīng)該比恒等捷徑連接具有更加強(qiáng)大的表達(dá)能力。事實(shí)上鲫骗,shortcut-only gating 和1×1的卷積涵蓋了恒等捷徑連接的解空間(即犬耻,他們能夠以恒等捷徑連接的形式進(jìn)行優(yōu)化)。然而执泰,它們的訓(xùn)練誤差比恒等捷徑連接的訓(xùn)練誤差要高得多枕磁,這表明了這些模型退化問題的原因是優(yōu)化問題,而不是表達(dá)能力的問題术吝。

同時(shí)作者還研究了在殘差單元中不同位置使用激活函數(shù)的效果计济,如激活是在BN之前還是在BN之后等,如下圖所示:
a為原始的激活函數(shù)連接方式排苍,b-e為文中作者研究的不同的連接方式

在上圖b中沦寂,采用先加后BN再激活的方法,此時(shí)f(x)就包含了BN和ReLU淘衙。這樣的結(jié)果比原始a要差传藏。這主要是因?yàn)锽N層改變了流經(jīng)快捷連接的信號(hào),阻礙了信息的傳遞。

在c中毯侦,ReLU在相加之前哭靖,此時(shí)f(x)=x,為恒等映射叫惊。此時(shí)殘差單元中的F(x)輸出經(jīng)由ReLU后變?yōu)榉秦?fù)款青,然而一個(gè)“殘差”函數(shù)的輸出應(yīng)該是(?∞,+∞) 的。造成的結(jié)果就是霍狰,前向傳遞的信號(hào)是單調(diào)遞增的抡草。這會(huì)影響表達(dá)能力,結(jié)果也變得更差了蔗坯。

在d康震、e中分別使用了ReLU的預(yù)激活和全激活(其BN和ReLU都放在權(quán)重層前面)。而且在這兩種方式中宾濒,激活函數(shù)對(duì)于任意的l腿短,僅對(duì)F路徑造成影響:

結(jié)果顯示,只使用ReLU預(yù)激活(d)的結(jié)果與原始ResNet結(jié)果很接近绘梦,這個(gè)與ReLU層不與BN層連接使用橘忱,因此無法獲得BN所帶來的好處。而當(dāng)BN和ReLU都使用在預(yù)激活上時(shí)(e)卸奉,結(jié)果得到了可觀的提升钝诚。

預(yù)激活的影響有兩個(gè)方面:第一,由于f(x)也是恒等映射榄棵,相比于V1優(yōu)化變得更加簡(jiǎn)單凝颇;第二,在預(yù)激活中使用BN能提高模型的正則化疹鳄。

對(duì)于f(x)為恒等映射的好處:一方面若使用f= ReLU拧略,如果信號(hào)是負(fù)的時(shí)候會(huì)造成一定的影響,無法傳遞有用的負(fù)信號(hào)瘪弓,而當(dāng)殘差單元很多時(shí)垫蛆,這個(gè)影響將會(huì)變得尤為突出;另一方面當(dāng)f是一個(gè)恒等映射時(shí)杠茬,信號(hào)在兩個(gè)單元間能夠很直接的傳遞月褥。


ResNext

在ResNet V1中作者提出了殘差學(xué)習(xí)單元,并從理論和實(shí)驗(yàn)上證明使用直連的shortcuts有助于解決深度達(dá)到上百層的神經(jīng)網(wǎng)絡(luò)的訓(xùn)練問題瓢喉。而在ResNet V2中作者證明了在shortcuts中使用直接映射(即H(x) = h(x) + F(x)中h(x) = x)得到的效果最好宁赤。在ResNext中作者將bottleneck拆分成多個(gè)分支,提出了神經(jīng)網(wǎng)絡(luò)中的第三個(gè)維度(另外兩個(gè)維度分別為depth栓票,神經(jīng)網(wǎng)絡(luò)層數(shù)深度决左,width愕够,寬度,channel數(shù))佛猛,命名為Cardinality惑芭,并在多個(gè)數(shù)據(jù)集中證明了將bottleneck拆分能夠降低訓(xùn)練錯(cuò)誤率和提高準(zhǔn)確率。

ResNext

ResNext的靈感來源于VGG/ResNet和Inception:(1)在VGG继找、ResNet中遂跟,作者使用了相同結(jié)構(gòu)的卷積層進(jìn)行了堆疊,構(gòu)建了層數(shù)很深但是結(jié)構(gòu)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)婴渡;(2)而在Inception中幻锁,提出了一種叫做split-transform-merge的策略,將輸入(采用1x1 卷積核)分裂為幾個(gè)低維 embedding边臼,再經(jīng)過一系列特定卷積層的變換哄尔,最后連接在一起。

而在ResNet中柠并,作者將原ResNet bottleneck中的一條path拆分為多個(gè)分支(multi branch)岭接,以此分支數(shù)量提出神經(jīng)網(wǎng)絡(luò)中的第三個(gè)重要維度——Cardinality。這一想法結(jié)合了VGG中的相同結(jié)構(gòu)堆疊和Inception中的split-transform-merge策略臼予,即如上圖所示鸣戴,每個(gè)bottleneck 拆分為多個(gè)分支進(jìn)行堆疊,這些分支的結(jié)構(gòu)相同(這里借鑒了VGG的思想)粘拾,而具體到分支的結(jié)構(gòu)時(shí)又采用了Inception的split-transform-merge策略葵擎。與Inception不同的是Inception的每個(gè)分支結(jié)構(gòu)都是需要認(rèn)為的設(shè)計(jì),而在ResNext中每個(gè)分支結(jié)構(gòu)都相同半哟。最終每個(gè)bottleneck的輸出就變成了:

這里的Ti表示不同的分支,這些分支結(jié)構(gòu)相同签餐。

這些所有的bottlenecks結(jié)構(gòu)都遵循兩個(gè)原則:

  • (i) if producing spatial maps of the same size, the blocks share the same hyper-parameters (width and filter sizes). 如果生成的相同的feature map寓涨,則此block應(yīng)有相同的結(jié)構(gòu)(channel數(shù)量和卷積核大小)氯檐;
  • (ii) each time when the spatial map is downsampled by a factor of 2, the width of the blocks is multiplied by a factor of 2. 每次當(dāng)feature map進(jìn)行1/2下采樣時(shí)戒良,blocks的寬度都要增加兩倍,即channel變?yōu)閮杀豆谏恪_@一條保證了所有blocks的計(jì)算量相同糯崎。

作者提出了 三種效果相同的ResNext的表示方法,如下圖所示:



其中a,b 結(jié)構(gòu)相似河泳,只是在merge這一步的地方不同沃呢,而c則借鑒了AlexNet中分組卷積的思想,將輸入和輸出都分為多個(gè)組拆挥。

作者首先評(píng)估權(quán)衡了cardinality和width的關(guān)系薄霜。

在保證相同模型復(fù)雜度(參數(shù))和計(jì)算量的前提下,作者評(píng)測(cè)了cardinality和width的重要度。
Relations between cardinality and width

作者發(fā)現(xiàn)當(dāng)模型復(fù)雜度相同時(shí)惰瓜,使用更多的cardinality比width效果好否副,他不僅在驗(yàn)證集上的準(zhǔn)確性更高,而且在訓(xùn)練集上的錯(cuò)誤率也更低崎坊,這說明了這些提升的準(zhǔn)確率不是來源于正則化而是實(shí)實(shí)在在的使用更多的cardinality后模型的表示能力要更好备禀。同時(shí),當(dāng)width縮小到一定時(shí)奈揍,模型性能呈現(xiàn)出飽和的趨勢(shì)曲尸,去準(zhǔn)確率很難繼續(xù)降低。具體如下圖表所示:
image.png

接著打月,作者又評(píng)估了使用增加cardinality和depth/width來增加模型復(fù)雜度后的效果:

  • (i) Going deeper to 200 layers. We adopt the ResNet-200队腐,增加深度;
  • (ii) Going wider by increasing the bottleneck width奏篙,增加寬度(channel)柴淘;
  • (iii) Increasing cardinality by doubling C,增加cardinality(path數(shù)量).

如下表所示秘通,增加cardinality效果比增加depth和width都要好:

最后为严,作者還研究了shortcuts對(duì)于ResNext的重要性,在ResNet-50中肺稀,不使用shortcuts準(zhǔn)確率下降了7%第股,而在ResNext-50中準(zhǔn)確率也下降了4%,說明shortcuts對(duì)于殘差網(wǎng)絡(luò)來說確實(shí)是非常重要的话原。


簡(jiǎn)言之夕吻,增加cardinality比增加depth和width效果要好,同時(shí)繁仁,shortcuts對(duì)于模型的準(zhǔn)確率也是至關(guān)重要的涉馅。

參考:
Deep Residual Learning for Image Recognition.
Aggregated Residual Transformations for Deep Neural Networks.
Identity Mappings in Deep Residual Networks.
ResNet論文翻譯——中文版
Identity Mappings in Deep Residual Networks(譯)
TensorFlow實(shí)現(xiàn)經(jīng)典卷積網(wǎng)絡(luò). 黃文堅(jiān),唐源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末黄虱,一起剝皮案震驚了整個(gè)濱河市稚矿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捻浦,老刑警劉巖晤揣,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異朱灿,居然都是意外死亡昧识,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門母剥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滞诺,“玉大人形导,你說我怎么就攤上這事∠芭” “怎么了朵耕?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)淋叶。 經(jīng)常有香客問我阎曹,道長(zhǎng),這世上最難降的妖魔是什么煞檩? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任处嫌,我火速辦了婚禮,結(jié)果婚禮上斟湃,老公的妹妹穿的比我還像新娘熏迹。我一直安慰自己,他們只是感情好凝赛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布注暗。 她就那樣靜靜地躺著,像睡著了一般墓猎。 火紅的嫁衣襯著肌膚如雪捆昏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天毙沾,我揣著相機(jī)與錄音骗卜,去河邊找鬼。 笑死左胞,一個(gè)胖子當(dāng)著我的面吹牛寇仓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烤宙,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼焚刺,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了门烂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤兄淫,失蹤者是張志新(化名)和其女友劉穎屯远,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捕虽,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慨丐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泄私。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片房揭。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡备闲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捅暴,到底是詐尸還是另有隱情恬砂,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布蓬痒,位于F島的核電站泻骤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梧奢。R本人自食惡果不足惜狱掂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亲轨。 院中可真熱鬧趋惨,春花似錦、人聲如沸惦蚊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽养筒。三九已至曾撤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晕粪,已是汗流浹背挤悉。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巫湘,地道東北人装悲。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像尚氛,于是被迫代替她去往敵國和親诀诊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容