Skip block:將輸出表述爲輸入X和輸入的一個非線性變換F(X)的線性疊加。解決了深層網絡的訓練問題。
1. 來源
1.LSTM的控制門
2.ResNet進一步簡化和實驗驗證
公式:y=H(x,WH)+X
2.解決:梯度消失
2.1.梯度消失
解決辦法:優化方法、初始化策略、BatchNorm層、ReLU等激活函數。
上述辦法改善問題的能力有限,直到殘差連接被廣泛使用。
- 假設,前向傳播:
f′=f(x,wf),f爲卷積
g′=g(f′),g爲激活函數
y′=k(g′),k爲分類器
loss=criterion(y,y′)
- 則,誤差的鏈式反向傳播:
∂wf∂loss=∂y′∂loss∂g′∂y′∂f′∂g′∂wf∂f′
一旦其中某一個導數很小,多次連乘後梯度可能越來越小。對於深層網絡,梯度傳到淺層幾乎就沒了。
2.2.使用殘差連接
∂x∂h=∂x∂f+x=∂x∂f+1
相當於每一個導數加上了一個恆等項1。此時,就算原來的導數∂x∂f很小,誤差仍然能夠有效的反向傳播。
例:網絡輸入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.11.2−1.1=111
F的梯度=0.10.2−0.1=11
因爲兩者各自是對G的參數和F的參數進行更新,可以看出這一點變化對F的影響遠遠大於G,說明引入殘差後的映射對輸出的變化更敏感。
3.解決:網絡權重矩陣的退化
3.1.網絡退化
一般認爲: 網絡越深,表達能力越強,性能越好。
現象: 在神經網絡可以收斂的前提下,隨着網絡深度增加,網絡的表現先是逐漸增加至飽和,然後迅速下降。
需要注意,網絡退化問題不是過擬合導致的,即便在模型訓練過程中,同樣的訓練輪次下,退化的網絡也比稍淺層的網絡的訓練錯誤更高。
本質1: 即使梯度範數大,但是如果網絡的可用自由度對這些範數的貢獻非常不均衡,也就是每個層中只有少量的隱藏單元對不同的輸入改變它們的激活值,而大部分隱藏單元對不同的輸入都是相同的反應,此時整個權重矩陣的秩不高。並且,隨着網絡層數的增加,連乘後,秩可能變的更低。
高維、低秩矩陣:大部分維度沒有信息,表達能力沒有看起來那麼強大。
本質2: 對神經網絡來說,恆等映射並不容易擬合。
按理講:
假設存在某個K層的網絡f是當前最優的網絡,那麼可以構造一個更深的網絡,其最後幾層僅是該網絡f第K層輸出的恆等映射(Identity Mapping),就可以取得與f一致的結果。
也許K還不是“最佳層數”,那麼更深的網絡就可以取得更好的結果。
總而言之,與淺層網絡相比,更深的網絡的表現不應該更差。
然而,事實並非如此!
因此,一個合理的猜測就是:對神經網絡來說,恆等映射並不容易擬合。
3.2.使用殘差連接
針對本質1: 強制打破了網絡的對稱性,提升了網絡的表徵能力。
針對本質2: 構造天然的恆等映射。
假設神經網絡非線性單元的輸入和輸出維度一致,可以將神經網絡單元內要擬合的函數H(⋅)拆分成兩個部分:
H(al−1)=al−1+F(al−1)
其中,F(⋅)是殘差函數,al−1是輸入,H(al−1)是輸出。
在網絡高層,學習一個恆等映射H(al−1)→al−1,等價於令殘差部分趨近於0,即F(al−1)→0。
對應下圖就是:x=F(x)+x,學習F(x)→0
跳層連接的殘差單元: 將單元的輸入直接與單元輸出加在一起,然後再激活。
4.殘差連接的有效性
殘差網絡可以輕鬆地用主流的自動微分深度學習框架實現,直接使用BP算法更新參數。
實驗表明,殘差網絡很好地解決了深度神經網絡的退化問題,並在ImageNet和CIFAR-10等圖像任務上取得了非常好的結果,同等層數的前提下殘差網絡也收斂得更快,這使得前饋神經網絡可以採用更深的設計。此外,去除個別神經網絡層,殘差網絡的表現不會受到顯著影響,這與傳統的前饋神經網絡大相徑庭。
5.解釋角度
5.1.使得信息前後向傳播更加順暢
假設:前饋神經網絡的殘差塊爲zl=H(al−1)=al−1+F(al−1),且殘差塊不使用任何激活函數al=zl。
層數l2>l1,對上式遞歸展開爲
al2=al2−1+F(al2−1)=(al2−2+F(al2−2))+F(al2−1)=...=al1+i=l1∑l2−1F(ai)
由上式可知,在前向傳播時,輸入信號可以從任意低層直接傳播到高層。由於包含了一個天然的恆等映射,一定程度上可以解決網絡退化問題。
最終的損失對某低層輸出的梯度可以展開爲
∂al1∂loss=∂al2∂loss∂al1∂al2=∂al2∂loss∂al1∂(al1+i=l1∑l2−1F(ai))=∂al2∂loss(1+∂al1∂(i=l1∑l2−1F(ai)))=∂al2∂loss+∂al2∂loss∂al1∂(i=l1∑l2−1F(ai)))
根據上式,Loss對某低層輸出的梯度,被分解爲了兩項。前一項∂al2∂loss表明,反向傳播時,錯誤信號可以不經過任何中間權重矩陣變換直接傳播到低層,一定程度上可以緩解梯度彌散問題(即便中間層矩陣權重很小,梯度也基本不會消失)。
5.2.集成學習
殘差網絡可以被看作是一系列路徑集合組裝而成的一個集成模型。
Andreas Veit等人展開了幾組實驗(Lesion study):
- 刪去殘差網絡的部分網絡層(即丟棄一部分路徑)
- 交換某些網絡模塊的順序(改變網絡的結構,丟棄一部分路徑的同時引入新路徑)
實驗結果表明,網絡的表現與正確網絡路徑數平滑相關(在路徑變化時,網絡表現沒有劇烈變化),這表明殘差網絡展開後的路徑具有一定的獨立性和冗餘性。
作者還通過實驗表明,殘差網絡中主要在訓練中貢獻了梯度的是那些相對較短的路徑,這些較短的梯度路徑正是由殘差結構引入的。
可以類比集成學習的網絡架構方法不僅有殘差網絡,Dropout機制也可以被認爲是隱式地訓練了一個組合的模型。
5.3.解決梯度破碎問題
在標準前饋神經網絡中,隨着深度增加,梯度逐漸呈現爲白噪聲(white noise)。
梯度破碎現象:
- 神經元梯度的相關性按指數級2L1減少
- 梯度的空間結構也隨着深度增加被逐漸消除
梯度破碎的後果:
- 許多優化方法假設梯度在相鄰點上是相似的,破碎的梯度會大大減小這類優化方法的有效性。
- 如果梯度表現得像白噪聲,那麼某個神經元對網絡輸出的影響將會很不穩定。
相較標準前饋網絡,殘差網絡中殘差結構緩解了梯度破碎問題:
- 梯度相關性減少的速度從指數級下降到亞線性級L1
- 神經元梯度介於棕色噪聲與白噪聲之間
- 極大地保留梯度的空間結構
參考
有三AI
ML4NLP