「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

Joshua發表於2018-12-04

作者介紹:

Joshua Chou 畢業於多倫多大學,目前從事資訊理論與編碼論的相關研究,主要研究內容為格碼 (Lattice Codes) 與低密度奇偶檢查碼 (Low Density Parity Check Codes) 的演演算法,以及它們在通訊系統中的應用。其他感興趣的研究領域包括凸最佳化 (Convex Optimization) 以及隨機規劃 (Stochastic Programming)。

最佳化的愛好讓我很自然地接觸到機器學習 (Machine Learning) 領域。我喜歡針對機器學習的演演算法,用一個最佳化的架構去思考,去理解機器學習問題。

我覺得研究機器學習的樂趣不只是在於機器終究能夠達成的應用,而是在當你遇到一個問題時,如何想像 (visualize) 這個問題,如何去規劃 (formulate) 這個問題,然後用什麼演演算法去解決 (solve) 這個問題,如何解讀演演算法的每一個細節、每一個引數。當你深入地瞭解了問題與演演算法的時候,你會發現看上去再複雜的問題都有一個簡單易懂的解釋。我覺得,當你能夠了解演演算法的每一步時,解決問題就像在說一場故事一樣,特別有條理,非常有趣。因此對於今年 NeurIPS 的文章,我找了幾篇關於最佳化細節的論文推薦給各位。

論文列表

  • Escaping Saddle Points in Constrained Optimization

  • Third-order Smoothness Helps: Even Faster Stochastic Optimization Algorithms for Finding Local Minima

  • SEGA: Variance Reduction via Gradient Sketching

論文 1:Escaping Saddle Points in Constrained Optimization

論文連結:https://arxiv.org/abs/1809.02162

你為什麼需要讀這篇文章?

簡而言之,如果你對研究跳出區域性最小值的問題很感興趣,那麼你很有必要閱讀一下這篇文章。

Choromanska 等人在 2015 年發表的研究表明,隨著問題維度的增加,區域性最小值之間的損失的方差會減小。這意味著在區域性最小值點產生的損失與在全域性最小值點產生的損失類似。

然而,由於最佳化演算法可能陷入鞍點無法跳出,我們並不總是能很輕易地得到區域性最小值。本文介紹了一種避開鞍點的方法,該方法具有較高的發生損失,有望更快地收斂到區域性最小值。一旦我們達到(近似的)區域性最小值,我們就可以安全地使用 Choromanska 發現的結論,並將我們的解作為一個充分解。

因此,我們需要解決的問題是「如何避開鞍點,從而得到一個區域性最小值」?

預備知識

本文關注的問題可以被形式化定義如下:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中,f 是在一個凸集上平滑的非凸函式,x∈R^d,C 是一個封閉的凸集,而實數集上的 f:R^d 是 C 上的一個二次連續函式。

無約束最佳化問題的最優性條件通常包括一階必要條件(FONC),其中對於所有的 x 有 f(*x*) 的梯度 =0,以及二階充分條件 (SOSC),其中 FONC 在某個 x*點成立,且在 x* 點的 Hessian 二階導數矩陣是正半定的。

對於帶約束的最佳化問題,區域性最小值具有如下所示的特性:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

條件(2)和(3)分別為「一階必要條件」和「二階充分條件」。下面的定義對於讀者閱讀這篇文章也會很有幫助。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

在高維空間中,鞍點控制著損失表面(詳情見 Choromanska et al.,2015)。因此,我們的目標是避免演算法陷入鞍點,並找到一個(ε,γ)二階駐點(SOSP),即滿足(4)和(5)的 x*。反過來,一個(ε,γ)二階駐點(SOSP),將接近一個區域性最小值,因此它是一個充分解。

下圖直觀地描述了鞍點和區域性最小值之間的區別。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

如圖所示,當演算法處於一個鞍點時,存在一些潛在的方向,當演算法沿著這樣的方向繼續往下「走」(進行梯度下降)時,可以到達損失更小的點。

本文主要的貢獻

本文的主要成果是得到了凸集 C 上的非凸函式 f 的一個(ε,γ)二階駐點(SOSP)的框架。具體而言,本文著重研究了這種形式的二次規劃(QP)方法:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中,A∈R^d 是一個對稱矩陣,b∈R^d 是一個向量,而 c 是一個標量。在這裡,假設有一個可行解 x*,和一個屬於 (0,1] 常數因子 ρ,作者將問題的解定義如下:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

提出的解決方案包括兩個步驟。

在第一步中,演算法使用一階更新來查詢 ε 一階駐點(FOSP)。ε 一階駐點是一個滿足條件(4)的點 x*,在第二步中,如果它是一個鞍點,演算法利用 f 的二階資訊跳出該駐點。

該演算法如下所示,我們接下來將更仔細地研究每個步驟。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

一階步驟:收斂到一階駐點

作者提出了兩種不同的方法來完成這個步驟,一種是使用條件梯度更新規則,另一種是使用投影梯度更新規則。在這裡,我將詳細解釋投影梯度下降 (PGD) 方法。

在這種環境下,PGD 的目的是到達駐點 x^,以使能夠到達 x^ 的迭代過程始終在可行解集內。

PGD 的方法可以透過一個例子來理解。我們現在重點關注(1)中的最佳化問題,其中,我們在凸集 C 上有一個二次規劃約束問題(目標函式是變數的二次函式,約束條件是變數的線性不等式),我們將其約束定義為:Mx = y。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中 A∈R^(d*d) 以及 M∈R^(p*d)。PGD 背後的思想是,消除等式約束 Mx = y(它定義了凸集 C),從而得到一個無約束的最佳化問題。首先,我們需要找到一個矩陣 F∈R^(d*(d-p)) 和用引數表示的仿射向量 x^d(因此為凸集),可行解集如下:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

在這裡,我們可以選擇 Mx=y 的任意一個特解作為 x^,而 F 則是值域在 M 的零空間中的任意矩陣。因此(1)中的問題可以被歸結為:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

這是一個無約束問題其中變數 z∈R^(d-p)。透過該問題的解 z*,我們可以找到 f 的解為 x*=Fz*+x^。

PGD 得到的結果和出發點是,從可行解集中的某個點 x^ 開始,採取基於梯度方法的運算步驟,其運算結果仍然在這個可行解集中。這樣的方法可以透過一個事實得以驗證,那就是當 F 為一個 M 的零空間中的一個矩陣時,我們有 M (Fz + x^) = 0 + y = y,而且 x^ 是 Mx=y 的一個特解。

演算法 1 將根據一階更新來更新決策變數 x,直到到達滿足條件(4)的點 x_t,即

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

二階步驟:跳出鞍點

此時,演算法 1 已經到達了一個 ε 一階駐點。現在我們的目標是,如果它是一個區域性極大值或一個嚴格鞍點,我們將使用目標函式 f 的二階資訊來跳出當前的駐點。要做到這一點,我們必須在滿足 ▽ f(x_t)(u - x_t) = 0 的切線空間中找到一個可行解 u∈C,使內積 (u - x_t)^T ▽^2 f(x_t) (u - x_t) 小於 -γ。如果存在這樣一個點 u,這意味著方向(u- x_t)是梯度下降的方向,我們的演算法可以從當前的駐點離開。這是透過解決下面的最佳化問題來實現的。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

接下來這一步的目的是將上述問題轉化為一個容易解決的問題。作者在這裡給出了一個例子,如果 C 被構造地很好,上述最佳化問題可以轉化為二次約束二次規劃(QCQP)。這樣,我們就可以利用標準的凸最佳化技術來解決這個問題。

本文給出的例子是,當 C 被定義為以原點為中心的 m 個橢球的交點時,即

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中,每個 Q_i 是一個 d 維的對稱矩陣。因此,該問題可以被重新寫作:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

將約束(26)變換為一個二次約束二次規劃問題的方法如下。我們需要找到為切線空間找到一個基。首先, 我們可以使用如下形式的 Gramm-Schmidt 過程為 R^d 找到一個基。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

接下來,透過定義下面的矩陣

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

任意滿足▽ f(x_t)=0 的向量 z 可以被寫作 z=Ay,其中 y=(u-x_t)∈R^(d-1)。因此,(26)中的最佳化問題可以被寫作如下形式:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

這一步所得的結果(28)是一個眾所周知的問題,可以使用標準的最佳化技術來解決。從(26)到(28)的轉換背後的思路是:由於切線方向▽ f(x_t)∈R^d,我們可以讓它作為 R^d 的一個基向量。剩下的 A 的列構成的基向量形成了向量空間 R^(d-1),他們都正交於切線方向。透過在 A 的列空間中搜尋向量,即,z = Ay,這樣可以保證得到滿足約束▽ f(x_t)(u - x_t) = 0 的解。

作者指出,即使 x _ t ▽ ^ 2 f(x_t)x_t 是非正的,即▽ ^ 2 f(x_ t ) 不是半正定的,我們仍然可以找到問題(28)的 ρ 的近似解,從而解決問題(26)。最後,從第二階段返回的解決方案將是一個(ε,γ)二階駐點(SOSP)。

結論

本文著重關注最佳化的一些非常實用的問題,即如何跳出鞍點。例如,在神經網路中進行最佳化時,多層架構中誤差表面的統計特性已經顯示出鞍點佔據的優勢。因此,本文提供瞭如何潛在地克服鞍點的深刻見解。

一個潛在的後續工作是探索具有不同目標函式或約束的最佳化問題。看看這種方法是否可以進一步推廣將會十分有趣。我認為挑戰在於一個問題能否轉化為一個構造地很好的最佳化問題,即是否可以將原問題轉化為一個眾所周知的問題,如線性規劃、二次規劃、半定規劃等。如果可以的化,我們就可以應用本文提出的方法,達到一個滿足(鬆弛後的)最優條件的駐點。

現在,我們已經知道了在非線性最佳化問題中跳出鞍點的一種方法,那麼如何才能更快地跳出鞍點呢?接下來的這篇論文將討論這個問題。

論文 2:Third-order Smoothness Helps: Even Faster Stochastic Optimization Algorithms for Finding Local Minima

論文連結:https://arxiv.org/abs/1712.06585

你為什麼需要讀這篇文章?

簡單的答案仍然是,如果你對找到區域性最小值感興趣,那麼你有必要閱讀一下這篇文章。

Bray 和 Dean(2007)的早先理論分析表明,在高維連續空間上存在隨機高斯誤差函式臨界點的某種結構。它們表明,誤差遠高於全域性最小值的臨界點極有可能是具有許多負的和近似的平穩方向的鞍點,而所有的區域性最小值,極有可能具有非常接近全域性最小值的誤差。

如前所述,Choromanska et al.(2015)的實證研究證實了,隨著問題維度的增加,不同區域性最小值處損失的方差會減小。從本質上說,最好和最壞的解之間的「差距」縮小了,所有的區域性最小值的情況最終都差不多。

因此,這個問題就變成了:我們如何達到區域性最小值而不陷入鞍點?如果我們被陷入鞍點,我們怎麼才能跳出鞍點呢?

預備知識

本文的目標是利用目標函式的三階平滑度來避開鞍點。感興趣的讀者應該已經熟悉平滑和三階導數的定義。以下定義直接取自本文:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

正如上面所示的定義,Lipschitz 常數 L1 和 L2 分別取決於▽ f(x) 和 ▽ ^2 f(x)。因此,這些常數可能對於一個函式來說很小而對於另一個函式很大。從定義 3.1 可以看出,如果 L1 很小,那麼 f(x) 在 x 的變化很小時可能也只有很小的變化,而如果 L1 很大,那麼 f(x) 在 x 變換很小時也可能有很大的變化。

直觀上,Lipschitz 連續性利用 Lipschitz 常數 L 量化了函式 f(x) 的連續行為的概念。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

Anandkumar 和 Ge(2016)引入了上述定義,Carmon et al.(2017)也將三階導數 Lipschitz 稱為三階平滑度。三階導數 Lipschitz 和三階平滑這兩個術語在下面的章節中可以互換使用。

本文主要的貢獻

理論分析

在非凸最佳化問題中,若我們找到了一個 ε 一階駐點 x^,但它不是(ε,γ)二階駐點(這與 Mokhtari、Ozdaglar 和 Jadbabaie 前面的論文中的(ε,γ)二階駐點一樣)。這意味著 x^ 是一個鞍點,並且存在一些如下所示的向量 v^:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

之前 Carmon et al., 2016;Xu and Yang, 2017; Allen-Zhu and Li, 2017b; Yu et al., 2017 在透過負曲率跳出鞍點方面的研究告訴我們,我們可以沿著 v^ 的負曲率下降步驟跳出鞍點 x^。這在本文的(4.1)中有描述。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中,f(y) 是目標函式,假設其為 L1 Lipschitz 和 L2 Lipschitz。此外,α 是步長,其數量級為 O(ε _H/ L2)(可以認為它是步長的大小)。

這與 Mokhtari, Ozdaglar, and Jadbabaie 之前的論文中描述的方法是類似的。這裡的思路還是一樣的。演算法首先找到一個 ε 一階駐點,如果這個點是一個鞍點,演算法就會試圖跳出鞍點。

在這種情況下,在沒有任何三階資訊的情況下,負曲率下降可以在目標函式值上實現如下所示的下降方式:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

作者的主要工作是增加了目標函式為 L3-Lipschitz 三階導數的假設。他們的研究結果如下:透過使用目標函式的三階平滑,可以利用更大的步長 α 跳出鞍點。具體來說,新的步長的數量級為 O(sqrt (ε / L_3))。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

因此,我們可以看到當引入三階資訊時,步長的大小 η 比二階資訊的步長大小 α 要大的多。

結果是,當我們使用三階平滑時,與(4.2)相比,負曲率下降方法可以在目標函式值上實現一種更好(更快)的下降。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

演算法分析

在前人研究的負曲率查詢演算法的基礎上,本文作者利用三階平滑對該演算法進行了改進,使步長增大。演算法如下所示:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

在這裡,ApproxNC-FiniteSum(·) 函式是利用隨機梯度或隨機 Hessian 向量積求負曲率方向的函式。該函式會返回一個向量 v^,它是從當前點 x 開始的一個負的下降方向。請注意,我們還可以透過其它方法找到這個向量,即使用 Mokhtari、Ozdaglar 和 Jadbabaie 提出的方法。

準確率引數 ε_H 通常非常小。因此,我們可以從演算法 1 中看到,步長 η 與 ε_H 的平方根成正比,它將會比 α 的步長大得多,而 α 的步長與 ε_H 成正比。

綜合分析

在討論演算法的基礎上,作者提出了一種求解非凸有限和以及隨機最佳化問題近似區域性最小值的方法(基於負曲率下降演算法)。

作者所關注的最佳化問題可以形式化定義如下:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中 f_i(·) 可能是非凸的。這種情況下,演算法可以訪問每個單獨的函式 f_i(·) 和整個函式 f_i(·) 的資訊。對於有限和結構,可以採用基於方差縮減的方法提高不同非凸最佳化演算法的梯度複雜度。

因此,綜上所述,我們可以得到以下步驟。首先,我們應用方差縮減隨機梯度法,直到找到一個一階駐點。然後,我們應用演算法 1 找到負曲率方向來跳出鞍點(如果它是鞍點的話)。

結論

作者研究了目標函式(可能是非凸的)三階平滑在隨機最佳化中的好處。他們提出了一種將三階資訊與負曲率下降演算法相結合的改進方法,從而展示了三階平滑可以幫助演算法更快地跳出鞍點。

作者在他們提出的負曲率下降演算法的基礎上,進一步提出了一種實用的改進執行時複雜度的隨機最佳化演算法,能夠為目標函式是一個有限和形式的非凸最佳化問題找到區域性最小值。

最後,目前最先進的隨機區域性最小值查詢演算法(Allen-Zhu, 2017; Tripuraneni et al., 2017; Xu and Yang, 2017; Allen-Zhu and Li, 2017b; Yu et al., 2017)具有 O( ε^(-7/2)) 數量級的執行時間。本文提出的演算法的執行時間的數量級為 O(ε^(-10/3)),這比目前最先進的方法的效能還要好。

至此,我們已經討論了以下問題:

  1. 隨著神經網路變大、變深,其損失函式往往會陷入鞍點。鞍點的誤差大於區域性和全域性最小值,因此,我們希望避免演算法陷入鞍點。

  2. 如果演算法到達了一個駐點,我們希望

    a. 判斷該點是區域性最小值還是鞍點

     b. 如果該點是鞍點,我們需要跳出該鞍點 

目前我們看到的論文都關注如何解決上述問題。然而,到達鞍點並跳出鞍點還只是這個方向的研究的冰山一角。它們是對隨機梯度下降(SGD)演算法的改進,以幫助演算法更好地達到區域性最小值。隨機梯度下降的另一個重要方面是梯度▽ f_i(x) 的方差。下一篇論文將討論一種減小 SGD 方差的新方法。

在我們進入下一篇文章之前,我將給出一個關於梯度下降和隨機梯度下降的快速直觀的介紹。

梯度下降機器學習社群中幾乎每個人都熟悉的術語。更具體地說,隨機梯度下降在解決機器學習中的最佳化問題的方面取得了巨大的成功。

對於函式 f(x) 的最佳化問題,其中子函式 f_i(x) 的個數為 n。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

如果 f 是凸的,已知批次梯度下降可以實現線性的收斂。然而,在實際應用程式中,n 通常非常大,這使得 f(使用批處理梯度下降法)的計算開銷非常大。因此,我們引入了隨機梯度下降方法,其中索引 i ∈{1,2,…,n-1, n},服從均勻分佈,用於更新當前的 x。然而,作為犧牲,在強凸性條件下,隨機方法不具有梯度下降的線性收斂速度。這是因為當 w 接近真正的最小值(即 x)時,f_i(x) 的方差可能很大,導致估計 w 在 x 附近振盪。這兩種方法的視覺化結果如下:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

正如我們所看到的,在準確性和計算開銷之間有一個平衡。在梯度下降方法中,所採取的步驟更精確,但是需要更高的計算成本。在隨機梯度下降中,所採取的每個步驟的計算開銷很小,但似乎也會隨機地朝著最小值的一般方向前進。SGD 通常需要更多的步驟來達到最小值,但是它在梯度計算上的低成本使得它在實踐中(對於大尺寸的問題)更加可行。

論文 3:SEGA: Variance Reduction via Gradient Sketching

論文連結:https://arxiv.org/pdf/1809.03054.pdf

你為什麼需要讀這篇文章?

在一個有限和形式的問題中,最佳化目標是在執行隨機梯度下降時選擇一個▽ f_{i}(*x*) 來減小方差。如果讀者在他們的工作中用到過隨機梯度下降方法,本文會提供一種針對這個問題的新的視角。如果讀者在他們的工作中使用隨機梯度下降,這篇文章可以提供一個針對於在不需要有限和目標函式結構的情況下進行方差縮減的問題的新的視角。它為方差縮減技術提供了一些新的見解,因此我們接下來一起回顧這篇論文。

近些年,研究人員提出了隨機平均梯度增強(SAGA)和隨機方差縮減梯度(SVRG)等方法。然而,這些技術並不是本文討論的重點。

本文探索了一種基於隨機迭代方法的新技術。該方法基於草圖和專案框架。高屋建瓴地說,草圖是指從一個較難的問題開始,然後隨機生成一個包含原問題所有解的簡單問題。我將在這裡對這項技術進行更詳細的討論。我的目的是為讀者介紹這種方法,作為看待這個問題的另一種視角。

預備知識

考慮線性系統 Ax = b,其中 A∈R^(m*n),x∈R^n,b∈R^m。此外, 假設存線上性系統的一個特解 x ∈R^n。令 S∈R^(m*q)為與 A 具有相同行數的隨機矩陣但其列數較少(即 q << m)。我們將 S^{T}Ax = S^{T}b 稱為最終描繪出的線性系統。S^{T}Ax = S^{T}b 的行數相對較小,因此更容易解決。

點 x* 可以透過迭代過程找到,這個迭代過程使用一系列的概要矩陣逐漸提煉出 Ax = b 的近似解,而不是用單筆草圖法。令 x^k∈R^n 為我們當前對 Ax = b 的解的估計。我們可以透過將 x^k 投影到解空間上在如下所示形式描繪出的系統中改進對解的估計。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中,S 是在每一次迭代獨立於預先指定的分佈繪製而來,B 是一個正定矩陣。更進一步而言,B 被用於定義 B 的內積和引匯出如下 N-norm:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

出於簡化問題的考慮,我們可以在下文中很安全的假設 B 為單位矩陣。

上述最小化問題有一個帶有如下所示的封閉解的迭代過程。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中 † 為 Moore-Penrose 偽逆。我們使用封閉形式表示式進行更新,結果表明,如果 A 列滿秩,假設 S 分佈溫和,則迭代收斂

直觀地看,由於我們認為原系統 Ax = b 很複雜,我們可以用一個更簡單的系統替換它——一個隨機的原始系統的草圖,其解集 {x | S^T Ax = S^T b} 包了含所有的原始系統的解。x^(k + 1) 可以被認為是最接近 x^k 的點,它可以作為原始版本的線性系統的解。草圖系統通常會有很多的解,為了找到最好的 x^(k + 1),我們需要一種方法從解集中來選擇它。這個想法需要試圖保留儘可能多的目前學到的資訊,這些資訊是在當前的點 x^k 上提煉而來的。

現在,讀者已經熟悉了草圖與投影的概念和使用方法,我們將繼續探討這篇論文的內容。作者提出了一種隨機一階最佳化方法——SkEtched GrAdient (SEGA),該方法透過迭代逐步建立梯度的方差縮減估計值,該估計值來自於從理想狀態獲得的梯度的隨機線性測量(草圖)。

SEGA 在每次迭代中使用最新草圖提供的資訊,透過草圖和投影操作更新梯度的當前估計值。這些梯度隨後被用於透過隨機鬆弛過程計算真實梯度的無偏估計。接著,SEGA 使用這個無偏估計執行梯度步。

本文的主要貢獻

考慮下面的最佳化問題:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中 f 為 R^n →R 的對映,它是平滑的凸函式,而 R(x) 是封閉的凸正則化項。作者沒有假設我們可以得到真正的梯度▽f(x)。然而,假設理想狀態 oracle 提供梯度的隨機草圖(它只是一種線性變換),我們可以用它來驅動迭代過程。具體而言,在矩陣 S∈R^(n*b)(b≥1,可以將其固定,但並不一定需要這麼做)上給定一個固定的分佈 D,和一個查詢點 x ∈R^n,oracle 提供了演算法的隨機線性變換的梯度

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

SEGA 演算法

令 x^k 為當前這一輪的迭代,並令 h^k 為當前的 f 的梯度估計。接著,該演算法查詢理想狀態 oracle,並接受以梯度(2)的形式描繪出的梯度資訊。該演算法將基於新的梯度資訊更新 h^k。這一步是使用我們設定的草圖和投影過程完成的

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

(3)的封閉解為

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中 Z_k 被定義為 「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

讀者可以看到 h^{ k + 1 } 是一個有偏估計量(因為它是在(2)的迭代 k 中選擇出來的)。因此,需要引入一個無偏估計量。我們定義以下向量:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中,θ_k=θ(S_k)且 E_D[ θ_k *Z*_k ] = *B*. *g*^k 是梯度的無偏估計,它將在演算法中被使用。為了說明這一點,我將具體的推導過程附在下面:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

SEGA 演算法如下所示:「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中,prox_{αR}() 是近似運算元。圖中顯示了 SEGA 演算法與隨機座標下降(CD)相對比的一個例項。我們將只關注 SEGA 演算法,不會深入討論隨機座標下降。但是我們可以看到,與之前的圖形化解釋相比,SEGA 的步驟緊跟「最佳」路徑,準確率不斷提高,直至達到最優點。

讓我們暫時討論一下近似運算元。我將使用 Rockafellar 的經典著作「凸最佳化」中的定義。對於凸函式 h(),其近似運算元定義如下:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

對於那些熟悉 epigraph 的讀者來說,下面的例子可以提供一種直觀的解釋:考慮 g(x) = 1/2 || x ||^{2},h() 函式可能不平滑。函式 (h \Box g)(u) = inf_{u} h(u) + g(u - x) 被稱為卷積的下確界,對應於從集合 epi h + epi g 中得到的函式,h\Box g 是一個 h() 的平滑後或正則化後的形式。

對於那些不熟悉 epigraph(函式圖上或上方的點集合)的讀者,可以簡單地將其理解為,我們希望找到一個最小化 h(u) 的點,同時它又接近於 x(prox_h 的引數)。

在本文中,近似運算元的定義如下:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

其中 R() 為(1)中定義的凸正則化項。

因此,演算法 1 應該是很直觀的。經過初始化後,我們在每一步都進行取樣得到草圖矩陣 S,計算並估計梯度 g^k,使用 g^k 更新當前點 x^ k, 最後我們計算用於下一輪迭代的有偏估計量 h^{ k + 1 }。

對於 SEGA 演算法更直觀的理解

在這裡,我將嘗試從最佳化的角度提供一種對 SEGA 演算法更直觀的理解。讓我們仔細看看(3)中草圖和投影法的流程:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

這與我們在預備知識章節討論過的通用公式的形式是一致的。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

我們將使用這個通用的公式進一步為 SEGA 演算法提供一個直觀的理解方式並且實現在幾何/視覺形式上的解釋。回想一下,我們之前說過系統 Ax = b 有一個解 x*。為了便於解釋,假設已知 x*和 B 是單位矩陣。然後,可以將上述內容重新表述為以下形式:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

我們可以透過下面的式子解讀該公式。選擇一個隨機的包含 x^k 的仿射空間,並且約束該方法從這個空間選擇下一個迭代的點。然後,我們試著在這個空間上達到最優,換句話說,我們選擇 x^(k+1)作為最接近 x * 的點。我們可以從線面的幾何的角度來理解: x^(k+1)是兩個仿射空間唯一的交集。

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

由於任意矩陣的零空間是其轉置的範圍空間的正交補,我們知道任何時候在零空間 Null(S^TA) 中的任何點將與 Range(A^T S)(A^T S 的列空間)。最後,我們現在可以從下圖中看到這個理論的視覺化結果:

「如何跳出鞍點?」NeurIPS 2018最佳化相關論文提前看

因此,我們可以看到,在下一輪迭代中,x^(k+1) 將成為兩個隨機仿射空間(x^{k} + Range(A^T S) 和 x* + Null(S^T A))的交點:我們可以等價地將 x^(k+1) 看成 x^k 在 x* + Null(S^TA) 上的投影。

SEGA 是一種方差縮減方法

如前所述,仔細觀察圖 1,你會發現,梯度估計是對於▽f(x^k) 的一種更好的近似,在迭代中 x^k 越來越接近最優點。因此,g^k 的方差是梯度趨於零的一個估計量,這意味著 SEGA 是一種方差縮減演算法。

SEGA 的收斂結果

本文的一個關鍵理論貢獻是,討論了 SEGA 演算法的收斂性。它說明了 SEGA 的迭代可以線性收斂到最優解。在不涉及數學細節的情況下,作者證明了上述定理在光滑性假設下成立。

結論

本文提出了一種在新的隨機線性一階理想狀態下的複合最佳化問題的求解方法。本文提出的演算法 SEGA 是基於方差縮減的方法,這是透過「草圖和投影」更新梯度估計實現的。

在本文中,筆者重點對草圖和投影過程及進行了解釋,目的是幫助讀者更好地理解演算法背後的幾何意義,並希望能夠為讀者提供對 SEGA 演算法更好的直觀理解。然而,在對演算法進行分析時,收斂的理論結果也很重要。原文作者給出了許多證明,從而得出了該演算法收斂性的推論。此外,他們展示了進一步的擴充套件方法,與投影梯度下降相比會更快。如果這篇文章足夠吸引讀者的話,筆者會把這些細節留給他們自己去閱讀。

總結和延伸閱讀

出於以下的原因,我在本文中選擇了 3 篇論文進行分析並和大家分享。

就我個人而言,在嘗試解決一個最佳化問題的過程中,我經常會經歷這樣的過程:定義和形式化表達問題,確定解決問題的演算法,推匯出預期的結果或解,並最終實現演算法。很多時候,到目前為止一切似乎都很完美,但是一旦我開始進行模擬,往往一切都會出乎意料之外。

很多時候,我發現發生這些意外錯誤的原因來自於該問題的一些最小的細節,即演算法陷入了一個鞍點,但找不到一個下降方向, 下一輪迭代的解並不在可行解空間中,因此需要被投影回來,收斂太慢是因為我不確定步長應該是多少,收斂太慢,是因為使用隨機梯度下降時的方差等問題。

因此,我認為這三篇論文似乎可以涵蓋解決最佳化問題的一些細節。最後,我希望在每一篇論文的評論中,讀者應該學到以下幾點。

論文:Escaping Saddle Points in Constrained Optimization

  • 當我們要解決一個帶約束的最佳化問題時,為了跳出鞍點,我們必須找到一個可行的梯度下降的方向。

  • 為了找到這個可行的梯度下降的方向,我們可以形式化定義另一個最佳化問題,即找到「最優」的梯度下降方向。

論文:Third-order Smoothness Helps: Even Faster Stochastic Optimization Algorithms for Finding Local Minima

  • 為了跳出鞍點,我們需要知道一個可行的下降方向。在這列,我們可以使用上一篇論文中描述的演算法找到這種方法。

  • 如果可以保證目標函式的三階平滑性,我們可以在更大的步長下,更快地從這個鞍點上向梯度下降的方向跳出來。

  • 這個步長取決於 Lipschitz 常數和準確率引數。一旦確定了步長,我們就將在隨機梯度下降演算法中使用它。

論文:SEGA: Variance Reduction via Gradient Sketching

  • 在隨機梯度下降法中,我們希望減小估計梯度的方差(從而使每個估計與真實梯度相差不遠)。

  • SEGA 方差縮減方法採用迭代隨機演算法。這是透過將一個困難(在計算方面)的問題簡化為一個容易(或更輕鬆的問題)的問題,利用草圖和投影法來解這個問題。

  • 在平滑假設下,隨著迭代逼近最優點,每一步的梯度估計都更接近真實梯度。即梯度估計值逐漸提高,從而達到方差縮減的目的。

  • 草圖和投影法在求解線性系統時也非常有用。因此,幾何直覺對於理解這種方法是很重要的,這樣它就可以應用於我們可能遇到的其他問題。

最後,我還列出了一些與上述問題或其他實際實施問題相關的有趣論文。我建議有興趣的讀者可以閱讀一下這些論文:

  • Accelerated Stochastic Matrix Inversion: General Theory and Speeding up BFGS Rules for Faster Second-Order Optimization:為實現更快的二階最佳化提出的通用理論以及對 BFGS 規則(一種擬牛頓演算法)的加速。文介紹了許多梯度下降方法,包括計算 Hessian 矩陣的 Hessian 來提供目標函式的曲率資訊。計算 Hessian 的開銷是巨大的,這是求解最最佳化問題時的關鍵部分。因此,我強烈推薦讀者閱讀一下本文。本文與前面介紹的「SEGA: Variance Reduction via Gradient Sketching」一文相得益彰。所以有興趣的讀者最好仔細閱讀一下這篇文章。

  • Distributed Stochastic Optimization via Adaptive SGD:實際上,隨機梯度下降是一系列非常難以並行處理的演算法。在本文中,作者透過將自適應性與方差縮減技術相結合提出了一種高效的分散式隨機最佳化方法。

  • Adaptive Methods for Nonconvex Optimization:依賴於對過去的平方梯度的指數移動均值進行梯度衰減的自適應梯度下降演算法。作者針對非凸隨機最佳化問題,提出了一種新的分析方法,描述了增加 minibatch 規模的效果。這篇論文很有趣,因為它很實用。

  • Adaptive Negative Curvature Descent with Applications in Non-convex Optimization:在討論了透過一個負曲率下降的方向跳出鞍點的重要性的基礎上,本文提出了一種在負曲率下降方向的質量與計算負曲率的複雜度之間折中的辦法。同樣,這也是一種非常實用的最佳化方法。因此,我建議感興趣的讀者仔細閱讀一下這篇文章。

相關文章