算法優化之道:避開鞍點

2020-12-05 CSDN技術社區

凸函數比較簡單——它們通常只有一個局部最小值。非凸函數則更加複雜。在這篇文章中,我們將討論不同類型的臨界點( critical points) ,當你在尋找凸路徑( convex path )的時候可能會遇到。特別是,基於梯度下降的簡單啟發式學習方法,在很多情形下會致使你在多項式時間內陷入局部最小值( local minimum ) 

臨界點類型


為了最小化函數f:RnR,最流行的方法就是往負梯度方向前進f(x)(為了簡便起見,我們假定談及的所有函數都是可微的),即:

y=xηf(x),

其中η表示步長。這就是梯度下降算法(gradient descentalgorithm)。

每當梯度∇f(x)不等於零的時候,只要我們選擇一個足夠小的步長η,算法就可以保證目標函數向局部最優解前進。當梯度∇f(x)等零向量時,該點稱為臨界點(critical point),此時梯度下降算法就會陷入局部最優解。對於(強)凸函數,它只有一個臨界點(criticalpoint),也是全局最小值點(global minimum)。

然而,對於非凸函數,僅僅考慮梯度等於零向量遠遠不夠。來看一個簡單的實例:

y=x12x22.

x=(0,0)時,梯度為零向量,很明顯此點並不是局部最小值點,因為當x=(0,ϵ)時函數值更小。在這種情況下,(0,0)叫作該函數的鞍點(saddle point)。

為了區分這種情況,我們需要考慮二階導數∇2f(x)——一個n×n矩陣(通常稱作Hessian矩陣),第i,j項等於 當Hessian矩陣正定時(即對任意的u0,有u2f(x)u > 0恆成立),對於任何方向向量u,通過二階泰勒展開式可知x必定是一個局部最小值點。同樣,當Hessian矩陣負定時,此點是一個局部最大值點;當Hessian矩陣同時具有正負特徵值時,此點便是鞍點。

對於許多問題,包括 learning deep nets ,幾乎所有的局部最優解都有與全局最優解(global optimum)非常相似的函數值,因此能夠找到一個局部最小值就足夠好了。然而,尋找一個局部最小值也屬於NP-hard問題(參見 Anandkumar,GE 2006 中的討論一節)。實踐當中,許多流行的優化技術都是基於一階導的優化算法:它們只觀察梯度信息,並沒有明確計算Hessian矩陣。這樣的算法可能會陷入鞍點之中。

在文章的剩下部分,我們首先會介紹,收斂於鞍點的可能性是很大的,因為大多數自然目標函數都有指數級的鞍點。然後,我們會討論如何對算法進行優化,讓它能夠嘗試去避開鞍點。

對稱與鞍點

許多學習問題都可以被抽象為尋找k個不同的分量(比如特徵,中心…)。例如,在 聚類 問題中,有n個點,我們想要尋找k個簇,使得各個點到離它們最近的簇的距離之和最小。又如在一個兩層的 神經網絡 中,我們試圖在中間層尋找一個含有k個不同神經元的網絡。在我 先前的文章 中談到過張量分解(tensordecomposition),其本質上也是尋找k個不同的秩為1的分量。

解決此類問題的一種流行方法是設計一個目標函數:設x1,x2,…,xK∈Rn表示所求的中心(centers),讓目標函數f(x1,…,x)來衡量函數解的可行性。當向量x1,x2,…,xK是我們需要的k的分量時,此函數值會達到最小。

這種問題在本質上是非凸的自然原因是轉置對稱性permutationsymmetry)。例如,如果我們將第一個和第二個分量的順序交換,目標函數相當於:f(x1,x2,…,xk)= f(x1,x2,…,xk)。

然而,如果我們取平均值,我們需要求解的是兩者是不等價的!如果原來的解是最優解,這種均值情況很可能不是最優。因此,這種目標函數不是凸函數,因為對於凸函數而言,最優解的均值仍然是最優。  

所有相似解的排列有指數級的全局最優解。鞍點自然會在連接這些孤立的局部最小值點上出現。下面的圖展示了函數y = x14−2x12 + X22:在兩個對稱的局部最小點(−1,0)和(1,0)之間,點(0,0)是一個鞍點。


避開鞍點

為了優化這些存在許多鞍點的非凸函數,優化算法在鞍點處(或者附近)也需要向最優解前進。最簡單的方法就是使用二階泰勒展開式:


如果∇f(x)的梯度為零向量,我們仍然希望能夠找到一個向量u,使得u2f(x)u<0。在這種方式下,如果我們令y = x +ηu,函數值f(Y)就會更小。許多優化算法,諸如 trust regionalgorithmscubic regularization 使用的就是這種思想,它們可以在多項式時間內避開鞍點。

嚴格鞍函數

通常尋找局部最小值也屬於NP-hard問題,許多算法都可能陷入鞍點之中。那麼避開一個鞍點需要多少步呢?這與鞍點的表現良好性密切相關。直觀地說,如果存在一個方向u,使得二階導uT2f(x)u明顯比0小,則此鞍點x表現良好(well-behaved)——從幾何上來講,它表示存在一個陡坡方向會使函數值減小。為了量化它,在 與Furong Huang, Chi Jinand Yang Yuan 合作的一篇論文中介紹了嚴鞍函數的概念(在 Sun et al. 2015 一文中稱作「ridable」函數)

對於所有的x,如果同時滿足下列條件之一,則函數f(x)是嚴格鞍函數:
1. 梯度∇f(x)很大。
2. Hessian矩陣∇2f(x)具有負的特徵值。
3. 點x位於局部極小值附近。

從本質上講,每個點x的局部區域看起來會與下圖之一類似:


對於這種函數, trustregion算法cubicregularization 都可以有效地找到一個局部最小值點。

定理(非正式):至少存在一種多項式時間算法,它可以找到嚴格鞍函數的局部最小值點。

什麼函數是嚴格鞍? Ge et al. 2015 表明張量分解( tensordecomposition )問題屬於嚴格鞍。 Sun et al. 2015 觀察到諸如完整的 dictionary learningphase retrieval 問題也是嚴格鞍。

一階方法避開鞍點

Trust region算法非常強大。然而它們需要計算目標函數的二階導數,這在實踐中往往過於費時。如果算法只計算函數梯度,是否仍有可能避開鞍點?

這似乎很困難,因為在鞍點處梯度為零向量,並且沒有給我們提供任何信息。然而,關鍵在於鞍點本身是非常不穩定的(unstable):如果我們把一個球放在鞍點處,然後輕微地抖動,球就可能會掉下去!當然,我們需要讓這種直覺在更高維空間形式化,因為簡單地尋找下跌方向,需要計算Hessian矩陣的最小特徵向量。

為了形式化這種直覺,我們將嘗試使用一個帶有噪聲的梯度下降法(noisy gradient descent

y=xηf(x)+ϵ.

這裡ϵ是均值為0的噪聲向量。這種額外的噪聲會提供初步的推動,使得球會順著斜坡滾落。

事實上,計算噪聲梯度通常比計算真正的梯度更加省時——這也是隨機梯度法( stochasticgradient )的核心思想,大量的工作表明,噪聲並不會干擾凸優化的收斂。對於非凸優化,人們直觀地認為,固有的噪聲有助於收斂,因為它有助於當前點遠離鞍點(saddlepoints)。這並不是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

譯者:劉帝偉  審校:劉翔宇

責編:周建丁(投稿請聯繫zhoujd@csdn.net)

連結:深度學習為何起作用——關鍵解析和鞍點


2016年4月22日-23日,由CSDN重磅打造的[SDCC 2016資料庫&架構技術峰會](http://bss.csdn.net/m/topic/sdcc_invite/shenzhen)將在深圳舉行,目前18位講師和議題已全部確認。兩場峰會大牛講師來自百度、騰訊、阿里、京東、小米、唯品會、滴滴出行、攜程等知名網際網路公司,共同探討高可用/高並發/高穩定/高流量的系統架構設計、秒殺系統架構、搜索架構、中小企業架構之道、數據平臺系統演進歷程和技術剖析、傳統資料庫與分布式資料庫選型/備份/恢復原理及優化實踐、大數據應用實戰等領域的熱點話題與技術。【目前限時6折,[點擊這裡搶票](http://bss.csdn.net/m/topic/sdcc_invite/shenzhen)】

本文為CSDN編譯整理,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)

相關焦點

  • 如何在黎曼流形上避開鞍點?本文帶你了解優化背後的數學知識
    因此,了解如何識別並避開鞍點至關重要。這篇論文介紹了一種新方法,能夠針對滿足流形約束的目標函數識別並避開鞍點。設置該論文考慮在平滑流形 M 上最小化非凸平滑函數:其中 M 是一個 d 維平滑流形,f 是二次可微函數,Hessian 符合 ρ-Lipschitz。為此類問題尋找全局最小值是一項挑戰,而這篇論文利用一階優化方法找出近似的二階駐點(達到局部極小值)。
  • 【乾貨】機器學習最常用優化之一——梯度下降優化算法綜述
    【新智元導讀】梯度下降算法是機器學習中使用非常廣泛的優化算法,也是眾多機器學習算法中最常用的優化方法。幾乎當前每一個先進的(state-of-the-art)機器學習庫或者深度學習庫都會包括梯度下降算法的不同變種實現。
  • 技術| 深度解讀最流行的優化算法:梯度下降
    原標題:技術 | 深度解讀最流行的優化算法:梯度下降 選自sebastianruder 機器之心編譯 參與:沈澤江(optimization)算法,亦是至今最常用的優化神經網絡的方法。
  • 一文看懂各種神經網絡優化算法:從梯度下降到Adam方法
    這篇文章介紹了不同優化算法之間的主要區別,以及如何選擇最佳的優化方法。 什麼是優化算法? 優化算法的功能,是通過改善訓練方式,來最小化(或最大化)損失函數E(x)。 模型內部有些參數,是用來計算測試集中目標值Y的真實值和預測值的偏差程度的,基於這些參數,就形成了損失函數E(x)。
  • 高維意識:算法之上天之道
    我們算著情感的去留、算著金錢的得失、算著健康的好壞,而在計算的過程,我們從不會考慮算法之上的算法。我們用過去的發生來印證算法的準確性,我們用算法對應著出現在面前的每個人,我們掉進了算法的遊戲裡,被困住了。算法讓我們順著算法的結果去顯化,算法亦對我們的內在產生潛在的影響。
  • 優化算法——人工蜂群算法(ABC)
    一、人工蜂群算法的介紹 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga於2005年提出的一種新穎的基於群智能的全局優化算法
  • 引入Powerball 與動量技術,新SGD優化算法收斂速度與泛化效果雙...
    與目前的主流思路(自適應學習率或者動量法)不同,該論文作者在之前的工作[1]中,通過利用ODE的有限時間穩定性的直觀表達,提出了一種新的加速算法收斂的方法。這類稱為Powerball的方法,是通過簡單的將冪係數 γ∈[0,1)添加到各類基於梯度的優化方法中的梯度上得到的。
  • 貝葉斯優化之美:精妙算法背後的直覺
    當然,這個任務挺難的,比機器學習中的其他優化問題要難得多。例如,梯度下降可以獲得函數的導數,並利用數學捷徑來更快地計算表達式。另外,在某些優化場景中,函數的計算成本很低。如果可以在幾秒鐘內得到數百個輸入值x的變量結果,簡單的網格搜索效果會更好。另外,還可以使用大量非傳統的非梯度優化方法,如粒子群算法或模擬退火算法(simulated annealing)。
  • 科學家破解了谷歌的量子優化算法
    作者表明,這些缺陷對量子近似優化算法甚至近似解決問題的能力產生了根本性的限制。這一研究發表在最近的《物理評論通訊》上。研究團隊的發現報告了變分量子近似優化算法的明顯局限性。由於其內部的從量子到經典的反饋過程,量子近似優化算法和其他變分量子算法已經證明使用已知的數學技術極其難以分析。也就是說,給定的量子計算只能運行固定的時間量。
  • 聽說你了解深度學習最常用的學習算法:Adam優化算法?
    Adam優化算法是隨機梯度下降算法的擴展式,近來其廣泛用於深度學習應用中,尤其是計算機視覺和自然語言處理等任務。本文分為兩部分,前一部分簡要介紹了Adam優化算法的特性和其在深度學習中的應用,後一部分從Adam優化算法的原論文出發,詳細解釋和推導了它的算法過程和更新規則。
  • Adam 優化算法詳解
    據牛津字典的定義,優化是指最好或最有效地利用一種情況或資源,或者簡單地使自己的事物達到最佳狀態的行為。 通常,如果可以對某事進行數學建模,則很有可能可以對其進行優化。 這在深度學習領域起著至關重要的作用(可能是整個人工智慧),因為您選擇的優化算法可能是在數分鐘,數小時或數天(有時甚至是數周)內獲得高質量結果的區別。
  • 人工智慧之ICA算法
    人工智慧機器學習有關算法內容,請參見公眾號「科技優化生活」之前相關文章。人工智慧之機器學習主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點探討一下ICA算法。  加入標準正交性約束(orthonormality constraint)後,ICA獨立成分分析相當於求解如下優化問題:  這就是標準正交ICA的目標函數。
  • 工程之道:曠視天元框架亞線性顯存優化技術解析
    機器之心發布曠視研究院基於梯度檢查點的亞線性顯存優化方法 [1] 由於較高的計算/顯存性價比受到關注。MegEngine 經過工程擴展和優化,發展出一套行之有效的加強版亞線性顯存優化技術,既可在計算存儲資源受限的條件下,輕鬆訓練更深的模型,又可使用更大 batch size,進一步提升模型性能,穩定 batchwise 算子。
  • 【算法系列】凸優化的應用——Python求解優化問題(附代碼)
    :無約束優化問題和約束優化問題,約束優化問題又可分為含等式約束優化問題和含不等式約束優化問題。無約束優化問題含等式約束的優化問題含不等式約束的優化問題針對以上三種情形,各有不同的處理策略:無約束的優化問題:可直接對其求導,並使其為0,這樣便能得到最終的最優解;含等式約束的優化問題:主要通過拉格朗日乘數法將含等式約束的優化問題轉換成為無約束優化問題求解;含有不等式約束的優化問題:主要通過KKT條件(Karush-Kuhn-Tucker Condition
  • NeurIPS 2018 | 騰訊AI Lab&北大提出基於隨機路徑積分的差分估計子非凸優化方法
    本文利用 SPIDER 技術求解大規模的隨機非凸優化問題,在理論上本文的算法上取得的更快並在一定程度上最優的收斂速度!當使用方差縮減技巧 (variance reduction) [1] 之後,速度可以提升到ɛ的負 3 分之 10 次冪。而本文提出的 SPIDER 技術,可以進一步將收斂速度在理論上提升到ɛ的負 3 次冪!我們將算法展示在下圖算法 1 中。可以看出算法的核心在於使用隨機梯度的差分的累和估計真實梯度,與使用了歸一化的步長。
  • 10個梯度下降優化算法+備忘單
    在這篇文章中,我會總結應用在目前較為流行深度學習框架中的常見梯度下降算法(如TensorFlow, Keras, PyTorch, Caffe)。本文之目的是為了方便理解和掌握這些內容,因為除此之外總結並不多,而且它可以作為你從零基礎入門的「小抄」。
  • 深度學習優化入門:Momentum、RMSProp 和 Adam
    雖然局部極小值和鞍點會阻礙我們的訓練,但病態曲率會減慢訓練的速度,以至於從事機器學習的人可能會認為搜索已經收斂到一個次優的極小值。讓我們深入了解什麼是病態曲率。 病態曲率 考慮以下損失曲線圖。如果 f 顯著下降的唯一方向是低曲率的,那麼優化可能會變得太慢而不切實際,甚至看起來完全停止,造成局部最小值的假象。
  • 第四章 蜘蛛猴優化算法
    蜘蛛猴優化(SpiderMonkey Optimization,SMO)是一種全局優化算法,靈感來自於蜘蛛猴在覓食過程中的裂變融合社會(Fission-Fusionsocial,FFS)結構。SMO巧妙地描述了群體智能的兩個基本概念:自組織和分工。SMO作為一種基於群體智能的算法,近年來得到了廣泛的應用,並被應用於許多工程優化問題中。這一部分詳細介紹了蜘蛛猴優化算法。
  • 總結優化算法收斂性證明的兩類方法
    這篇文章中,我們總結兩類做數值優化迭代算法收斂性證明的方法,同時也討論了優化算法設計的思路。1. 簡介數值優化在工程應用中有非常重要的作用。但在使用優化算法時候,算法的收斂性是我們需要認真考慮的東西,例如我們需要知道梯度下降是一階收斂而牛頓法是二階收斂,因此一般情況下,牛頓法會比梯度下降運行更快。
  • DAC快速目標檢測算法優化和架構設計優化方案
    DAC快速目標檢測算法優化和架構設計優化方案 Pynq 發表於 2020-12-03 15:26:17 1.