為什么ResNet和DenseNet可以這么深?一文詳解殘差塊為何能解決梯度彌散問(wèn)題氓拼。

傳統(tǒng)的“提拉米蘇”式卷積神經(jīng)網(wǎng)絡(luò)模型你画,都以層疊卷積層的方式提高網(wǎng)絡(luò)深度抵碟,從而提高識(shí)別精度。但層疊過(guò)多的卷積層會(huì)出現(xiàn)一個(gè)問(wèn)題坏匪,就是梯度彌散(Vanishing)拟逮,backprop無(wú)法把有效地把梯度更新到前面的網(wǎng)絡(luò)層,導(dǎo)致前面的層參數(shù)無(wú)法更新适滓。

而ResNet的出現(xiàn)就是為了解決這個(gè)問(wèn)題敦迄,通過(guò)在卷積層之間增加一個(gè)skip connection,就能很好的把梯度傳到更遠(yuǎn)的層次中凭迹。那么問(wèn)題來(lái)了罚屋,

為什么加了一個(gè)捷徑就能防止梯度彌散?

這個(gè)要從神經(jīng)網(wǎng)絡(luò)梯度更新的過(guò)程說(shuō)起嗅绸,如果讀者已經(jīng)非常熟悉神經(jīng)網(wǎng)絡(luò)的梯度更新脾猛,可以快進(jìn)這部分,但這個(gè)梯度更新的原理才是整個(gè)問(wèn)題的關(guān)鍵鱼鸠。

神經(jīng)網(wǎng)絡(luò)梯度更新過(guò)程的簡(jiǎn)單回顧

這里主要引用cs231n的講義猛拴,個(gè)人認(rèn)為這是理解神經(jīng)網(wǎng)絡(luò)梯度更新講得最好的課程,建議直接看cs231n 2016的視頻講解瞧柔,Andrej Karpathy在視頻里講得非常清晰漆弄,配合他的PPT看非常易懂,這里是地址:CS231n Winter 2016: Lecture 4: Backpropagation, Neural Networks 1造锅。這里是YouTube視頻鏈接撼唾,國(guó)內(nèi)的朋友請(qǐng)百度:cs231n 2016視頻。

由于篇幅原因哥蔚,就不像Andrej在視頻里從實(shí)例講起那么詳細(xì)了倒谷,這里就只講梯度在中間層傳播時(shí)的計(jì)算過(guò)程,如果還沒(méi)完全了解神經(jīng)網(wǎng)絡(luò)梯度更新原理的糙箍,建議先把視頻看完渤愁。

圖1 來(lái)自斯坦福cs231n課程slides

當(dāng)梯度傳播到中間層的神經(jīng)元f時(shí),如圖1所示深夯,來(lái)自上一層的梯度dLdz從右邊z進(jìn)入抖格,傳到中間的神經(jīng)元。此神經(jīng)元在左邊有兩個(gè)輸入咕晋,分別是x和y雹拄,為了計(jì)算L對(duì)于x和y的梯度dLdx和dLdy,就必須先計(jì)算dzdx和dzdy掌呜,根據(jù)復(fù)合函數(shù)求導(dǎo)公式滓玖,dLdx = dLdz *** dzdx,dLdy = dLdz * dzdy质蕉,這樣就能算出傳播到x和y的梯度了势篡。也就是說(shuō)通過(guò)這個(gè)方法翩肌,來(lái)自深一層的梯度就能傳播到x和y當(dāng)中。

圖2

讓我們來(lái)考慮一個(gè)新的情況禁悠。圖2虛線框?yàn)橐粋€(gè)神經(jīng)元block念祭,假設(shè)輸入x為10,權(quán)重w1=0.1绷蹲,w2=0.1棒卷,w3=0.1顾孽,w4=0.1祝钢,每個(gè)神經(jīng)元對(duì)輸入的操作均為相乘。我們對(duì)它進(jìn)行前傳和后傳的計(jì)算若厚,看看梯度的變化情況:

前向傳播:
首先x與w1相乘拦英,得到1;1與w2相乘测秸,得到0.1疤估,以此類推,如下面的gif圖綠色數(shù)字表示:

圖3 前向傳播

后向傳播:
假設(shè)從下一層網(wǎng)絡(luò)傳回來(lái)的梯度為1(最右邊的數(shù)字)霎冯,后向傳播的梯度數(shù)值如下面gif圖紅色數(shù)字表示:

圖4 后向傳播

那么這里可以看到铃拇,本來(lái)從上一層傳過(guò)來(lái)的梯度為1,經(jīng)過(guò)這個(gè)block之后沈撞,得到的梯度已經(jīng)變成了0.0001和0.01慷荔,也就是說(shuō),梯度流過(guò)一個(gè)blcok之后缠俺,就已經(jīng)下降了幾個(gè)量級(jí)显晶,傳到前一層的梯度將會(huì)變得很小壹士!

這就是梯度彌散磷雇。假如模型的層數(shù)越深,這種梯度彌散的情況就更加嚴(yán)重躏救,導(dǎo)致淺層部分的網(wǎng)絡(luò)權(quán)重參數(shù)得不到很好的訓(xùn)練唯笙,這就是為什么在Resnet出現(xiàn)之前,CNN網(wǎng)絡(luò)都不超過(guò)二十幾層的原因盒使。

防止梯度彌散的辦法

既然梯度經(jīng)過(guò)一層層的卷積層會(huì)逐漸衰減崩掘,我們來(lái)考慮一個(gè)新的結(jié)構(gòu),如圖5:

圖5

假如忠怖,我們?cè)谶@個(gè)block的旁邊加了一條“捷徑”(如圖5橙色箭頭)呢堰,也就是常說(shuō)的“skip connection”。假設(shè)左邊的上一層輸入為x凡泣,虛線框的輸出為f(x)枉疼,上下兩條路線輸出的激活值相加為h(x)皮假,即h(x) = F(x) + x,得出的h(x)再輸入到下一層骂维。

圖6

當(dāng)進(jìn)行后向傳播時(shí)惹资,右邊來(lái)自深層網(wǎng)絡(luò)傳回來(lái)的梯度為1,經(jīng)過(guò)一個(gè)加法門(mén)航闺,橙色方向的梯度為dh(x)/dF(x)=1褪测,藍(lán)色方向的梯度也為1。這樣潦刃,經(jīng)過(guò)梯度傳播后侮措,現(xiàn)在傳到前一層的梯度就變成了[1, 0.0001, 0.01],多了一個(gè)“1”乖杠!正是由于多了這條捷徑分扎,來(lái)自深層的梯度能直接暢通無(wú)阻地通過(guò),去到上一層胧洒,使得淺層的網(wǎng)絡(luò)層參數(shù)等到有效的訓(xùn)練畏吓!

這個(gè)想法是何等的簡(jiǎn)約而偉大,不得不佩服作者的強(qiáng)大的思維能力卫漫!

直觀理解

圖7

如圖6菲饼,左邊來(lái)了一輛裝滿了“梯度”商品的貨車,來(lái)領(lǐng)商品的客人一般都要排隊(duì)一個(gè)個(gè)拿才可以列赎,如果排隊(duì)的人太多宏悦,后面的人就沒(méi)有了。于是這時(shí)候派了一個(gè)人走了“快捷通道”粥谬,到貨車上領(lǐng)了一部分“梯度”肛根,直接送給后面的人,這樣后面排隊(duì)的客人就能拿到更多的“梯度”漏策。

Resnet與DenseNet

圖8

ResNet正是有了這樣的Skip Connection派哲,梯度能暢通無(wú)阻地通過(guò)各個(gè)Res blocks,作者何凱明說(shuō)到掺喻,唯一影響深度的就是內(nèi)存不足芭届,因此只要內(nèi)存足夠,上千層的殘差網(wǎng)絡(luò)也都能實(shí)現(xiàn)感耙。

而DenseNet更為極端褂乍,它的skip connection不僅僅只連接上下層,直接實(shí)現(xiàn)了跨層連接即硼,每一層獲得的梯度都是來(lái)自前面幾層的梯度加成逃片。

圖9 DenseNet結(jié)構(gòu)

DenseNet在增加深度的同時(shí),加寬每一個(gè)DenseBlock的網(wǎng)絡(luò)寬度只酥,能夠增加網(wǎng)絡(luò)識(shí)別特征的能力褥实,而且由于DenseBlock的橫向結(jié)構(gòu)類似 Inception block的結(jié)構(gòu)呀狼,使得需要計(jì)算的參數(shù)量大大降低。因而此論文獲得了CVPR2017最佳論文獎(jiǎng)項(xiàng)损离!

圖10 DenseNet詳細(xì)結(jié)構(gòu) 來(lái)自原論文

總結(jié)

ResBlock能夠完美解決梯度彌散的問(wèn)題哥艇,這使得更深的網(wǎng)絡(luò)成為可能。卷積神經(jīng)網(wǎng)絡(luò)除了不斷往深度發(fā)展僻澎,在寬度上也不斷拓展貌踏,兩者結(jié)合起來(lái)可以創(chuàng)造出更強(qiáng)大的CNN模型。期待更多杰出的工作窟勃!

由于筆者水平尚淺祖乳,對(duì)上面的概念理解或許有偏差,歡迎各位指正拳恋,不勝感激凡资。如果覺(jué)得這篇文章對(duì)您有幫助,請(qǐng)點(diǎn)擊下面的心形按鈕谬运,或者分享給您的朋友,讓更多人一起學(xué)習(xí)垦藏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梆暖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子掂骏,更是在濱河造成了極大的恐慌轰驳,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弟灼,死亡現(xiàn)場(chǎng)離奇詭異级解,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)田绑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)勤哗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人掩驱,你說(shuō)我怎么就攤上這事芒划。” “怎么了欧穴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵民逼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涮帘,道長(zhǎng)拼苍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任调缨,我火速辦了婚禮疮鲫,結(jié)果婚禮上苟鸯,老公的妹妹穿的比我還像新娘。我一直安慰自己棚点,他們只是感情好早处,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瘫析,像睡著了一般砌梆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贬循,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天咸包,我揣著相機(jī)與錄音,去河邊找鬼杖虾。 笑死烂瘫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奇适。 我是一名探鬼主播坟比,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嚷往!你這毒婦竟也來(lái)了葛账?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤皮仁,失蹤者是張志新(化名)和其女友劉穎籍琳,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體贷祈,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趋急,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了势誊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呜达。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖键科,靈堂內(nèi)的尸體忽然破棺而出闻丑,到底是詐尸還是另有隱情,我是刑警寧澤勋颖,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布嗦嗡,位于F島的核電站,受9級(jí)特大地震影響饭玲,放射性物質(zhì)發(fā)生泄漏侥祭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矮冬。 院中可真熱鬧谈宛,春花似錦、人聲如沸胎署。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)琼牧。三九已至恢筝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巨坊,已是汗流浹背撬槽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趾撵,地道東北人侄柔。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像占调,于是被迫代替她去往敵國(guó)和親暂题。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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