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

2021-01-18 機器之心Pro

選自severelytheoretical

機器之心編譯

參與:蔣思源、劉曉坤

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

在這篇文章中,我將指出一個常見的關於訓練深度神經網絡的困難的誤解。人們通常認為這種困難主要是(如果不全是)由於梯度消失問題(和/或梯度爆炸問題)。「梯度消失」指的是隨著網絡深度增加,參數的梯度範數指數式減小的現象。梯度很小,意味著參數的變化很緩慢,從而使得學習過程停滯,直到梯度變得足夠大,而這通常需要指數量級的時間。這種思想至少可以追溯到 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

論文地址:>

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

原文連結:

相關焦點

  • 親耳「聽見」神經網絡的聲音:梯度變化一聽即可辨別(附代碼)
    Reddit網友做了一個非常有趣的實驗:將每個神經網絡層梯度範式轉換成了一個音調,這樣人類就可以憑藉聽覺,來很好的分辨出非常小的幹擾,比如節奏和音調。訓練神經網絡還可以用「聽」的!網友做了一個非常有趣的實驗:將每個神經網絡層梯度範式轉換成了一個音調,這樣人類就可以憑藉聽覺,來很好的分辨出非常小的幹擾,比如節奏和音調。
  • 深度| 如何理解深度學習的優化?通過分析梯度下降的軌跡
    該論文研究了深度線性神經網絡上梯度下降的情況,能保證以線性速率收斂到全局最小值。圖景(landscape)方法及其局限性很多有關深度學習優化的論文都隱含地假設:在建立了損失圖景(尤其是臨界點的損失圖景,臨界點是指梯度消失的點)的幾何性質之後,就會得到對其的嚴格理解。
  • 【乾貨】這8種神經網絡結構,你掌握了幾個?
    但是,RNN的計算能力使得它們訓練起來非常困難。訓練RNN是非常困難的,因為梯度爆炸或消失。當我們在許多層中進行反覆傳遞,梯度的大小發生了什麼變化?如果權重很小,梯度呈指數遞減。如果權重很大的話梯度呈指數增長。傳統的前饋神經網絡可以應付這些指數效應,因為他們只有少數隱藏層。另一方面,在訓練長序列的RNN中,可能很容易梯度爆炸或消失。即使有良好的初始權重,也很難檢測到當前的目標輸出是依賴先前時刻的輸入的,所以RNNs很難處理遠程依賴關係。
  • BP神經網絡
    ,這種方法就是我們本文要講的反向傳播神經網絡。  BP神經網絡作為神經網絡和深度學習力最重要的一個算法,有必要掰開了揉碎了來研究的。老規矩蓄勢完畢,開始正題吧。第一層 先直接給出每一層權重的修正公式,手工走一遍反向修正過程。後續有相對較多不太友善的數學公式,如果只是看故事了解個大概的朋友基本可以轉發連結,後文點讚了。
  • 創建新理論解釋運行原因,MIT研究者探索深度網絡的基礎理論問題
    該研究證明對於分類問題,給定一個用梯度下降算法訓練的標準深度網絡,那麼重要的是參數空間的方向,而不是權重的範數或大小。參考文獻 27 的最新結果說明了在二元分類線性網絡的特殊情況下過擬合的明顯缺失。他們證明了最小化損失函數,如 logistic 函數、交叉熵和指數損失函數等會使線性可分離數據集的最大邊值解漸近收斂,不受初始條件的影響,也不需要顯式正則化。
  • 深度 谷歌官方指南:如何通過玩TensorFlow Playground來理解神經網絡
    而眾多神經元組成的深度神經網絡能提取更多特徵,解決更複雜更抽象的問題。(之前相關報導:業界 | 想揭開深度學習隱藏層的神秘面紗?試試Tensor Flow的神經網絡遊樂場)源碼:https://github.com/tensorflow/playground神經網絡和深度學習近來已經變成了網際網路上的熱詞,你可能也想一探究竟。
  • 硬剛無限寬神經網絡後,谷歌大腦有了12個新發現
    也許會有人說相比寬度而言,神經網絡更需要深度來支持表達性,從一些經典神經網絡的發展歷程即可看出。 當中間層無限寬時,很大一類貝葉斯網絡和以梯度下降訓練的神經網絡最後都會收斂到高斯過程(GPs)或與其密切相關的核方法。
  • 教程| 如何使用TensorFlow構建、訓練和改進循環神經網絡
    目前有很多人工智慧應用都依賴於循環深度神經網絡,在谷歌(語音搜索)、百度(DeepSpeech)和亞馬遜的產品中都能看到RNN的身影。然而,當我們開始著手構建自己的 RNN 模型時,我們發現在使用神經網絡處理語音識別這樣的任務上,幾乎沒有簡單直接的先例可以遵循。
  • 什麼是人工神經網絡(ANN)?
    神經網絡由多層組成訓練人工神經網絡人工神經網絡首先為神經元之間的連接權重分配隨機值。ANN正確而準確地執行其任務的關鍵是將這些權重調整為正確的數字。但是找到合適的權重並不是一件容易的事,特別是當您處理多層和成千上萬的神經元時。
  • 讓神經網絡給符號AI「打工」,MIT和IBM聯合解決深度學習痛點,未來...
    連接主義利用知識進行訓練,讓神經網絡具有學習能力,但容易受到對抗攻擊。於是將符號主義和連接主義結合起來的混合式神經-符號AI(neurosymbolic AI)應運而生。科學家用深度神經網絡來構建符號AI所需的知識庫和命題,省去了人工預設的難題,然後使用符號AI對任務進行推理。
  • 天生一對,硬核微分方程與深度學習的「聯姻」之路
    微分方程真的能結合深度神經網絡?真的能用來理解深度神經網絡、推導神經網絡架構、構建深度生成模型?我們將從鄂維南、董彬和陳天琦等研究者的工作中,窺探微分方程與深度學習聯袂前行的路徑。近日,北京智源人工智慧研究院開展了第一次論壇,其以「人工智慧的數理基礎」這一重大研究方向為主題,從數學、統計和計算等角度討論了智能系統應該怎樣融合數學系統。
  • 歪比歪比,歪比巴卜,神經網絡也該用上加密「通話」了
    本文為設計保護隱私的深度學習應用提供了一種範式。3實驗3.1 keynet必要性實驗作者將人臉識別和目標檢測作為目標任務,人臉識別實驗使用VGG-16網絡,並在VGGFace上進行了預訓練,目標檢測實驗使用在MS-COCO數據集上預訓練的Faster R-CNN,假設存在一個圖像退化函數,然後聯合給定的預訓練模型進行微調
  • 機器學習與人工神經網絡(二):深度學習(Deep Learning)
    以手寫數字辨識為例,這個神經網絡包含三層神經元,除了輸入和輸出層外,中間有一層隱藏層(意指不參與輸入或輸出,隱藏於內部),傳遞並處理數據。其實,隱藏層可以有一層以上,而複數個隱藏層的神經網絡通常被稱為深度神經網絡 [注1]。圖一B是一個深度神經網絡示意圖,也許只有兩個隱藏層看起並沒有很深,但在實務上神經網絡可以高達數十層至數百層,非常具有「深度」。圖一:A.
  • 資料| 神經網絡與深度學習(邱錫鵬)
    特別是最近這幾年,得益於數據的增多、計算能力的增強、學習算法的成熟以及應用場景的豐富,越來越多的人開始關注這個「嶄新」的研究領域:深度學習。深度學習以神經網絡為主要模型,一開始用來解決機器學習中的表示學習問題。但是由於其強大的能力,深度學習越來越多地用來解決一些通用人工智慧問題,比如推理、決策等。
  • CrashCourse AI系列課程第4集:訓練神經網絡
    我們給John Green Bot一個沒有訓練過的神經網絡,還是遊泳池的例子,這次特徵用溫度、溼度、是否下雨等等,輸出層預測來泳池的人數。(先不考慮如何設計這個神經網絡的結構,只關心權重。)和往常一樣,權重值一開始是隨機數,這次不是一條線,因為有很多輸入,所以是一個大函數,複雜到無法可視化,類似於很多奇怪的多維圖形,甚至沒法給它取名。為了訓練神經網絡,我們給John green Bot過去10天的遊泳池數據,從第一天開始,溫度華氏80度,溼度65%,沒下雨(用0表示)。
  • 直接對梯度下手,阿里提出新型優化技巧,一行代碼即可改善現有優化器
    比如批歸一化、權重標準化……但現有的優化方法大多基於激活或權重執行,最近阿里達摩院的研究者另闢蹊徑,直接對梯度下手,提出全新的梯度中心化方法。只需一行代碼即可嵌入現有的 DNN 優化器中,還可以直接對預訓練模型進行微調。優化技術對於深度神經網絡 (DNN) 的高效訓練至關重要。
  • 乾貨分享|使用JAX創建神經網絡的對抗性示例(附詳細代碼)
    在本教程中,我們將看到如何創建使用JAX訓練神經網絡的對抗示例。首先,讓我們看一些定義。有哪些例子?簡而言之,對抗性示例是神經網絡的輸入,這些輸入經過優化以欺騙算法,即導致目標變量分類錯誤。通過向目標變量添加「適當的」噪聲,我們可以對目標變量進行錯誤分類。下圖演示了該概念。
  • Google首席科學家韓國大學演講:大規模深度學習
    深度神經網絡是什麼?神經網絡就是一些從數據提煉的複雜函數。從一個空間輸入在轉化為另一個空間的輸出。這裡的函數不是像平方,而是真正複雜的函數。當你給出一些原始像素,比如貓,而輸出就是對象的類別。深度學習中的「深度」指的是 神經網絡中的層數。這個系統的良好性質是一組簡單的可以訓練的數學函數集合。深度神經網絡適用於很多機器學習風格。
  • SIGGRAPH 2018 | 自適應神經網絡模擬運動軌跡,四足動物旋轉跳躍...
    本期論文提出了一種用於四足運動合成的新型數據驅動方法,並稱之為自適應神經網絡。該系統可以實現,根據控制命令產生逼真的運動動畫和穩定的轉換過程。與傳統的關鍵幀動畫不同,這項系統不需要單獨創建動畫剪輯或動畫圖形,而是能夠直接通過數據學習這些動畫。由於四足動物的腳步類型複雜,標記運動模型通常需要專業知識和大量的數據來校準和預處理。