梯度下降法的神經網絡容易收斂到局部最優,為什麼應用廣泛?

2021-02-23 夕小瑤的賣萌屋

文 | Summer Clover@知乎
本文已獲作者授權,禁止二次轉載

這是Deep Learning Theory裡很基本也很核心的一個問題。

在這個問題上,初學者容易被入門教學誤導,非此研究方向的業內人士也容易有過時的認知。

首先問題描述不夠準確。更準確的說法是:(1)正因為梯度下降法容易收斂到局部最優,所以大家幾乎從來不用梯度下降做非凸優化,包括訓練神經網絡。
(2)正因為隨機梯度下降法容易逃離鞍點和泛化不好的minima(主要是sharp minima),所以隨機梯度下降(SGD)和它的變種(比如Momentun、Adam)才是訓練神經網絡最流行的方法。

鞍點(saddle points)和泛化不好的最優點(bad/sharp minima)在深度學習裡的確是廣泛存在的。但這是神經網絡複雜的loss landscape帶來的問題,而不是優化器帶來的問題。反而,優化器是來解決問題的。

正因為saddle points和bad minima太多了,所以你才太需要隨機優化了。

有很多問題在深度學習理論裡有和傳統機器學習和最優化理論完全不一樣的解答。很多傳統觀點在深度學習裡都是值得懷疑的。很少有教材會強調這件事或者指出它們的不同。於是就有一個很尷尬的現象。很多深度學習入門的教材和課程裡面混合了大量傳統機器學習的觀點和最優化理論的觀點。大量的博客和科普文章更是剪不斷、理還亂。

(另一個常見誤解是模型大小對泛化的影響:
https://www.zhihu.com/question/434846017/answer/1651711327)

這也不奇怪。因為深度學習理論的進展主要藏在最近幾年的論文裡,可能還要很長時間才能進入英文教材,還需要更長的時間才能進入中文教材。

歸納一下:

優化理論裡大家更在乎的是到critical points的收斂性,梯度逐漸收斂到0即可。至於是找到minima還是saddle points,超綱了。機器學習裡大家在乎是找到的是global minima,還是local minima。local minima意味著training loss還比較高,還沒優化到位。但是global minima還是local minima在深度學習裡不重要,因為所有的minima對應的loss都差不多小[1]。深度學習裡,大家很在乎saddle points附近的動力學(影響優化),大家非常在乎flat minima還是sharp minima(影響泛化)。因為saddle points附近的優化會非常慢,而minima flatness對深度學習泛化界的影響非常大。

Note: 鞍點逃逸問題一般指的是逃離

所以深度學習動力學有兩個非常值得研究的核心問題:

怎麼逃離sharp minima找到flat minima

其理論價值是,我們可以更好地理解深度神經網絡的訓練過程。其實踐價值是,我們可以更有依據地調參或者設計新的隨機優化器。

很幸運的是,SGD為代表的隨機優化器在這兩個問題裡都有相當好的性質。

直覺上的理解其實很簡單——在隨機梯度噪音擾動下,優化器可以加速逃離鞍點,也可以加速逃離sharp minima。

一般的意義上的回答就到這裡就結束了。但這個回答只是定性的,還不夠好,因為我們不能量化地預測SGD的行為。

就像我們都知道蘋果會掉在地上,但我們還需要牛頓力學來準確語言蘋果是如何掉在地上的。現在的深度學習理論的完善程度差不多相當於牛頓前的運動學,主要靠經驗和定性的結論。俗稱「煉丹發」,便是如此。

如果想更深(shu)入(xue)地理解這個問題,我正好可以介紹一下這個方向的最新進展。正好是我們組的一個系列工作的其中一篇SGD Diffusion Theory[2]:分析了為什麼SGD傾向於逃離sharp minima找到flat minima。(https://openreview.net/forum?id=wXgk_iCiYGo)

我們先來看一個一維示意圖(高維空間也不難想像)。假如一個粒子初始時刻在能阱a1裡,那麼:Q1.它需要多長時間才能越過鞍點b進入勢阱a2?Q2.經過足夠長的時間,這個粒子落入陷阱a1和a2的概率分別有多大?

▲Energy Landscape / Loss Landscape

抽象一下,深度學習的訓練過程其實就對應著這麼個經典的Kramers Escape問題。這個問題的原型最早出現在1940年的一篇經典論文[3]。

統計物理學家Kramers提出了這麼一個布朗運動粒子(服從朗之萬動力學Langevin Dynamics)的逃逸問題。經過一些統計物理學裡的經典近似手段,得到了熱噪音下(即各向同性的高斯噪音)的平均逃逸時間公式:

很容易發現,在最簡單的熱噪音的情況,我們已經能看到隨機動力學是偏好flat minima的,這種偏好是多項式級的。

這裡的

在化學裡面,類似的方法還可以計算化學反應的速率和反應式左右比例。

在深度學習裡,「類似」的方法則可以計算出SGD逃離minima的速率和SGD對flat minima的偏好。

雖說是「類似」的方法,但是深度學習動力學比熱力學複雜太多了。因為隨機梯度噪音是一種各向異性的、位置依賴的複雜噪音。

中間的數學細節可以參考[2]。大概的流程是,從SGD算法得到對應的Generalized Langevin Dynamics,再得到對應Fokker-Planck Equation。從Fokker-Planck Equation可以解出粒子的概率密度。再藉助Smoluchowski Equation可以解出粒子的概率密度從一個勢阱流向另一個勢陷的概率流大小。

可以直觀的理解為,一堆概率雲最開始在一個勢阱內,漸漸地通過鞍點流向了另一個勢阱,並逐漸達到平衡。達到平衡的特徵時間就是平均逃逸時間

熱力學版的Kramers Escape問題其實也是走這個數學流程。只是布朗運動的Langevin Dynamics只含有非常簡單的熱噪音。而[2]這個工作最大的貢獻就是,解決了隨機梯度噪音版的Kramers Escape問題。可以說,深度學習動力學是一種自然界不存在的動力學問題。其對應的Kramers Escape問題其實就是一種物理學家沒有見過的物理問題。

(這套數學工具,CS背景的同學基本上都不熟。但是有統計物理背景的同學可太熟了。解決問題的關鍵可能是先準確定義這個問題,再找一個懂統計物理的來解這個方程,就能大功告成。所以AI研究還是很需要diversity的。我也在和統計物理PhD合作中。。)

回到正題。[2]最後得到的深度學習版的Kramers Escape問題的平均逃逸時間表達式是:


(簡單起見,這裡只寫一維空間的情況。高維空間類似。)

其中

而且,很幸運,SGD逃逸對minima sharpness、batch size和學習率的指數關係都在[2]的實驗中被驗證:

▲平均逃逸時間對minima sharpness指數依賴關係

另外,SGLD(隨機梯度朗之萬動力學)是一種常用的做Bayesian inference的方法,它的行為更接近於熱力學,因為梯度噪音主要是人為加的高斯噪音。這不奇怪,因為Bayesian inference就是從玻爾茲曼分布中推斷參數。[2]的實驗也驗證了,SGLD對minima sharpness的依賴是多項式級的。這也說明了為什麼Bayesian inference的方法都不是好的深度學習訓練方法。

最後文章的結論很清晰,隨機梯度噪音的性質優對深度學習來說很優越:

熱力學對於flat minima的偏好是多項式級的,而SGD對flat minima的偏好是指數級的。這就是為什麼隨機優化對深度學習如此重要。這個batch size和學習率的比值

後臺回復關鍵詞【入群

加入賣萌屋NLP/IR/Rec與求職討論群

後臺回復關鍵詞【頂會

獲取ACL、CIKM等各大頂會論文集!

 

[1] Kawaguchi, K. (2016). Deep learning without poor local minima.Advances in neural information processing systems,29, 586-594.[2] Xie, Z., Sato, I., & Sugiyama, M. (2020). A Diffusion Theory For Deep Learning Dynamics: Stochastic Gradient Descent Exponentially Favors Flat Minima.  In International Conference on Learning Representations.[3] Kramers, H. A. (1940). Brownian motion in a field of force and the diffusion model of chemical reactions. Physica,7(4), 284-304.[4] Krizhevsky, A. (2014). One weird trick for parallelizing convolutional neural networks. arXiv preprint arXiv:1404.5997.[5] He, F., Liu, T., & Tao, D. (2019). Control batch size and learning rate to generalize well: Theoretical and empirical evidence. In Advances in Neural Information Processing Systems(pp. 1143-1152).[6] Gur-Ari, G., Roberts, D. A., & Dyer, E. (2018). Gradient descent happens in a tiny subspace.arXiv preprint arXiv:1812.04754.

相關焦點

  • 從梯度下降到擬牛頓法:詳解訓練神經網絡的五大學習算法
    損失函數的一階偏導可以使用梯度算符來表示,其中每一個權重的損失函數梯度表示如下:同樣,損失函數的二階偏導可以使用海塞矩陣(Hessian matrix)來表示,以下就是損失函數對權重向量每個元素的二階偏導數:最小化多變量連續可導函數的方法廣泛應用於學習過程中,許多常規方法都將這種最優化方法直接應用於神經網絡的訓練中。
  • 一文看懂各種神經網絡優化算法:從梯度下降到Adam方法
    詳解各種神經網絡優化算法梯度下降在訓練和優化智能系統時,梯度下降是一種最重要的技術和基礎。梯度下降的功能是:通過尋找最小值,控制方差,更新模型參數,最終使模型收斂。網絡更新參數的公式為:θ=θ−η×∇(θ).J(θ) ,其中η是學習率,∇(θ).J(θ)是損失函數J(θ)的梯度。這是在神經網絡中最常用的優化算法。
  • 學界 | 全局最優解?為什麼SGD能令神經網絡的損失降到零
    昨日,reddit 上一篇帖子引發熱議,該帖介紹了一篇關於梯度下降對過參數化神經網絡影響的論文,該論文只用單個非常寬的隱藏層,並證明了在一定條件下神經網絡能收斂到非凸優化的全局最優解
  • 最清晰的講解各種梯度下降法原理與Dropout
    二、全量梯度下降法(Batch gradient descent)全量梯度下降法每次學習都使用整個訓練集,因此每次更新都會朝著正確的方向進行,最後能夠保證收斂於極值點,凸函數收斂於全局極值點,非凸函數可能會收斂於局部極值點,缺陷就是學習時間太長,消耗大量內存。
  • 你真的了解隨機梯度下降中的「全局最優」嗎?
    這項工作加深了對SGD優化過程的理解,也有助於構建深度神經網絡的訓練理論。梯度下降是機器學習算法中最常用的一種優化方法。其中,隨機梯度下降 (Stochastic Gradient Descent, SGD) 由於學習速率快並且可以在線更新,常被用於訓練各種機器學習和深度學習模型,很多當前性能最優 (SOTA) 模型都使用了SGD。
  • 梯度下降兩大痛點:陷入局部極小值和過擬合
    介紹 基於梯度下降訓練神經網絡時,我們將冒網絡落入局部極小值的風險,網絡在誤差平面上停止的位置並非整個平面的最低點。這是因為網絡的誤差平面一般很難穿越,而神經網絡整體而言很難解釋。 隨機梯度下降與mini-batch隨機梯度下降 這些算法改編了標準梯度下降算法,在算法的每次迭代中使用訓練數據的一個子集。SGD在每權重更新上使用一個樣本,mini-batch SGD使用預定義數目的樣本(通常遠小於訓練樣本的總數)。
  • 梯度下降法
    2.只要沒有到達梯度為0的點,則函數值會沿著序列xk遞減,最終會收斂到梯度為0的點,這就是梯度下降法只要沒有到達梯度為0的點,則函數值會沿著序列xk遞減,最終會收斂到梯度為0的點,這就是梯度下降法。學習率設置恰當,函數收斂到極值點:
  • 機器學習中的梯度下降法
    本文中我講介紹一些機器學習領域中常用的且非常掌握的最優化算法,看完本篇文章後你將會明白:什麼是梯度下降法?  如何將梯度下降法運用到線性回歸模型中? 如何利用梯度下降法處理大規模的數據?梯度下降法的一些技巧  讓我們開始吧!梯度下降法是一個用於尋找最小化成本函數的參數值的最優化算法。
  • 理解凸性:為什麼梯度下降適用於線性回歸
    在機器學習中我們總會遇到線性回歸問題,但是為什麼我們可以用梯度下降算法來求解線性回歸成本函數呢?凸性理論可以讓我們更容易理解這個問題。凸性首先,通過凸集和凸函數定義凸度。凸集的定義正好體現在凸函數的定義中,如下所示:你可以直觀地把凸函數想像成這樣的函數:如果你畫一條從(x,f(x))到(y,f(y))的直線,那麼凸函數的圖像就會在這條直線的下方。下面是三個例子,我們應用這個直覺來確定函數是否是凸的。
  • 【相信我你沒真明白系列】詳解牛頓法與梯度下降法
    這個優化問題求解一般有梯度下降法和牛頓法兩種。梯度下降法1、梯度首先要理解什麼叫梯度,給定J(W),其梯度是如下式構成的一個向量:那有沒有一個方向,使得J(W_new)的變化最大,答案是梯度方向g和梯度負方向-g,梯度方向是增大最快,梯度負方向是減小最快。這就是梯度的意義,指向J(W)增長最快的方向。2、梯度下降所以梯度下降法是在梯度的負方向上,前進一小步:
  • 梯度與梯度下降法
    derivative),然後我們看看梯度下降法(Gradient Descent),了解為什麼在優化問題中使用梯度下降法來優化目標函數。梯度下降梯度下降算法(Gradient Descent)是神經網絡模型訓練最常用的優化算法。梯度下降算法背後的原理:目標函數J(θ)J(θ)關於參數θθ的梯度將是目標函數上升最快的方向。
  • 梯度下降法的三種形式BGD、SGD以及MBGD
    在應用機器學習算法時,我們通常採用梯度下降法來對採用的算法進行訓練。
  • 詳解梯度下降算法 正確訓練模型利刃!
    首先找到正確的值,我們用一些隨機數初始化W和B的值,然後梯度下降從那一點開始(在我們的插圖的頂部附近)。然後以最陡的下行方向(例如從圖的頂部到底部)一步接一步,直到它達到成本函數儘可能小的點。學習率的重要性梯度下降到佔據局部最小值的方向有多大,取決於所謂的學習率。
  • 機器學習——梯度下降、梯度下降的線性回歸算法
    如果α太大,那麼梯度下降法可能會越過最低點,甚至可能無法收斂,下一次迭代又移動了一大步,越過一次,又越過一次,一次次越過最低點,直到你發現實際上離最低點越來越遠,所以,如果α太大,它會導致無法收斂,甚至發散。如果預先把θ1放在一個局部的最低點,下一步梯度下降法會怎樣工作?假設θ1初始化在局部最低點,那麼它已經在一個局部的最優處或局部最低點。
  • 梯度下降優化算法綜述
    由于波動,因此會使得迭代次數(學習次數)增多,即收斂速度變慢。不過最終其會和全量梯度下降算法一樣,具有相同的收斂性,即凸函數收斂於全局極值點,非凸損失函數收斂於局部極值點。mini-batch梯度下降雖然可以保證收斂性。mini-batch梯度下降常用於神經網絡中。問題與挑戰雖然梯度下降算法效果很好,並且廣泛使用,但同時其也存在一些挑戰與問題需要解決:選擇一個合理的學習速率很難。如果學習速率過小,則會導致收斂速度很慢。如果學習速率過大,那麼其會阻礙收斂,即在極值點附近會振蕩。
  • 梯度下降法有什麼用?
    我最近在學習「梯度下降法」的時候,腦海中浮現出一個問題:在人工智慧領域,梯度下降法有什麼用?1. 梯度下降法簡介梯度下降法,是一種基於搜索的最優化方法,它其實不是一個機器學習算法,但是在機器學習領域,許多算法都是以梯度下降法為基礎的,它的主要作用是尋找目標函數的最優解。
  • KDD 2019|不用反向傳播就能訓練DL模型,ADMM效果可超梯度下降
    該方法解決了隨機梯度下降存在的問題,在多個標準數據集上達到並超過梯度下降算法的效果,並且第一次給出了全局收斂的數學證明。同時增強了算法的可擴展性,為解決一些當前重要的瓶頸問題提供了全新視角,比如複雜不可導問題以及非常深的神經網絡的高性能計算問題。目前,該論文已被數據挖掘領域頂會 KDD 2019 接收。
  • 訓練神經網絡的五大算法
    由此可見,一維優化方法就是尋找到某個給定的一維函數的最小值。黃金分段法和Brent方法就是其中兩種廣泛應用的算法。這兩種算法不斷地縮減最小值的範圍,直到η1和η2兩點之間的距離小於設定的閾值。➤多維優化方法我們把神經網絡的學習問題抽象為尋找參數向量w*的問題,使得損失函數f在此點取到最小值。
  • 人工智慧系列(七) 深度學習中的梯度下降與反向傳播
    但是,仍然存在一個問題:有了神經網絡和樣本數據,我們如何訓練模型得到神經網絡的最優參數呢?這個問題涉及到參數優化求解,深度學習通常用反向傳播梯度下降法來優化參數。本篇聊聊梯度下降和反向傳播的具體內容。>梯度下降梯度下降,是優化網絡參數的一種方法;顧名思義,如果梯度一直下降,也就是說網絡代價函數對網絡參數的導數一直下降,那麼最終網絡的代價函數會達到一個最小值(由於網絡函數的複雜性,這裡可能得到的是局部最小。
  • 神經網絡逃離鞍點
    凸函數通常很簡單,因為它們通常只有一個局部最小值。相比之下,非凸函數要複雜得多。在本文中,我們將討論非凸優化時,可能遇到的各種類型的極值點。我們將看到在許多情況下,基於梯度下降方法的一些簡單直覺可以使我們能夠在多項式時間內達到非凸優化的局部最小值。當梯度不為0時,選擇足夠小的η就能在每一步取得一定的進展。梯度為零的點是極值點。當優化遇到極值點,梯度下降法會停住。