「模型解讀」resnet中的殘差連接,你確定真的看懂了?

2020-12-17 有三AI

編輯 | 言有三

1 殘差連接

想必做深度學習的都知道skip connect,也就是殘差連接,那什麼是skip connect呢?如下圖

上面是來自於resnet【1】的skip block的示意圖。我們可以使用一個非線性變化函數來描述一個網絡的輸入輸出,即輸入為X,輸出為F(x),F通常包括了卷積,激活等操作。

當我們強行將一個輸入添加到函數的輸出的時候,雖然我們仍然可以用G(x)來描述輸入輸出的關係,但是這個G(x)卻可以明確的拆分為F(x)和X的線性疊加。

這就是skip connect的思想,將輸出表述為輸入和輸入的一個非線性變換的線性疊加,沒用新的公式,沒有新的理論,只是換了一種新的表達。

它解決了深層網絡的訓練問題,作者的原論文中達到了上千層。

殘差連接是何的首創嗎?當然不是,傳統的神經網絡中早就有這個概念,文【2】中則明確提出了殘差的結構,這是來自於LSTM的控制門的思想。

y = H(x,WH)T(x,WT) + X(1- T(x,WT))

可以看出,當T(x,WT) = 0,y=x,當T(x,WT) = 1,y= H(x,WH) 。關於LSTM相關的知識,大家可以去其他地方補。

在該文章中,研究者沒有使用特殊的初始化方法等,也能夠訓練上千層的網絡。但為什麼這篇文章沒有resnet火呢?原因自然有很多了,何的文章做了更多的實驗論證,簡化了上面的式子,得了cvpr best paper,以及何的名氣更大等等因素。

總之,為我們所知道的就是下面的式子

y = H(x,WH) + X,此所謂殘差連接,skip connection。

2 為什麼要skip connect

那為什麼要這麼做呢?首先大家已經形成了一個通識,在一定程度上,網絡越深表達能力越強,性能越好。

不過,好是好了,隨著網絡深度的增加,帶來了許多問題,梯度消散,梯度爆炸;在resnet出來之前大家沒想辦法去解決嗎?當然不是。更好的優化方法,更好的初始化策略,BN層,Relu等各種激活函數,都被用過了,但是仍然不夠,改善問題的能力有限,直到殘差連接被廣泛使用。

大家都知道深度學習依靠誤差的鏈式反向傳播來進行參數更新,假如我們有這樣一個函數:

其中的f,g,k大家可以自行腦補為卷積,激活,分類器。

cost對f的導數為:

它有隱患,一旦其中某一個導數很小,多次連乘後梯度可能越來越小,這就是常說的梯度消散,對於深層網絡,傳到淺層幾乎就沒了。但是如果使用了殘差,每一個導數就加上了一個恆等項1,dh/dx=d(f+x)/dx=1+df/dx。此時就算原來的導數df/dx很小,這時候誤差仍然能夠有效的反向傳播,這就是核心思想。

我們舉個例子直觀理解一下:

假如有一個網絡,輸入x=1,非殘差網絡為G,殘差網絡為H,其中H=F(x)+x

有這樣的一個輸入輸出關係:

在t時刻:

非殘差網絡G(1)=1.1,

殘差網絡H(1)=1.1, H(1)=F(1)+1, F(1)=0.1

在t+1時刻:

非殘差網絡G』(1)=1.2,

殘差網絡H』(1)=1.2, H』(1)=F』(1)+1, F』(1)=0.2

這時候我們看看:

非殘差網絡G的梯度 = (1.2-1.1)/1.1

而殘差網絡F的梯度 = (0.2-0.1)/0.1

因為兩者各自是對G的參數和F的參數進行更新,可以看出這一點變化對F的影響遠遠大於G,說明引入殘差後的映射對輸出的變化更敏感,輸出是什麼?不就是反應了與真值的誤差嗎?

所以,這麼一想想,殘差就應該是有效的,各方實驗結果也證明了。

3 skip connect就只是這樣嗎

上面我們解釋了skip connect改善了反向傳播過程中的梯度消散問題,因此可以使得訓練深層網絡變得容易,但研究者們表示NoNoNo,沒這麼簡單。

如今在國內的研究人員,大公司,產品,都醉心於將深度學習用於網絡直播和短視頻,把整個環境搞的浮躁不堪的情況下,國外有很多的大拿都在潛心研究深度學習理論基礎,水平高低之分,可見一斑。文【3】的研究直接表明訓練深度神經網絡失敗的原因並不是梯度消失,而是權重矩陣的退化,所以這是直接從源頭上挖了根?

當然,resnet有改善梯度消失的作用,文中也做了實驗對比如上:但不僅僅不如此,下圖是一個採用殘差連接(藍色曲線)和隨機稠密的正交連接矩陣的比對,看得出來殘差連接並不有效。

結合上面的實驗,作者們認為神經網絡的退化才是難以訓練深層網絡根本原因所在,而不是梯度消散。雖然梯度範數大,但是如果網絡的可用自由度對這些範數的貢獻非常不均衡,也就是每個層中只有少量的隱藏單元對不同的輸入改變它們的激活值,而大部分隱藏單元對不同的輸入都是相同的反應,此時整個權重矩陣的秩不高。並且隨著網絡層數的增加,連乘後使得整個秩變的更低。

這也是我們常說的網絡退化問題,雖然是一個很高維的矩陣,但是大部分維度卻沒有信息,表達能力沒有看起來那麼強大。

殘差連接正是強制打破了網絡的對稱性。

第1種(圖a),輸入權重矩陣(灰色部分)完全退化為0,則輸出W已經失去鑑別能力,此時加上殘差連接(藍色部分),網絡又恢復了表達能力。第2種(圖b),輸入對稱的權重矩陣,那輸出W一樣不具備這兩部分的鑑別能力,添加殘差連接(藍色部分)可打破對稱性。第3種(圖c)是圖b的變種,不再說明。

總的來說一句話,打破了網絡的對稱性,提升了網絡的表徵能力,關於對稱性引發的特徵退化問題,大家還可以去參考更多的資料【4】。

對於skip連接的有效性的研究【5-6】,始終並未停止,至於究竟能到什麼地步,大家還是多多關注吧學術研究,也可以多關注我們呀!

參考文獻

【1】He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

【2】Srivastava R K, Greff K, Schmidhuber J. Highway networks[J]. arXiv preprint arXiv:1505.00387, 2015.

【3】Orhan A E, Pitkow X. Skip connections eliminate singularities[J]. arXiv preprint arXiv:1701.09175, 2017.

【4】Shang W, Sohn K, Almeida D, et al. Understanding and Improving Convolutional Neural Networks via Concatenated Rectified Linear Units[J]. 2016:2217-2225.

【5】Greff K, Srivastava R K, Schmidhuber J. Highway and Residual Networks learn Unrolled Iterative Estimation[J]. 2017.

【6】Jastrzebski S, Arpit D, Ballas N, et al. Residual connections encourage iterative inference[J]. arXiv preprint arXiv:1710.04773, 2017.

更多模型解讀,請移步有三AI知識星球

「知識星球」網絡結構1000變上線,下半年更新500+網絡模型解讀

相關焦點

  • ReZero:使用加權殘差連接加速深度模型收斂
    這種方法能在上百層的Transformer上收斂,並在常見深層模型上大大縮短訓練時間,同時取得相近的結果。一般來說,模型越深效果越好。但是同時,模型越深也更難訓練——即無法收斂到訓練集上一個好的值。普遍認為,這是深度模型的梯度消失/梯度爆炸現象導致的:梯度的指數級爆炸使得訓練極其不穩定,指數級消失使得訓練非常緩慢。
  • 譯文 | Inception-v4,Inception-ResNet 和殘差連接對學習的影響(多圖)
    最近,與傳統結構相結合的殘差連接網絡在2015ILSVRC挑戰賽上取得非常優異的成績;它的性能跟最新的Inception-v3 網絡非常接近。因此也就引出了結合殘差連接的Inception結構能否對性能進行提高的問題。本文給出實驗證明,殘差連接可以明顯加速Inception網絡的訓練。
  • Google最新開源Inception-ResNet-v2,藉助殘差網絡進一步提升圖像...
    ,也能對圖像分類領域中幾個主要有競爭力的網絡進行檢驗和定義模型。為了進一步推進這個領域的進步,今天Google團隊宣布發布Inception-ResNet-v2(一種卷積神經網絡——CNN),它在ILSVRC圖像分類基準測試中實現了當下最好的成績。Inception-ResNet-v2是早期Inception V3模型變化而來,從微軟的殘差網絡(ResNet)論文中得到了一些靈感。
  • 快速訓練殘差網絡 ResNet-101,完成圖像分類與預測,精度高達 98%|...
    ResNet_v1_101作為暖男的我,當然也考慮到有些同學可能出現github下載慢的問題,那麼你可以選擇從我的百度網盤下載:ResNet-101預訓練模型,提取碼:dg2m(2) 預訓練模型的微調下載好預訓練模型,解壓後得到一個名為resnet_v1_
  • 你必須要知道CNN模型:ResNet
    從圖5中可以看到,ResNet相比普通網絡每兩層間增加了短路機制,這就形成了殘差學習,其中虛線表示featuremap數量發生了改變。圖5展示的34-layer的ResNet,還可以構建更深的網絡如表1所示。
  • 理解並實現 ResNet(Keras)
    在我的Github repo上,我分享了兩個Jupyter Notebook,一個是如DeepLearning.AI中所述,從頭開始編碼ResNet,另一個在Keras中使用預訓練的模型。希望你可以把代碼下載下來,並自己試一試。
  • 一文讀懂殘差網絡ResNet
    本文包括什麼:殘差網絡的由來,為什麼需要殘差網絡?殘差網絡是什麼,怎麼定義?殘差網絡為什麼好用?優越性在哪裡?有沒有一個簡單的例子來直觀看懂什麼是殘差網絡?殘差網絡的由來殘差操作這一思想起源於論文《Deep Residual Learning for Image Recognition》,目前的引用量已達3萬多。
  • 【ReZero】使用加權殘差連接加速深度模型收斂
    為此,本文提出ReZero:在殘差連接前增加一個權重,使模型能夠更好接受到梯度信號,加快收斂速度。這種方法能在上百層的Transformer上收斂,並在常見深層模型上大大縮短訓練時間,同時取得相近的結果。深度模型的訓練問題一般來說,模型越深效果越好。但是同時,模型越深也更難訓練——即無法收斂到訓練集上一個好的值。
  • ResNet——CNN經典網絡模型詳解(pytorch實現)
    ResNet的結構可以極快的加速神經網絡的訓練,模型的準確率也有比較大的提升。同時ResNet的推廣性非常好,甚至可以直接用到InceptionNet網絡中。下圖是ResNet34層模型的結構簡圖。下圖是論文中給出的兩種殘差結構。左邊的殘差結構是針對層數較少網絡,例如ResNet18層和ResNet34層網絡。右邊是針對網絡層數較多的網絡,例如ResNet101,ResNet152等。為什麼深層網絡要使用右側的殘差結構呢。因為,右側的殘差結構能夠減少網絡參數與運算量。
  • 從Inception v1到Inception-ResNet,一文概覽Inception家族的「奮鬥史」
    網絡本質上會變得稍微「寬一些」,而不是「更深」。作者因此設計了 Inception 模塊。下圖是「原始」Inception 模塊。它使用 3 個不同大小的濾波器(1x1、3x3、5x5)對輸入執行卷積操作,此外它還會執行最大池化。所有子層的輸出最後會被級聯起來,並傳送至下一個 Inception 模塊。
  • DL經典論文系列(二) AlexNet、VGG、GoogLeNet/Inception、ResNet
    (譯者註:之所以稱1x1卷積層為瓶頸層,你可以想像一下一個1x1卷積層擁有最少的通道數,這在Inception模塊中就像一個瓶子的最窄處)GoogLeNet的另外一個特殊設計是最後的卷積層後使用全局均值池化層替換了全連接層,所謂全局池化就是在整個2D特徵圖上取均值。這大大減少了模型的總參數量。要知道在AlexNet中,全連接層參數佔整個網絡總參數的90%。
  • 深度學習第19講:CNN經典論文研讀之殘差網絡ResNet及其keras實現
    入門和快速上手指南深度學習第18講:CNN經典論文研讀之VGG網絡及其tensorflow實現      在 VGG 網絡論文研讀中,我們了解到卷積神經網絡也可以進行到很深層,VGG16 和 VGG19 就是證明。
  • ResNet:用於圖像識別的深度殘差網絡
    通過構建更深層的模型可以找到解決方案:添加的層是恆等映射,其他層是從學習的淺層模型中複製的。此構造解決方案的存在表明,較深的模型不會比淺模型產生更高的訓練誤差。但是實驗表明,我們現有的求解器無法找到比構造的解決方案好或更好的解決方案,或者無法在可行的時間內找到解決方案。在本文中,我們通過引入深度殘差學習框架來解決退化問題。
  • 香儂讀 |ReZero: 使用加權殘差連接加速深度模型收斂
    為此,本文提出ReZero:在殘差連接前增加一個權重,使模型能夠更好接受到梯度信號,加快收斂速度。這種方法能在上百層的Transformer上收斂,並在常見深層模型上大大縮短訓練時間,同時取得相近的結果。一般來說,模型越深效果越好。但是同時,模型越深也更難訓練——即無法收斂到訓練集上一個好的值。
  • 十分鐘一起學會ResNet殘差網絡
    那麼多出來的16層其實是冗餘的,我們希望訓練網絡的過程中,模型能夠自己訓練這五層為恆等映射,也就是經過這層時的輸入與輸出完全一樣。但是往往模型很難將這16層恆等映射的參數學習正確,那麼就一定會不比最優化的18層網絡結構性能好,這就是隨著網絡深度增加,模型會產生退化現象。它不是由過擬合產生的,而是由冗餘的網絡層學習了不是恆等映射的參數造成的。
  • 一文簡述ResNet及其多種變體
    這表明較深的模型所產生的訓練誤差不應該比較淺的模型高。他們假設讓堆疊層適應殘差映射比使它們直接適應所需的底層映射要容易一些。上圖中的殘差塊明確表明,它可以做到這一點。事實上,ResNet 並不是第一個利用快捷連接的模型,Highway Networks [5] 就引入了門控快捷連接。這些參數化的門控制流經捷徑(shortcut)的信息量。
  • 基礎入門,怎樣用PaddlePaddle優雅地寫VGG與ResNet
    通過取卷積輸出特徵圖中局部區塊的最大值(max-pooling)或者均值(avg-pooling)。降採樣也是圖像處理中常見的一種操作,可以過濾掉一些不重要的高頻信息。 全連接層(fully-connected layer,或者fc layer): 輸入層到隱藏層的神經元是全部連接的。
  • 殘差密集網絡:利用所有分層特徵的圖像超解析度網絡
    圖像超解析度在安防等很多領域有這廣泛的應用,而美國東北大學最近提出了一種殘差密集網絡來從原圖生成高解析度圖像。該網絡結合殘差網絡與密集連接網絡的特性充分利用原始 LR 圖像的所有分層特徵,因而能重構出高質量的圖像。
  • 超越SOTA Transformer模型,哈佛、FAIR提出基於殘差能量模型的文本...
    之所以叫它殘差模型,是因為在修正,比如當 E_θ (x)≡0 時,。這個殘差模型非常直觀,當 x 比較「不真實」時,E_θ (x)比較大,因此在殘差模型中的概率會低於未經修正前的。這裡殘差能量模型的 PPL 使用採樣估計的上界,詳見論文。在上圖中,BASE LM 是語言模型 P_LM (x),其餘的(Joint 開頭)都是殘差能量模型。
  • VGGNet、ResNet、Inception和Xception圖像分類及對比
    請注意,VGG 網絡訓練非常緩慢,並且由於深度和末端的全連接層,使得它們需要較大的權重存儲空間。ResNetResNet(殘差網絡)的提出源自論文「Deep Residual Learning for Image Recognition」(由 Kaiming He、XiangyuZhang、ShaoqingRen 和 JianSun 於 2015 年編寫)。