深入探討:殘差網路解決了什麼,為什麼有效?


MLNLP 

機器學習演算法與自然語言處理 

)社群是國內外知名自然語言處理社群,受眾覆蓋國內外NLP碩博生、高校老師以及企業研究人員。


社群的願景 是促進國內外自然語言處理,機器學習學術界、產業界和廣大愛好者之間的交流,特別是初學者同學們的進步。

本文轉載自 | 極市平臺
作者 | LinT@知乎
源 | https://zhuanlan.zhihu.com/p/80226180
0
『引言』
殘差網路是深度學習中的一個重要概念。這篇文章將簡單介紹殘差網路的思想,並結合文獻討論殘差網路有效性的一些可能解釋。
以下是本文的概覽:
  1. 動機: 深度神經網路的“兩朵烏雲”
  2. 殘差網路的形式化定義與實現
  3. 殘差網路解決了什麼,為什麼有效?
  4. 自然語言處理中的殘差結構
  5. 總結與擴充套件
1
『動機:深度神經網路的“兩朵烏雲”』
神經網路具有非常強的表達能力,並且免去了繁重的特徵工程,在BP演算法提出以及算力逐漸提升的背景下,逐漸受到了研究人員和開發者的青睞。
在展開文章前,首先以_前饋神經網路_為例,定義一下神經網路。一個前饋神經網路 ,由若干層神經元組成,為了方便討論,我們以非線性單元(若干層神經元組成的函式單元)為單位討論神經網路,即神經網路 由 個非線性單元堆疊而成(後面將每個單元稱為一層),令 ,則神經網路第 層( )的淨輸入 與輸出 的計算由下式給出:
其中, 是該層的內部運算,依照網路型別有所不同;是第 層的輸出啟用函式。
一般認為,經過訓練的深度神經網路能夠將資料特徵逐層抽象,最終提取出完成任務所需要的特徵/表示,最終使用一個簡單的分類器(或其他學習器),就可以完成最終任務——因此深度學習也被叫做表示/特徵學習
在“層層抽象”的直覺下,很自然的想法就是,訓練一個很深的前饋神經網路,來完成任務。直觀上看,更深的神經網路,在非線性啟用函式的加持下,擁有更大的假設空間,因此當然“更有可能”包含了一個最優解。但是在實際使用時,訓練又成了一個難題。除了過擬合問題以外,更深的神經網路會遇到如下兩個難題,我姑且按照物理史的比喻將其稱為深度神經網路的“兩朵烏雲”:
1.1 梯度彌散/爆炸
現代神經網路一般是透過基於梯度的BP演算法來最佳化,對前饋神經網路而言,一般需要前向傳播輸入訊號,然後反向傳播誤差並使用梯度方法更新引數。第 層的某引數更新需要計算損失 對其的梯度,該梯度依賴於該層的誤差項 ,根據鏈式法則,又依賴於後一層的誤差項:
假設網路單元輸入輸出維度一致,定義 ,則有
當 時,第 層的誤差項較後一層減小,如果很多層的情況都是如此,就會導致反向傳播中,梯度逐漸消失,底層的引數不能有效更新,這也就是梯度彌散(或梯度消失);當 時,則會使得梯度以指數級速度增大,造成系統不穩定,也就是梯度爆炸問題。
在很深層的網路中,由於不能保證 的大小,也很容易出現梯度彌散/爆炸。這是兩朵烏雲中的第一朵。
1.2 網路退化問題
在前面的討論中,梯度彌散/爆炸問題導致模型訓練難以收斂,但是這個問題很大程度上已經被標準初始化和中間層正規化方法有效控制了,這些方法使得深度神經網路可以收斂。深度神經網路面臨的另一朵烏雲是網路退化問題:
在神經網路可以收斂的前提下,隨著網路深度增加,網路的表現先是逐漸增加至飽和,然後迅速下降[1]。
需要注意,網路退化問題不是過擬合導致的,即便在模型訓練過程中,同樣的訓練輪次下,退化的網路也比稍淺層的網路的訓練錯誤更高,如下圖[1]所示。
模型退化:深層模型反而取得更高的訓練和測試誤差
這一點並不符合常理:如果存在某個 層的網路 是當前最優的網路,那麼可以構造一個更深的網路,其最後幾層僅是該網路層輸出的恆等對映(Identity Mapping),就可以取得與一致的結果;也許還不是所謂“最佳層數”,那麼更深的網路就可以取得更好的結果。總而言之,與淺層網路相比,更深的網路的表現不應該更差。因此,一個合理的猜測就是,對神經網路來說,恆等對映並不容易擬合
也許我們可以對網路單元進行一定的改造,來改善退化問題?這也就引出了殘差網路的基本思路…
2
『殘差網路的形式化定義與實現』
既然神經網路不容易擬合一個恆等對映,那麼一種思路就是構造天然的恆等對映。假設神經網路非線性單元的輸入和輸出維度一致,可以將神經網路單元內要擬合的函式 

拆分成兩個部分,即:

其中 是殘差函式。在網路高層,學習一個恆等對映 即等價於令殘差部分趨近於0,即 
殘差單元可以以跳層連線的形式實現,即將單元的輸入直接與單元輸出加在一起,然後再啟用。因此殘差網路可以輕鬆地用主流的自動微分深度學習框架實現,直接使用BP演算法更新引數[1]。
殘差單元:以跳層連線的形式實現。
實驗表明,殘差網路很好地解決了深度神經網路的退化問題,並在ImageNet和CIFAR-10等影像任務上取得了非常好的結果,同等層數的前提下殘差網路也收斂得更快[1]。這使得前饋神經網路可以採用更深的設計。除此之外,去除個別神經網路層,殘差網路的表現不會受到顯著影響[2],這與傳統的前饋神經網路大相徑庭。
3
『殘差網路解決了什麼,為什麼有效?』
殘差網路在影像領域已然成為了一種主流模型,雖然這種網路正規化的提出是為了解決網路退化問題,但是關於其作用的機制,還是多有爭議。目前存在幾種可能的解釋,下面分別列舉2016年的兩篇文獻和2018年的一篇文獻中的內容。
3.1 從前後向資訊傳播的角度來看
何愷明等人從前後向資訊傳播的角度給出了殘差網路的一種解釋[3]。
考慮式 這樣的殘差塊組成的前饋神經網路,為了討論簡便,暫且假設殘差塊不使用任何啟用函式,即
考慮任意兩個層數 ,遞迴地展開 
可以得到
根據式 ,在前向傳播時,輸入訊號可以從任意低層直接傳播到高層。由於包含了一個天然的恆等對映,一定程度上可以解決網路退化問題
這樣,最終的損失 對某低層輸出的梯度可以展開為
或展開寫為
根據式 ,損失對某低層輸出的梯度,被分解為了兩項,前一項 表明,反向傳播時,錯誤訊號可以不經過任何中間權重矩陣變換直接傳播到低層,一定程度上可以緩解梯度彌散問題(即便中間層矩陣權重很小,梯度也基本不會消失)
綜上,可以認為殘差連線使得資訊前後向傳播更加順暢。
* 加入了啟用函式的情況的討論(實驗論證)請參見[3]。
3.2 整合學習的角度
Andreas Veit等人提出了一種不同的視角[2]。他們將殘差網路展開,以一個三層的ResNet為例,將得到下面的樹形結構:
殘差網路的展開形式
使用圖來表示就是
殘差網路的展開形式
這樣,殘差網路就可以被看作是一系列路徑集合組裝而成的一個整合模型,其中不同的路徑包含了不同的網路層子集。Andreas Veit等人展開了幾組實驗(Lesion study),在測試時,刪去殘差網路的部分網路層(即丟棄一部分路徑)、或交換某些網路模組的順序(改變網路的結構,丟棄一部分路徑的同時引入新路徑)。實驗結果表明,網路的表現與正確網路路徑數平滑相關(在路徑變化時,網路表現沒有劇烈變化),這表明殘差網路展開後的路徑具有一定的獨立性和冗餘性,使得殘差網路表現得像一個整合模型(ensemble)。
作者還透過實驗表明,殘差網路中主要在訓練中貢獻了梯度的是那些相對較短的路徑,從這個意味上來說,殘差網路並不是透過保留整個網路深度上的梯度流動來抑制梯度彌散問題,一定程度上反駁了何愷明等[3]中的觀點。但是,我覺得這個實驗結果與何凱明等的結論並不矛盾,因為這些較短的梯度路徑正是由殘差結構引入的
* 可以類比整合學習的網路架構方法不僅有殘差網路,Dropout機制也可以被認為是隱式地訓練了一個組合的模型。
3.3 梯度破碎問題
2018年的一篇論文,The Shattered Gradients Problem: If resnets are the answer, then what is the question?[4],指出了一個新的觀點,儘管殘差網路提出是為了解決梯度彌散和網路退化的問題,它解決的實際上是梯度破碎問題(the shattering gradient problem):
在標準前饋神經網路中,隨著深度增加,梯度逐漸呈現為白噪聲(white noise)
作者透過視覺化的小型實驗(構建和訓練一個神經網路 )發現,在淺層神經網路中,梯度呈現為棕色噪聲(brown noise),深層神經網路的梯度呈現為白噪聲。在標準前饋神經網路中,隨著深度增加,神經元梯度的相關性(corelation)按指數級減少);同時,梯度的空間結構也隨著深度增加被逐漸消除。這也就是梯度破碎現象。
神經網路梯度及其協方差矩陣的視覺化,可以看到標準的前饋網路的梯度在較深時(b)與白噪聲(e)類似。
梯度破碎為什麼是一個問題呢?這是因為許多最佳化方法假設梯度在相鄰點上是相似的,破碎的梯度會大大減小這類最佳化方法的有效性。另外,如果梯度表現得像白噪聲,那麼某個神經元對網路輸出的影響將會很不穩定。
相較標準前饋網路,殘差網路中梯度相關性減少的速度從指數級下降到亞線性級(sublinearly, ),深度殘差網路中,神經元梯度介於棕色噪聲與白噪聲之間(參見上圖中的c,d,e);殘差連線可以極大地保留梯度的空間結構。殘差結構緩解了梯度破碎問題。
* 更細緻的實驗與討論請參見[4]。
4
『自然語言處理中的殘差結構』
與影像領域不同的是,自然語言處理中的網路往往“寬而淺”,在這些網路中殘差結構很難有用武之地。但是在谷歌提出了基於自注意力的Transformer架構[5],特別是BERT[6]出現以後,自然語言處理也擁有了“窄而深”的網路結構,因此當然也可以充分利用殘差連線,來達到最佳化網路的目的。事實上,Transformer本身就包含了殘差連線,其中編碼器和解碼器中的每一個子模組都包含了殘差連線,並使用了Layer Normalization。
Transformer架構
可以預見的是,基於深度學習的自然語言處理的網路結構很可能朝著更“深”的方向發展,那麼殘差結構就是一個幾乎不可缺少的選項了。
5
『總結和擴充套件』
殘差網路真可謂是深度學習的一把利器,它的出現使得更深的網路訓練成為可能。類似殘差網路的結構還有Highway Network[7],與殘差網路的差別在於加入了門控機制(注意它和ResNet是同時期的工作),文獻[4]中也對Highway Network進行了討論,值得一讀;現在廣泛使用的門控RNN,我認為與Highway Network有異曲同工之妙,可以認為是在時間維上引入了門控的殘差連線;在殘差網路中使用的跳層連線,在自然語言處理中也有相當多的應用,比如Bengio的神經語言模型[8]、文字匹配模型ESIM[9]等,區別在於這些工作中跳層連線僅僅將不同層次的特徵拼接在一起(而不是相加),達到增加特徵多樣性、加快訓練的目的。
P.S. 原本希望在這篇文章裡面展開講講更多的細節,但是個人水平有限,加上知乎的文章篇幅限制,只能大概展開到這種程度。本文是筆者根據論文梳理的自己的理解,如果有謬誤請指出。
參考文獻
  1. ^abcdDeep Residual Learning for Image Recognition http://arxiv.org/abs/1512.03385
  2. ^abResidual Networks Behave Like Ensembles of Relatively Shallow Networks http://arxiv.org/abs/1605.06431
  3. ^abcIdentity Mappings in Deep Residual Networks https://arxiv.org/abs/1603.05027
  4. ^abcThe Shattered Gradients Problem: If resnets are the answer, then what is the question? https://arxiv.org/abs/1702.08591
  5. ^Attention Is All You Need https://arxiv.org/abs/1706.03762
  6. ^BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding https://arxiv.org/abs/1810.04805
  7. ^Highway Networks https://arxiv.org/abs/1505.00387
  8. ^A Neural Probabilistic Language Model http://www.researchgate.net/publication/2413241_A_Neural_Probabilistic_Language_Model
  9. ^Enhanced LSTM for Natural Language Inference http://arxiv.org/abs/1609.06038v3
技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群

關於我們

MLNLP社群  機器學習演算法與自然語言處理 ) 是由國內外自然語言處理學者聯合構建的民間學術社群,目前已經發展為國內外知名自然語言處理社群,旗下包括  萬人頂會交流群、AI臻選匯、AI英才匯  以及  AI學術匯  等知名品牌,旨在促進機器學習,自然語言處理學術界、產業界和廣大愛好者之間的進步。
社群可以為相關從業者的深造、就業及研究等方面提供開放交流平臺。歡迎大家關注和加入我們。

相關文章