【模型解读】resnet中的残差连接,你确定真的看懂了?
文章首發于微信公眾號《與有三學AI》
【模型解讀】resnet中的殘差連接,你確定真的看懂了?
這是深度學習模型解讀第6篇,本篇我們將介紹深度學習模型中的殘差連接。
作者&編輯 | 言有三
?
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】,始終并未停止,至于究竟能到什么地步,大家還是多多關注吧學術研究,也可以多關注我們呀!
我是言有三,有三,有你,有AI
?
參考文獻
【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.
?
同時,在我的知乎專欄也會開始同步更新這個模塊,歡迎來交流
https://zhuanlan.zhihu.com/c_151876233
注:部分圖片來自網絡
—END—
轉載請留言,侵權必究
本系列的完整目錄:
【模型解讀】從LeNet到VGG,看卷積+池化串聯的網絡結構
【模型解讀】network in network中的1*1卷積,你懂了嗎
【模型解讀】GoogLeNet中的inception結構,你看懂了嗎
【模型解讀】說說移動端基準模型MobileNets
【模型解讀】pooling去哪兒了?
【模型解讀】resnet中的殘差連接,你確定真的看懂了?
【模型解讀】“不正經”的卷積神經網絡
【模型解讀】“全連接”的卷積網絡,有什么好?
【模型解讀】從“局部連接”回到“全連接”的神經網絡
【模型解讀】深度學習網絡只能有一個輸入嗎
【模型解讀】從2D卷積到3D卷積,都有什么不一樣
【模型解讀】淺析RNN到LSTM
感謝各位看官的耐心閱讀,不足之處希望多多指教。后續內容將會不定期奉上,歡迎大家關注有三公眾號 有三AI!
?
?
總結
以上是生活随笔為你收集整理的【模型解读】resnet中的残差连接,你确定真的看懂了?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【模型解读】pooling去哪儿了?
- 下一篇: 【模型解读】“全连接”的卷积网络,有什么