凸函數比較簡單——它們通常只有一個局部最小值。非凸函數則更加復雜。在這篇文章中,我們將討論不同類型的臨界點( critical points) ,當你在尋找凸路徑( convex path )的時候可能會遇到。特別是,基於梯度下降的簡單啟發式學習方法,在很多情形下會致使你在多項式時間內陷入局部最小值( local minimum ) 。
臨界點類型
為了最小化函數f:Rn→R,最流行的方法就是往負梯度方向前進?f(x)(為了簡便起見,我們假定談及的所有函數都是可微的),即:
y=x?η?f(x),
其中η表示步長。這就是梯度下降算法(gradient descentalgorithm)。
每當梯度?f(x)不等於零的時候,只要我們選擇一個足夠小的步長η,算法就可以保證目標函數向局部最優解前進。當梯度?f(x)等零向量時,該點稱為臨界點(critical point),此時梯度下降算法就會陷入局部最優解。對於(強)凸函數,它只有一個臨界點(critical point),也是全局最小值點(global minimum)。
然而,對於非凸函數,僅僅考慮梯度等於零向量遠遠不夠。來看一個簡單的實例:
y=x12?x22.
當x=(0,0)時,梯度為零向量,很明顯此點並不是局部最小值點,因為當x=(0,?)時函數值更小。在這種情況下,(0,0)點叫作該函數的鞍點(saddle point)。
為了區分這種情況,我們需要考慮二階導數?2f(x)——一個n×n的矩陣(通常稱作Hessian矩陣),第i,j項等於 。當Hessian矩陣正定時(即對任意的u≠0,有u??2f(x)u
> 0恒成立),對於任何方向向量u,通過二階泰勒展開式
,可知x必定是一個局部最小值點。同樣,當Hessian矩陣負定時,此點是一個局部最大值點;當Hessian矩陣同時具有正負特征值時,此點便是鞍點。
對於許多問題,包括 learning deep nets ,幾乎所有的局部最優解都有與全局最優解(global optimum)非常相似的函數值,因此能夠找到一個局部最小值就足夠好了。然而,尋找一個局部最小值也屬於NP-hard問題(參見 Anandkumar,GE 2006 中的討論一節)。實踐當中,許多流行的優化技術都是基於一階導的優化算法:它們只觀察梯度信息,並沒有明確計算Hessian矩陣。這樣的算法可能會陷入鞍點之中。
在文章的剩下部分,我們首先會介紹,收斂於鞍點的可能性是很大的,因為大多數自然目標函數都有指數級的鞍點。然後,我們會討論如何對算法進行優化,讓它能夠嘗試去避開鞍點。
對稱與鞍點
許多學習問題都可以被抽象為尋找k個不同的分量(比如特征,中心…)。例如,在 聚類 問題中,有n個點,我們想要尋找k個簇,使得各個點到離它們最近的簇的距離之和最小。又如在一個兩層的 神經網絡 中,我們試圖在中間層尋找一個含有k個不同神經元的網絡。在我 先前的文章 中談到過張量分解(tensor decomposition),其本質上也是尋找k個不同的秩為1的分量。
解決此類問題的一種流行方法是設計一個目標函數:設x1,x2,…,xK∈Rn表示所求的中心(centers),讓目標函數f(x1,…,x)來衡量函數解的可行性。當向量x1,x2,…,xK是我們需要的k的分量時,此函數值會達到最小。
這種問題在本質上是非凸的自然原因是轉置對稱性(permutation symmetry)。例如,如果我們將第一個和第二個分量的順序交換,目標函數相當於:f(x1,x2,…,xk)= f(x1,x2,…,xk)。
然而,如果我們取平均值,我們需要求解的是,兩者是不等價的!如果原來的解是最優解,這種均值情況很可能不是最優。因此,這種目標函數不是凸函數,因為對於凸函數而言,最優解的均值仍然是最優。
所有相似解的排列有指數級的全局最優解。鞍點自然會在連接這些孤立的局部最小值點上出現。下面的圖展示了函數y = x14?2x12 + X22:在兩個對稱的局部最小點(?1,0)和(1,0)之間,點(0,0)是一個鞍點。
避開鞍點
為了優化這些存在許多鞍點的非凸函數,優化算法在鞍點處(或者附近)也需要向最優解前進。最簡單的方法就是使用二階泰勒展開式:
如果?f(x)的梯度為零向量,我們仍然希望能夠找到一個向量u,使得u??2f(x)u<0。在這種方式下,如果我們令y = x +ηu,函數值f(Y)就會更小。許多優化算法,諸如 trust region algorithms 和 cubic regularization 使用的就是這種思想,它們可以在多項式時間內避開鞍點。
嚴格鞍函數
通常尋找局部最小值也屬於NP-hard問題,許多算法都可能陷入鞍點之中。那麽避開一個鞍點需要多少步呢?這與鞍點的表現良好性密切相關。直觀地說,如果存在一個方向u,使得二階導uT?2f(x)u明顯比0小,則此鞍點x表現良好(well-behaved)——從幾何上來講,它表示存在一個陡坡方向會使函數值減小。為了量化它,在我 與Furong Huang, Chi Jin and Yang Yuan 合作的一篇論文中介紹了嚴鞍函數的概念(在 Sun et al. 2015 一文中稱作“ridable”函數)
對於所有的x,如果同時滿足下列條件之一,則函數f(x)是嚴格鞍函數:
1. 梯度?f(x)很大。
2. Hessian矩陣?2f(x)具有負的特征值。
3. 點x位於局部極小值附近。
從本質上講,每個點x的局部區域看起來會與下圖之一類似:
對於這種函數, trust region算法 和 cubic regularization 都可以有效地找到一個局部最小值點。
定理(非正式):至少存在一種多項式時間算法,它可以找到嚴格鞍函數的局部最小值點。
什麽函數是嚴格鞍? Ge et al. 2015 表明張量分解( tensor decomposition )問題屬於嚴格鞍。 Sun et al. 2015 觀察到諸如完整的 dictionary learning , phase retrieval 問題也是嚴格鞍。
一階方法避開鞍點
Trust region算法非常強大。然而它們需要計算目標函數的二階導數,這在實踐中往往過於費時。如果算法只計算函數梯度,是否仍有可能避開鞍點?
這似乎很困難,因為在鞍點處梯度為零向量,並且沒有給我們提供任何信息。然而,關鍵在於鞍點本身是非常不穩定的(unstable):如果我們把一個球放在鞍點處,然後輕微地抖動,球就可能會掉下去!當然,我們需要讓這種直覺在更高維空間形式化,因為簡單地尋找下跌方向,需要計算Hessian矩陣的最小特征向量。
為了形式化這種直覺,我們將嘗試使用一個帶有噪聲的梯度下降法(noisy gradient descent)
y=x?η?f(x)+?.
這裏?是均值為0的噪聲向量。這種額外的噪聲會提供初步的推動,使得球會順著斜坡滾落。
事實上,計算噪聲梯度通常比計算真正的梯度更加省時——這也是隨機梯度法( stochastic gradient )的核心思想,大量的工作表明,噪聲並不會幹擾凸優化的收斂。對於非凸優化,人們直觀地認為,固有的噪聲有助於收斂,因為它有助於當前點遠離鞍點(saddle points)。這並不是bug,而是一大特色!
在此之前,沒有良好的叠代上限(upper bound)能夠確保避開鞍點並到達局部最小值點(local minimum)。在 Ge et al. 2015 ,我們展示了:
定理(非正式):噪聲梯度下降法能夠在多項式時間內找到嚴格鞍函數的局部最小值點。
多項式高度依賴於維度N和Hessian矩陣的最小特征值,因此不是很實用。對於嚴格鞍問題,找到最佳收斂率仍是一個懸而未決的問題。
最近 Lee et al. 的論文表明如果初始點是隨機選擇的,那麽即使沒有添加噪聲,梯度下降也不會收斂到任何嚴格鞍點。然而他們的結果依賴於動態系統理論(dynamical systems theory)的 穩定流形定理(Stable Manifold Theorem) ,其本身並不提供任何步數的上界。
復雜鞍點
通過上文的介紹,我們知道算法可以處理(簡單)的鞍點。然而,非凸問題的外形更加復雜,含有退化鞍點(degeneratesaddle points)——Hessian矩陣是半正定的,有0特征值。這樣的退化結構往往展示了一個更為復雜的鞍點(如 monkey saddle (猴鞍),圖(a))或一系列連接的鞍點(圖(b)(c))。在 Anandkumar, Ge 2016 我們給出了一種算法,可以處理這些退化的鞍點。
非凸函數的輪廓更加復雜,而且還存在許多公認的問題。還有什麽函數是嚴格鞍?當存在退化鞍點,或者有偽局部最小值點時,我們又該如何使優化算法工作呢?我們希望有更多的研究者對這類問題感興趣!
原文: Escaping from Saddle Points
譯者:劉帝偉 審校:劉翔宇
責編:周建丁(投稿請聯系[email protected])
鏈接:深度學習為何起作用——關鍵解析和鞍點
Tags: critical gradient 學習方法 minimum points
文章來源: