文 | 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和學習率的比值