丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給汪思穎
發(fā)送

0

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

本文作者: 汪思穎 2017-08-25 15:29
導(dǎo)語(yǔ):你想了解的都在這里

雷鋒網(wǎng)按:本文作者Professor ho,原文載于其知乎主頁(yè),雷鋒網(wǎng)獲其授權(quán)發(fā)布。

傳統(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ú)法更新。

而BatchNormalization(BN)、ResNet的skip connection就是為了解決這個(gè)問(wèn)題,BN通過(guò)規(guī)范化輸入數(shù)據(jù)改變數(shù)據(jù)分布,在前傳過(guò)程中消除梯度彌散。而skip connection則能在后傳過(guò)程中更好地把梯度傳到更淺的層次中。那么問(wèn)題來(lái)了,

為什么加了一個(gè)捷徑就能把梯度傳到淺層網(wǎng)絡(luò)?

這個(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ò)梯度更新原理的,建議先把視頻看完。

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

圖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)中。

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

圖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ù)字表示

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


圖3 前向傳播

后向傳播:

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

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

圖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:

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

圖5

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

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

圖6

當(dāng)進(jìn)行后向傳播時(shí),右邊來(lái)自深層網(wǎng)絡(luò)傳回來(lái)的梯度為1,經(jīng)過(guò)一個(gè)加法門,橙色方向的梯度為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)大的思維能力!

直觀理解

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

圖7

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

Resnet與DenseNet

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

圖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)自前面幾層的梯度加成。

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

圖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)!

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

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

總結(jié)

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

由于筆者水平尚淺,對(duì)上面的概念理解或許有偏差,歡迎各位指正,不勝感激。如果覺(jué)得這篇文章對(duì)您有幫助,請(qǐng)分享給您的朋友,讓更多人一起學(xué)習(xí)。

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

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

分享:
相關(guān)文章

編輯

關(guān)注AI學(xué)術(shù),例如論文
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)