作者:LinT
來源:https://zhuanlan.zhihu.com/p/80226180
整理:深度傳送門
殘差網絡是深度學習中的一個重要概念。這篇文章將簡單介紹殘差網絡的思想,並結合文獻討論殘差網絡有效性的一些可能解釋。
神經網絡具有非常強的表達能力,並且免去了繁重的特徵工程,在BP算法提出以及算力逐漸提升的背景下,逐漸受到了研究人員和開發者的青睞。
在展開文章前,首先以前饋神經網絡為例,定義一下神經網絡。一個前饋神經網絡,由若干層神經元組成,為了方便討論,我們以非線性單元(若干層神經元組成的函數單元)為單位討論神經網絡,即神經網絡由個非線性單元堆疊而成(後面將每個單元稱為一層),令,則神經網絡第層()的淨輸入與輸出的計算由下式給出:
其中,是該層的內部運算,依照網絡類型有所不同;是第 層的輸出激活函數。
一般認為,經過訓練的深度神經網絡能夠將數據特徵逐層抽象,最終提取出完成任務所需要的特徵/表示,最終使用一個簡單的分類器(或其他學習器),就可以完成最終任務——因此深度學習也被叫做表示/特徵學習。
在「層層抽象」的直覺下,很自然的想法就是,訓練一個很深的前饋神經網路,來完成任務。直觀上看,更深的神經網絡,在非線性激活函數的加持下,擁有更大的假設空間,因此當然「更有可能」包含了一個最優解。但是在實際使用時,訓練又成了一個難題。除了過擬合問題以外,更深的神經網絡會遇到如下兩個難題,我姑且按照物理史的比喻將其稱為深度神經網絡的「兩朵烏雲」:
1.1 梯度彌散/爆炸
現代神經網絡一般是通過基於梯度的BP算法來優化,對前饋神經網絡而言,一般需要前向傳播輸入信號,然後反向傳播誤差並使用梯度方法更新參數。第層的某參數更新需要計算損失對其的梯度,該梯度依賴於該層的誤差項 ,根據鏈式法則,又依賴於後一層的誤差項:
假設網絡單元輸入輸出維度一致,定義 ,則有
當 時,第 層的誤差項較後一層減小,如果很多層的情況都是如此,就會導致反向傳播中,梯度逐漸消失,底層的參數不能有效更新,這也就是梯度彌散(或梯度消失);當 時,則會使得梯度以指數級速度增大,造成系統不穩定,也就是梯度爆炸問題。
在很深層的網絡中,由於不能保證 的大小,也很容易出現梯度彌散/爆炸。這是兩朵烏雲中的第一朵。
1.2 網絡退化問題
在前面的討論中,梯度彌散/爆炸問題導致模型訓練難以收斂,但是這個問題很大程度上已經被標準初始化和中間層正規化方法有效控制了,這些方法使得深度神經網絡可以收斂。深度神經網絡面臨的另一朵烏雲是網絡退化問題:
在神經網絡可以收斂的前提下,隨著網絡深度增加,網絡的表現先是逐漸增加至飽和,然後迅速下降[1]。
需要注意,網絡退化問題不是過擬合導致的,即便在模型訓練過程中,同樣的訓練輪次下,退化的網絡也比稍淺層的網絡的訓練錯誤更高,如下圖[1]所示。
模型退化:深層模型反而取得更低的訓練和測試誤差
這一點並不符合常理:如果存在某個層的網絡是當前最優的網絡,那麼可以構造一個更深的網絡,其最後幾層僅是該網絡 第層輸出的恆等映射(Identity Mapping),就可以取得與一致的結果;也許還不是所謂「最佳層數」,那麼更深的網絡就可以取得更好的結果。總而言之,與淺層網絡相比,更深的網絡的表現不應該更差。因此,一個合理的猜測就是,對神經網絡來說,恆等映射並不容易擬合。
也許我們可以對網絡單元進行一定的改造,來改善退化問題?這也就引出了殘差網絡的基本思路...
既然神經網絡不容易擬合一個恆等映射,那麼一種思路就是構造天然的恆等映射。假設神經網絡非線性單元的輸入和輸出維度一致,可以將神經網絡單元內要擬合的函數 拆分成兩個部分,即:
其中 是殘差函數。在網絡高層,學習一個恆等映射
即等價於令殘差部分趨近於0,即 。
殘差單元可以以跳層連接的形式實現,即將單元的輸入直接與單元輸出加在一起,然後再激活。因此殘差網絡可以輕鬆地用主流的自動微分深度學習框架實現,直接使用BP算法更新參數[1]。
殘差單元:以跳層連接的形式實現。
實驗表明,殘差網絡很好地解決了深度神經網絡的退化問題,並在ImageNet和CIFAR-10等圖像任務上取得了非常好的結果,同等層數的前提下殘差網絡也收斂得更快[1]。這使得前饋神經網絡可以採用更深的設計。除此之外,去除個別神經網絡層,殘差網絡的表現不會受到顯著影響[2],這與傳統的前饋神經網絡大相逕庭。
殘差網絡在圖像領域已然成為了一種主流模型,雖然這種網絡範式的提出是為了解決網絡退化問題,但是關於其作用的機制,還是多有爭議。目前存在幾種可能的解釋,下面分別列舉2016年的兩篇文獻和2018年的一篇文獻中的內容。
3.1 從前後向信息傳播的角度來看
何愷明等人從前後向信息傳播的角度給出了殘差網路的一種解釋[3]。考慮式(5) 這樣的殘差塊組成的前饋神經網絡,為了討論簡便,暫且假設殘差塊不使用任何激活函數,即
考慮任意兩個層數 ,遞歸地展開(5) (6),
可以得到:
根據式 ,在前向傳播時,輸入信號可以從任意低層直接傳播到高層。由於包含了一個天然的恆等映射,一定程度上可以解決網絡退化問題。這樣,最終的損失 對某低層輸出的梯度可以展開為:
或展開寫為
根據式 ,損失對某低層輸出的梯度,被分解為了兩項,前一項 表明,反向傳播時,錯誤信號可以不經過任何中間權重矩陣變換直接傳播到低層,一定程度上可以緩解梯度彌散問題(即便中間層矩陣權重很小,梯度也基本不會消失)。
綜上,可以認為殘差連接使得信息前後向傳播更加順暢。
* 加入了激活函數的情況的討論(實驗論證)請參見[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]。
與圖像領域不同的是,自然語言處理中的網絡往往「寬而淺」,在這些網絡中殘差結構很難有用武之地。但是在谷歌提出了基於自注意力的Transformer架構[5],特別是BERT[6]出現以後,自然語言處理也擁有了「窄而深」的網絡結構,因此當然也可以充分利用殘差連接,來達到優化網絡的目的。事實上,Transformer本身就包含了殘差連接,其中編碼器和解碼器中的每一個子模塊都包含了殘差連接,並使用了Layer Normalization。
Transformer架構
可以預見的是,基於深度學習的自然語言處理的網絡結構很可能朝著更「深」的方向發展,那麼殘差結構就是一個幾乎不可缺少的選項了。
殘差網絡真可謂是深度學習的一把利器,它的出現使得更深的網絡訓練成為可能。類似殘差網絡的結構還有Highway Network[7],與殘差網絡的差別在於加入了門控機制(注意它和ResNet是同時期的工作),文獻[4]中也對Highway Network進行了討論,值得一讀;現在廣泛使用的門控RNN,我認為與Highway Network有異曲同工之妙,可以認為是在時間維上引入了門控的殘差連接;在殘差網絡中使用的跳層連接,在自然語言處理中也有相當多的應用,比如Bengio的神經語言模型[8]、文本匹配模型ESIM[9]等,區別在於這些工作中跳層連接僅僅將不同層次的特徵拼接在一起(而不是相加),達到增加特徵多樣性、加快訓練的目的。
P.S. 原本希望在這篇文章裡面展開講講更多的細節,但是個人水平有限,加上知乎的文章篇幅限制,只能大概展開到這種程度。本文是筆者根據論文梳理的自己的理解,如果有謬誤請指出。
如果有耐心讀到這裡的話,就關注一下公眾號吧:)
參考1. Deep Residual Learning for Image Recognition
2. Residual Networks Behave Like Ensembles of Relatively Shallow Networks
3. Identity Mappings in Deep Residual Networks
4. The Shattered Gradients Problem: If resnets are the answer, then what is the question?
5. Attention Is All You Need
6. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
7. Highway Networks
8. A Neural Probabilistic Language Model
9. Enhanced LSTM for Natural Language Inference