算法優化之道:避開鞍點

2020-12-25 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。為此類問題尋找全局最小值是一項挑戰,而這篇論文利用一階優化方法找出近似的二階駐點(達到局部極小值)。
  • 學界 | Michael Jordan新研究官方解讀:如何有效地避開鞍點
    Jordan 帶領的一個跨多所大學和研究院的團隊發表了一篇論文《How to Escape Saddle Points Efficiently》,提出了最基本的算法——梯度下降的一個簡單變種,並證明該算法雖形式簡單,卻足以極其高效地避開鞍點。該研究成果推進了對非凸優化的理解,並可以直接被應用在包含深度學習在內的許多機器學習領域。
  • 神經網絡逃離鞍點
    在本文中,我們將討論非凸優化時,可能遇到的各種類型的極值點。我們將看到在許多情況下,基於梯度下降方法的一些簡單直覺可以使我們能夠在多項式時間內達到非凸優化的局部最小值。當梯度不為0時,選擇足夠小的η就能在每一步取得一定的進展。梯度為零的點是極值點。當優化遇到極值點,梯度下降法會停住。對於凸函數,極值點就是全局最優值。
  • 梯度下降優化算法綜述
    ,也是眾多機器學習算法中最常用的優化方法。三種梯度下降優化框架有三種梯度下降算法框架,它們不同之處在於每次學習(更新模型參數)使用的樣本個數,每次更新使用不同的樣本會導致每次學習的準確性和學習時間不同。其代碼如下:epochs 是用戶輸入的最大迭代次數。
  • 深度學習優化算法總結(SGD,AdaGrad,Adam等)
    點擊文末「閱讀原文」立刻申請入群~作者 |劉浪原文 | https://zhuanlan.zhihu.com/p/61955391動量(Momentum)算法帶動量的 SGD引入動量(Momentum)方法一方面是為了解決「峽谷」和「鞍點」
  • 【乾貨】深度學習必備:隨機梯度下降(SGD)優化算法及可視化
    來源:CSDN 授權轉載作者:Sebastian Ruder譯者:一隻鳥的天空【新智元導讀】梯度下降算法是機器學習中使用非常廣泛的優化算法,也是眾多機器學習算法中最常用的優化方法。Early Stopping         Gradient noise梯度下降算法是通過沿著目標函數J(θ)參數θ∈R的梯度(一階導數)相反方向−∇θJ(θ)來不斷更新模型參數來到達目標函數的極小值點(收斂),更新步長為η。
  • SGD過程中的噪聲如何幫助避免局部極小值和鞍點?
    這種簡單的爬山法技術已經主導了現代的非凸優化。然而,假的局部最小值和鞍點的存在使得分析工作更加複雜。理解當去除經典的凸性假設時,我們關於隨機梯度下降(SGD)動態的直覺會怎樣變化是十分關鍵的。向非凸環境的轉變催生了對於像動態系統理論、隨機微分方程等框架的使用,這為在優化解空間中考慮長期動態和短期隨機性提供了模型。
  • 乾貨|全面理解SGD,Momentum,AdaGrad,RMSProp,Adam優化算法
    主要內容主要講述SGD,Momentum,AdaGrad,RMSProp,Adam優化算法1.1. SGD1.1.1 Batch Gradient Descent在每一輪的訓練過程中,Batch Gradient Descent算法用整個訓練集的數據計算cost fuction的梯度,並用該梯度對模型參數進行更新:
  • 機器學習中的優化算法!
    優點:算法每次迭代的計算量少,儲存量也少,從一個不太好的初始點出發也能靠近極小點。缺點:(1)當初始點接近極小點時,迭代序列收斂於極小點,並且收斂很快(二階收斂);(2)當初始點不接近極小點時,迭代序列容易收斂到鞍點或者極大點(局部收斂性而不是全局收斂)。
  • 一文看懂各種神經網絡優化算法:從梯度下降到Adam方法
    這篇文章介紹了不同優化算法之間的主要區別,以及如何選擇最佳的優化方法。什麼是優化算法?優化算法的功能,是通過改善訓練方式,來最小化(或最大化)損失函數E(x)。模型內部有些參數,是用來計算測試集中目標值Y的真實值和預測值的偏差程度的,基於這些參數,就形成了損失函數E(x)。
  • 推薦算法工程師的成長之道
    作者 | gongyouliu本文,作者會基於自己的實踐經驗講述推薦算法工程師的成長之道,這裡的「道」有發展路徑和道(道理、方法論、經驗、智慧)兩層意思。本文會從推薦算法是一個好的職業選擇、發展路線及職業定位、成長之道、挑戰和機遇四個維度來講解。
  • 從淺層模型到深度模型:概覽機器學習優化算法
    學習算法一直以來是機器學習能根據數據學到知識的核心技術。而好的優化算法可以大大提高學習速度,加快算法的收斂速度和效果。
  • 數據+ 進化算法 = 數據驅動的進化優化?進化算法 PK 數學優化
    )就是藉助數據和進化算法求解優化問題。首先為什麼用進化算法呢?舉幾個例子,一些優化問題很難獲取其數學優化模型的,如仿真實驗軟體,可以看成是黑箱的優化問題。另有一些問題,雖然知道數學表達式,但是表達式存在非凸,不可導,不可微等性質。這些問題很難用基於梯度的傳統數學優化方法求解的,這時,智能優化算法就隆重上場了,如遺傳算法,粒子群算法,差分算法等。那為什麼還要藉助數據呢?
  • 深度學習進階之Adam優化算法
    beta1=0.9, beta2=0.999, epsilon=1e-08MxNet:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8Torch:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8在 第一部分中,我們討論了 Adam 優化算法在深度學習中的基本特性和原理
  • 深度學習最常用的學習算法:Adam優化算法
    Adam 優化算法是隨機梯度下降算法的擴展式,近來其廣泛用於深度學習應用中,尤其是計算機視覺和自然語言處理等任務。本文分為兩部分,前一部分簡要介紹了 Adam 優化算法的特性和其在深度學習中的應用,後一部分從 Adam 優化算法的原論文出發,詳細解釋和推導了它的算法過程和更新規則。
  • 深度學習優化器算法詳解:梯度更新規則+缺點+如何選擇
    在 Sebastian Ruder 的這篇論文中給出了常用優化器的比較,今天來學習一下: https://arxiv.org/pdf/1609.04747.pdf本文將梳理:每個算法的梯度更新規則和缺點為了應對這個不足而提出的下一個算法超參數的一般設定值幾種算法的效果比較
  • 機器學習非凸優化研究的最新進展極簡介紹與資料推薦
    最近的理論工作指明,許多非凸問題可以使用簡單的迭代算法(eg:具有隨機重啟的梯度下降)近乎最佳地解決。 The conditions for success turn out be mild and natural for many learning problems.有理論保證的非凸優化方法的一些例子:通過分解高階矩張量(一個非凸問題),我們可以學習許多潛變量模型。
  • 引入Powerball 與動量技術,新SGD優化算法收斂速度與泛化效果雙...
    與目前的主流思路(自適應學習率或者動量法)不同,該論文作者在之前的工作[1]中,通過利用ODE的有限時間穩定性的直觀表達,提出了一種新的加速算法收斂的方法。這類稱為Powerball的方法,是通過簡單的將冪係數 γ∈[0,1)添加到各類基於梯度的優化方法中的梯度上得到的。
  • MATLAB優化算法實例——模擬退火算法
    ❞1 模擬退火算法基本理論上期文章介紹MATLAB算法——遺傳算法,本章介紹模擬退火法及實例應用。MATLAB優化算法實例——遺傳算法1.1 簡介模擬退火算法(Simulated Annealing Algorithm)是一種隨機類全局優化方法。它來源於熱力學中固體物質的退火冷卻過程。
  • 矩陣相乘優化算法實現講解
    這種思路比較簡單好想,但是這種算法的複雜度是O(N3),而且不能進行優化,所以在平時在進行矩陣乘法時使用起來往往會超時。這樣的話就會優化一定的時間。而且這種優化對於一般算法要求的時間複雜度已經足夠了。j]); ③ 還有一種操作是一列一列的計算出所有元素:這種情況下一樣可以進行優化。