Nesterovs accelerated method:gradient descent & mirror descent的線性耦合
本文是「Fenchel-Lengendre Duality觀點下的優化演算法們」系列的第二篇文章。第一篇前言文章的鏈接:Fenchel-Lengendre Duality觀點下的優化演算法們(I):前言。
我們知道,著名的Nesterov加速演算法由Nesterov在83年即提出,並證明了廣泛情形下這種一階演算法(即只用到gradient信息)在凸優化問題中的收斂速度達到最優(match information lower bound)。然而,這麼多年以來,為何形式上一個簡單變化(比如,基於gradient descent)之後的演算法就能將gradient descent的收斂速度整整提升一個量級,達到最優,這背後隱含的原理一直是很多人難以理解和解釋的。我記得之前在Prof Robert Freund課上他講Nemirovski回憶第一次見到Nesterov這個work的時候,「I was very surprised that a seemingly mere algebraic trick can make a real difference in the algorithm in terms of its convergence behavior」... "It was a beautifully written proof that I felt like I didnt understand whats behind."
本文旨在給出Nesterov加速演算法之所以能對常規一階演算法加速的一種algebraic解釋,這種觀點來自於將此種方法intepret成gradient descent(primal view)和mirror descent(dual view)的線性耦合(linear coupling)。這種觀點是由 @Zeyuan AllenZhu 和Lorenzo Orecchia在14年嚴格提出(見下面文章鏈接)。
Allen-Zhu, Zeyuan, and Lorenzo Orecchia. "Linear Coupling: An Ultimate Unification of Gradient and Mirror Descent." LIPIcs-Leibniz International Proceedings in Informatics. Vol. 67. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2017.
自然,這並不是唯一一種intepret為何這種方法可以加速一般一階演算法的觀點。比如,Nesterov最早基於potential function的proof: Nesterov, Yurii. "A method of solving a convex programming problem with convergence rate O (1/k2)." Soviet Mathematics Doklady. Vol. 27. No. 2. 1983.
基於微分方程的interpretation(看成離散化的二階ODE): Su W, Boyd S, Candes EJ. A differential equation for modeling Nesterov』s accelerated gradient method: theory and insights. Journal of Machine Learning Research. 2016 Jan 1;17(153):1-43.
基於橢圓法(ellipsoid method)的幾何加速演算法(形式上已經和Nestrov的原始方法區別很大了):Bubeck S, Lee YT, Singh M. A geometric alternative to Nesterovs accelerated gradient descent. arXiv preprint arXiv:1506.08187. 2015 Jun 26.
其實這些其它的觀點也很有意思,不過和本文的觀點出發點完全不同,所以本篇文章不會涉及。如感興趣的人多(請評論/給我留言)可能我之後也可以介紹Boyd,Candes,Bubeck等人的觀點。
本節我們給出一些high level的對於gradient descent(GD)和mirror descent(MD)的相關討論。
我們考慮一般情形的凸優化問題:函數 是一個在閉凸集 上的可微凸函數,並且我們假設 足夠光滑:L-smooth, . (我們假設讀者已經閱讀過系列文章(I)和專欄文章Mirror descent: 統一框架下的first order methods,具有相關預備知識。這裡其實用的是一致的定義,也不會再詳細定義dual norm這些具體概念了)
首先我們指出,GD在primal view下的本質是利用convexity minimize一個quadratic upper bound(同樣,這點在專欄文章里已經有詳細討論)。具體來說,固定步長 的gradient descent的更新步驟可以寫成:
定義 .
證明GD收斂的核心引理便是每一步演算法迭代都能降低當前目標函數的值,即
,如果考慮特殊情形 那麼 .
定義 是 上的minimizer,考慮歐式模(L2 norm,最簡單的情形),由此我們有GD的收斂性定理:
或者說
我們注意到很顯然的一點,GD在gradient值( )很大的時候會很有效,因為核心引理保證了這樣每一步使目標函數值降低的值也會很大,反之即在比較flat的區域則就對目標函數值的下降會比較緩慢。
接下來我們簡單回顧MD。之前的專欄文章里我們已經指出MD同樣適用於非光滑的凸優化,所以這裡我們假設 僅僅是Lipschitz continuous: 。步長 的GD演算法的更新步驟可以寫成:( 是Bregman divergence function,不清楚定義的請見之前的文章)
我們指出,MD的核心引理是minimize dual averaging lower bound。具體來說,
,
注意到第一個不等號我們利用了 convexity的一個lower bound,第二個式子我們利用了3-point property(見MD的專欄文章)。這一項 相當於是online optimization里第 步 選擇 所導致的regret。我們將 從0到T-1求和,裂項相消就有
注意 ,令 是 的一個上界,另 ,則有MD的收斂性定理:
或者說 .
注意這裡我們MD的收斂速度比GD要慢一個量級,因為我們考慮了非光滑情形(回憶系列 (I),即使primal光滑的情況下dual問題也可能不光滑),即每一步MD甚至不一定會降低目標函數值。至於光滑情形下的分析和GD類似,具有同樣速度的收斂速度,詳情請見專欄的MD文章。
同樣我們指出一個很顯然的觀察, MD與GD相反,在(sub)gradient比較小的時候更加有效,這是因為核心引理里的regret實際上在這種情況才比較小,反之可能會很大。
基於上一節的討論,那麼一個自然的思路是能否把某種意義上具有互補特性的GD與MD結合,比如我們的問題是考慮在給定 滿足 的情況下,找到 使得 (從 到 的步驟往往是一階演算法們耗時最多的過程),然後我們的演算法就是設定一個閾值 ,然後如果 我們就迭代GD,反之就迭代MD。簡單起見,先假設我們的演算法觀察到的gradient值永遠是大於K,或是小於K的,這樣T步GD需要 達到目標,而T步MD需要 ,我們的目標就變成了找到一個最好的 使得 .
當然這個方法並不實用,只能是一個思想實驗。因為實際情況下顯然不可能觀察到的gradient值永遠在閾值的一邊,這種情況下這種演算法顯然會很差,因為可能GD跑了幾步剛降低了一些目標函數值結果gradient值很小了,這時候MD接入,可能反而又開始增加目標函數值,也就是說這個naive演算法其實是完全可能不收斂的。那麼自然經過思考一個更好的解決方案便是線性耦合(linear coupling)!具體來說,我們第t步迭代的時候應該是同時對 做GD和MD,然後求一個加權平均值作為 !而這,就是Nesterov基於momentum的加速思想的一種algebraic詮釋。考慮題圖,Nesterov在primal space上的演算法可以想像成有 是拖著一塊磁鐵的GD演算法,即除了要往負梯度方向走以外,它的運動同時具有比較大的慣性。
從algebraic的角度,那麼我們的加速演算法便可以寫成如下迭代過程:
類似於前面的 ,這裡我們需要仔細定出 來達到一個真正數量級上的加速。在Zeyuan和Lorenzo的工作里,便是具體確定了 和 的值,用全新的proof recover了Nesterov當年的結果。具體來說,在改變步長的情況下,在第t步選擇 ,我們有
或者說
具體的proof有興趣的同學可以自行參閱他們的paper。
接下來的計劃可能是介紹隨機一階演算法們和如何對他們進行加速。我個人最近在集中研究multi-arm bandit相關的問題,也可能會寫一些自己的總結。敬請期待!
推薦閱讀:
※單機事務不同隔離級別的並發問題整理
※分散式Snapshot和Flink Checkpointing簡介
※演算法導論第二課——漸進分析
※用2個棧模擬一個隊列
※二叉搜索樹的後序遍歷序列