訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

思源發表於2018-01-07

 作者透過深度線性網路的例子對照證明了導致最終網路效能變差的原因並不是梯度消失,而是權重矩陣的退化,導致模型的有效自由度減少,並指出該結論可以推廣到非線性網路中。

在這篇文章中,我將指出一個常見的關於訓練深度神經網路的困難的誤解。人們通常認為這種困難主要是(如果不全是)由於梯度消失問題(和/或梯度爆炸問題)。「梯度消失」指的是隨著網路深度增加,引數的梯度範數指數式減小的現象。梯度很小,意味著引數的變化很緩慢,從而使得學習過程停滯,直到梯度變得足夠大,而這通常需要指數量級的時間。這種思想至少可以追溯到 Bengio 等人 1994 年的論文:「Learning long-term dependencies with gradient descent is difficult」,目前似乎仍然是人們對深度神經網路的訓練困難的偏好解釋。

讓我們首先考慮一個簡單的場景:訓練一個深度線性網路學習線性對映。當然,從計算的角度來看,深度線性網路並不有趣,但是 Saxe 等人 2013 年的論文「Exact solutions to the nonlinear dynamics of learning in deep linear neural networks」表明深度線性網路中的學習動力學仍然可以提供非線性網路的學習動力學的資訊。因此,我們從這些簡單的場景開始討論。下圖是一個 30 層網路(誤差線是由 10 次獨立執行得到的標準差)的學習曲線和初始梯度範數(訓練之前)。

訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

我將在之後簡短地解釋圖中的標籤「Fold 0」的含義。這裡的梯度是關於層啟用值的(與關於引數的梯度的行為類似)。網路的權重使用標準的初始化方法進行初始化。起初,訓練損失函式下降得很快,但很快漸進地收斂於一個次優值。此時,梯度並沒有消失(或爆炸),至少在初始階段。梯度確實隨著訓練過程變小,但這是預料之中的,從任何方面看都不能清楚表明梯度已經變得「太小」:

訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

為了表明這裡的收斂到區域性最優解的現象和梯度範數的大小本身並沒有關係,我將引入一種運算,它將增加梯度範數的值,卻使得網路的效能變得更差。如下圖所示(藍線):

訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

我只是簡單地改變了初始化方法而已。初始網路的所有初始權重都是矩陣(使用標準方法初始化)。而在上圖的藍線中,我只是將每個初始權重矩陣的上半部分複製到下半部分(即初始權重矩陣被摺疊了一次,因此稱其為「Fold 1」網路)。這種運算降低了初始權重矩陣的秩,使得它們更加的退化(degenerate)。注意這種運算僅應用於初始權重矩陣,並沒有加上其它對學習過程的約束,訓練過程保持不變。經過幾個 epoch 的訓練之後,梯度範數的變化如下圖所示:

訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

因此,我引入了一種運算,它增大了全域性的梯度範數,但是效能卻變差了很多。相反地,接下來我將引入另一種運算以減小梯度範數,卻能大幅地提升網路的效能。如下圖所示(綠線):

訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

正如圖中的標籤「Ortho」所示,這種運算將權重矩陣初始化為正交的。正交矩陣是固定(Frobenius)範數的矩陣中退化程度最低的,其中退化度可以用多種方法計算。以下是經過幾個 epoch 訓練之後的梯度範數:

訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

如果梯度範數的大小本身和深度網路的訓練困難並沒有關係,那是什麼原因呢?答案是,模型的退化基本上決定了訓練效能。為什麼退化會損害訓練效能?直觀地說,學習曲線基本上會在引數空間的退化方向變慢,因此退化會減少模型的有效維度。在以前,你可能會認為是用引數擬合模型,但實際上,由於退化,可以有效地擬合模型的自由度卻變少了。上述的「Fold 0」和「Fold 1」網路的問題在於,雖然梯度範數值還不錯,但是網路的可用自由度對這些範數的貢獻非常不均衡:雖然一些自由度(非退化的)貢獻了梯度的主要部分,但大部分(退化的)自由度對此沒有任何貢獻(僅作概念性的理解,並不是很準確的解釋。可以理解為在每個層中只有少量的隱藏單元對不同的輸入改變它們的啟用值,而大部分隱藏單元對不同的輸入都是相同的反應)。

正如 Saxe 等人的論文表明,隨著相乘矩陣的數量(即網路深度)增加,矩陣的乘積變得更加退化。以下分別是該論文中的 1 層、10 層和 100 層網路的例子:

訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

隨著網路深度增加,積矩陣的奇異值變得越來越集中,而小部分出現頻率很低的奇異值變得任意的大。這種結果不僅僅和線性網路相關。在非線性網路中也會出現類似的現象:隨著深度增加,給定層的隱藏單元的維度變得越來越低,即越來越退化。實際上,在有硬飽和邊界的非線性網路中(例如 ReLU 網路),隨著深度增加,退化過程會變得越來越快。

 Duvenaud 等人 2014 年的論文「Avoiding pathologies in very deep networks」裡展示了關於該退化過程的視覺化:

訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

隨著深度增加,輸入空間(左上角)會在每個點都扭曲成越來越細的細絲,而只有一個與細絲正交的方向會影響網路的響應。在兩個維度上表示出輸入空間的變化可能會比較難,但是實驗證明輸入空間的點在區域性會變為「hyper-pancakey」,即每一個點都有一個單一的方向正交於扭曲後的表面。若我們沿著這個敏感的方向改變輸入,那麼網路實際上對變化會非常敏感。

最後我忍不住想提一下我和 Xaq Pitkow 的論文。在論文 SKIP CONNECTIONS ELIMINATE SINGULARITIES 中,我們透過一系列實驗表明本文討論的退化問題嚴重影響了深度非線性網路的訓練,而跳過連線(ResNet 中採用的重要方法)幫助深度神經網路實現高精度的訓練同樣是一種打破退化的方法。我們同樣懷疑其它如批次歸一化或層級歸一化等方法有助於深度神經網路的訓練,除了原論文所提出的如降低內部方差等潛在的獨立性機制,也至少有一部分原因是退化被破壞而實現的。我們都知道分裂歸一化(divisive normalization)對於解相關隱藏單元的響應非常高效,它也可以看成一種打破退化的機制。

除了我們的論文外,我還應該提一下 Pennington、 Schoenholz 和 Ganguli 最近提出的論文 Resurrecting the sigmoid in deep learning through dynamical isometry: theory and practice。在該論文中,正交初始化完全移除了線性網路中的退化問題。他們提出了一種計算非線性網路雅可比矩陣的整個奇異值分佈的方法,並表明在 hard-tanh 非線性網路(而不是在 ReLU 網路)中能實現獨立於深度的非退化奇異值分佈。實驗結果表明有獨立於深度的非退化奇異值分佈的網路要比奇異值分佈變得更寬(更高的方差)的網路快幾個數量級。這是消除退化和控制整個網路奇異值分佈的重要性的有力證明,而不只是該論文比較有意思。

論文:SKIP CONNECTIONS ELIMINATE SINGULARITIES 

訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

論文地址:https://openreview.net/pdf?id=HkwBEMWCZ

跳過連線(Skip connections)使得深度網路訓練成為了可能,並已經成為各種深度神經架構中不可缺少的部分,但目前它並沒有一個非常成功和滿意的解釋。在本論文中,我們提出了一種新的解釋以說明跳過連線對訓練深度網路的好處。訓練深度網路的難度很大程度是由模型的不可識別所造成的奇異性(singularities)而引起。這樣的一些奇異性已經在以前的工作中得到證明:(i)給定層級結點中的置換對稱性(permutation symmetry)造成了重疊奇異性,(ii)消除(elimination)與對應的消除奇異性,即結點的一致性失活問題,(iii)結點的線性依賴性產生奇異問題。這些奇異性會在損失函式的表面產生退化的流形,從而降低學習的效率。我們認為跳過連線會打破結點的置換對稱性、減少結點消除的可能性以及降低節點間的線性依賴來消除這些奇異性。此外,對於典型的初始化,跳過連線會移除這些奇異性而加快學習的效率。這些假設已經得到簡化模型的實驗支援,也得到了大型資料集上訓練深度網路的實驗支援。訓練深度神經網路失敗的罪魁禍首不是梯度消失,而是退化

相關文章