日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ResNet 残差、退化等细节解读

發(fā)布時間:2024/9/27 编程问答 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ResNet 残差、退化等细节解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說實話ResNet的網絡結構參數真沒有什么可以解讀的,在本博客中我們主要了解(1)傳統(tǒng)深度學習網絡的退化問題(2)ResNet到底解決了什么問題?(3)簡單了解下ResNet和殘差結構(4)殘差結構如何解決退化問題(5)殘差結構還有什么其他作用?

2016年CVPR Best Paper??https://arxiv.org/abs/1512.03385? ?何凱明大神的作品。。有空多看看。

1. 深度學習網絡的退化問題

? ? ? ? 自AlexNet以來,以CNN為基石的網絡模型越來越深(層數越來越多)。AlexNet有5個卷積層,VGG有19層,GoogleNet(?也稱Inception_v1)有22層。之所以這么一直在增加網絡深度,是有這么一個理論:根據卷積的計算方式,我們認為深度卷積網絡逐層整合了不同層級的特征,伴隨著模型前向推演,模型獲得了更加抽象、更多層級、更加豐富的圖像特征,進而獲得了更好的模型性能。因此我們會傾向于使用更深層次的網絡結構!!!!

補充:低層級特征擁有更多的細節(jié)信息;高層級特征更加抽象,能夠更好的表達圖像局部或者整體的意義。

? ? ? ? 但是經過試驗證明,很深的網絡一般會有兩個問題:

? ? ?(1)在很深的網絡層中,由于參數初始化一般更接近0,這樣在訓練過程中通過反向傳播更新淺層網絡的參數時,很容易隨著網絡的深入而導致梯度消失,淺層的參數無法更新。

? ? ?(2)當網絡達到一定深度后,模型性能會暫時陷入一個瓶頸很難增加,當網絡繼續(xù)加深后,模型在測試集上的性能反而會下降!這其實就是深度學習退化(degradation)!

? ? ? ? 來看一下ResNet論文中的實驗結果圖。

下圖簡單來講,就是在CIFAR-10這個數據集上,分別使用20層和56層的神經網絡去訓練。左圖是訓練誤差,右圖是測試誤差。

我們看圖可以發(fā)現無論是在訓練集還是在測試集上,56層的神經網絡性能都不如20的神經網絡。

注意:造成這種現象的原因有(1)過擬合(2)梯度消失/梯度爆炸(3)網絡退化。

(1)不可能是過擬合

? ? ?? ?過擬合是過多的擬合了訓練集,因此在訓練集上效果好(偏差低),而在測試集上效果差(方差高)。但是我們發(fā)現無論是訓練集誤差還是測試集誤差其實都在下降,只是幅度不一樣。這說明了更深的網絡性能不好是因為網絡沒有被訓練好,其原因是后面的多層非線性網絡無法通過訓練去逼近恒等映射網絡。

解釋一下上面紅字的意思:通常認為在同一個訓練集上,深層網絡的性能無論如何都不應該比淺層網絡差。假設A是一個56層的網絡,B是一個20層的網絡,若想讓A和B擁有同樣的性能,只需要將A中的20層替換為B,然后將A中剩下的36層全部優(yōu)化為恒等映射(即輸入=輸出)。但是實驗證明,后面36層的非線性網絡很難學習逼近恒等映射(看圖即可得到)。

(2)不是梯度消失/梯度爆炸

? ? ?? ?作者在論文中說到,理論上的梯度消失和梯度爆炸都應該被批量歸一化 Batch normalization(BN)解決了。BN通過規(guī)整數據的分布解決梯度消失/爆炸的問題。

2. 深層CNN為何發(fā)生退化??and ResNet到底解決了什么問題?

? ? ?? ?比較好的解釋來自于這篇2017年的論文??The Shattered Gradients Problem: If resnets are the answer, then what is the question?

? ? ?? ?論文大意是當神經網絡越來越深,在反向傳播時候,反傳回來的梯度之間的相關性會越來越差,最后接近白噪聲。因為我們知道圖像是具備局部相關性的,那其實可以認為梯度也應該具備類似的相關性,這樣更新的梯度才有意義,如果梯度接近白噪聲,那梯度更新可能根本就是在做隨機擾動。即使BN過后梯度的模穩(wěn)定在了正常范圍內,但梯度的相關性實際上是隨著層數增加持續(xù)衰減的。而經過證明,ResNet可以有效減少這種相關性的衰減。

? ? ?? ?理論上這種相關性的衰減越少,說明反向傳播回來的信息(可以說是相關性也可以說是梯度)的丟失/損失越少,梯度的更新就更具有實際意義(根據特定目標的有規(guī)律更新而不是隨機擾動),在本節(jié)的論文中作者以相關性這個指標為核心,分析了一系列的網絡結構和激活函數的影響,得出結論:對于一共L層的網絡,沒有殘差結構的普通網絡相關性的衰減在(可以看到是指數級別的衰減),而ResNet的衰減率只有。注:這是論文作者給出的結論,我其實沒有證明,后續(xù)有時間再開一篇博客單獨說這個衰減率的計算!!!

? ? ?? ?因此,個人認為 只要網絡由深度,無論是前向傳播還是反向傳播一定會出現信息的丟失或者說衰減,只是大小的問題,而ResNet 殘差結構的存在使得這種梯度相關性的衰減得到了減少,延緩網絡退化問題的出現(注:這里說的是“延緩”,個人認為無論如何緩解這種相關性的衰減,它必然存在,因此當網絡到了一定深度之后,深層網絡的梯度對于淺層網絡權重更新的影響依然會變得非常小,這就又出現了退化,這種情況不可避免)。

3. 簡單了解下ResNet和殘差結構

? ? ?? ?如果你是從本文1,2節(jié)按照順序看下來的,就會知道 想要神經網絡學習恒等映射是很困難的(原因有待考究,不好表述,可能每個人對于這個問題都有自己的見解),這也是為什么56層網絡的性能反而不如20層網絡的原因。那么現在我們不去學習恒等映射,換個思路,去學習輸入和輸出的差值,如果學習出的差值趨近于0,其實也能得到恒等映射,這樣間接實現了恒等映射。

? ? ?? 下圖就是ResNet 殘差結構的一個抽象圖:我們假定輸入x,輸出y,需要學習的殘差函數f(x),那么現在的前向傳播就變成了

y = f(x) + x?。

? ? ?? 下面這張圖,就是ResNet論文中殘差結構的實際結構(原文提出了18,34,50,101,152 共計5種不同深度的ResNet,18和34層的ResNet的殘差結構如下圖左所示,更深層的3種ResNet殘差結構對應右圖)

? ? ?? ResNet論文給出的所有模型的結構說明:如果你還想學習關于網絡結構的具體細節(jié),可以直接去搜下相關博客,這方面還是挺多的,這里就不多描述了。

4.?殘差結構如何解決退化問題

? ? ?? 同樣假定輸入x,輸出y,需要學習的殘差函數f(x),引入ResNet后的前向傳播就變成了y = f(x) + x?

? ? ?? 在引入ResNet之前,如果我們想要使得深度網絡不出現退化問題,核心是要讓較深的網絡學習到的參數滿足y=x,但是實驗發(fā)現,想要讓神經網絡學習到權重/參數滿足y = x 這一類恒等映射時比較困難。

? ? ?? 因此,ResNet想到避免去學習權重滿足 恒等映射,轉而將前向傳播修改成 y = f(x) + x?。我們發(fā)現,想讓當前神經網絡層學習到恒等映射,只需要讓殘差函數f(x) = 0,而學習f(x) = 0 比直接學習 y = x 要簡單多。為啥那?原因的話這篇博客給了一個解釋,博客地址:學習f(x) = 0 比 y = x簡單的多

? ? ?? 簡單的講就是,因為網絡權重的初始化一般偏向于0,前向傳播的計算往往是類似于這樣的 y = g(wx + b),當權重w很小的時候 (wx+b)理論上也會很小,進而網絡層學習殘差 f(x) = 0的更新參數能夠更快收斂。具體可以看看上面那篇博客,里面有圖。

5.?殘差結構還有什么其他作用?

? ? ?? ResNet的殘差結構本質上是解決網絡退化問題,同時它還可以解決梯度消失。

? ? ?? 梯度消失:引入了殘差結構后的前向傳播抽象的可以表示為?y = f(x) + x?,我們知道反向傳播的本質是損失函數的鏈式求導(求導結果的連乘),同時因為參數初始化一般接近于0,這樣在訓練的過程中更新淺層網絡的參數時,很容易隨著網絡的深入而導致梯度消失,淺層的參數無法更新。但是,觀察新的前向傳播函數?y = f(x) + x?,你會發(fā)現求導結果是 1 + f'(x),也就是說無論f'(x)多么的小,因為1的存在,鏈式求導的結果不會為0,進而解決了梯度消失的問題。

補充:前些日子在面試CV崗位,也被問到了類似的問題,上述答案基本上是正確的,但是面試官進一步問了如果前向傳播進一步改為?y = f(x) + α * x?,如果α特別小,會有什么問題?特別大那?后來我想了想,應該是這樣的,還是在求梯度鏈式求導的時候,求導結果變成了 α + f'(x),當 α 特別小,其實相當于沒加這一項,還是有可能出現梯度消失;當 α 特別大,很容易出現梯度爆炸(求導結果會很大,而且還是連乘)。? 這里是我個人的理解,有問題的話,歡迎各位一起學習。

6.?本文博主尚未理解的問題?

(1)殘差結構能解決梯度爆炸嗎?

(2)解決退化問題還有沒有更精細或者其他的解釋?

(3)普通網絡梯度反向傳播中的數值是怎么計算的(后續(xù)可能會跟進更新)

? ? ?? 放在最后,上述1到5其實原論文還有很多細節(jié),有需求的可以自己去看看,或者說出來大家一起學習!,對于6中的問題,我可能會后續(xù)更新,這個看時間和需求。可能后續(xù)會簡單寫下ResNet2和ResNEXT的博客,但是核心的還是ResNet殘差的這種思想,真的牛皮!論文的實驗結果,你們也可以去直接看看原論文,反正是實驗證明了152層的ResNet效果更好(減輕了退化,使得深層網絡性能能進一步增強),給你們簡單放個圖:

總結

以上是生活随笔為你收集整理的ResNet 残差、退化等细节解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。