我們證明了梯度方法最快的收斂速度只能是 O(1/k2)(沒有強凸假設的話),但是前面的方法最多隻能達到 O(1/k) 的收斂速度,那麼有沒有方法能達到這一極限呢?有!這一節要講的**加速近似梯度方法(APG)**就是。這個方法的構造非常的巧妙,證明過程中會發現每一項都恰到好處的抵消了!真不知道作者是怎麼想出來這麼巧妙地方法,各位可以看看證明過程自行體會。
1. 加速近似梯度方法
首先說我們要考慮的優化問題形式還是
minimize f(x)=g(x)+h(x)
其中 g 爲光滑項,dom g=Rn,h 爲不光滑項,且爲閉的凸函數,另外爲了證明梯度方法的收斂性,跟前面類似,我們需要引入 Lipschitz-smooth 條件與強凸性質:
2LxTx−g(x),g(x)−2mxTxconvex
其中 L>0,m≥0,m 可以等於 0,此時就相當於沒有強凸性質。
然後我們就來看看 APG(Accelerated Proximal Gradient Methods) 方法到底是怎麼下降的。首先取 x0=v0,θ0∈(0,1],對於每次迭代過程,包括以下幾個步驟:
- 求 θk:tkθk2=(1−θk)γk+mθk where γk=tk−1θk−12
- 更新 xk,vk:
yxk+1vk+1=xk+γk+mθkθkγk(vk−xk)(y=x0 if k=0)=proxtkh(y−tk∇g(y))(★)=xk+θk1(xk+1−xk)
這裏面的關鍵就是上面的 (★) 式,對比前面講過的近似梯度下降法實際上是
xk+1=proxtkh(xk−tk∇g(xk))
所以這裏實際上主要的變化就是將 xk 換成了 y,那麼 y 跟 xk 又有什麼不同呢?
y=xk+γk+mθkθkγk(vk−xk)=xk+βk(xk−xk−1)βk=γk+mθkθkγk(θk−11−1)=tk−1θk+tkθk−12tkθk−1(1−θk−1)
可以看到 y=xk+βk(xk−xk−1) 實際上就是在 xk 的基礎上增加了一個**“動量(Momentum)”**,如下圖所示
我們自然的要關注 βk,θk 的大小以及有什麼性質。首先對於參數 θk 它是根據二次方程一步步迭代出來的
tkθk2=(1−θk)tk−1θk−12+mθk
可以有幾個主要結論:
- 如果 m>0 且 θ0=mt0,那麼有 θk=mtk,∀k
- 如果 m>0 且 θ0≥mt0,那麼有 θk≥mtk,∀k
- 如果 mtk<,,那麼有 θk<1
下面可以看幾個關於 θk,βk 隨着迭代次數 k 的變化:
如果我們取前面的 APG 方法中的 m=0,然後消掉中間變量 vk,就可以得到 FISTA(Fast Iterative Shrinkage-Thresholding Algorithm) 算法
yxk+1=xk+θk(θk−11−1)(xk−xk−1)(y=x0 if k=0)=proxtkh(y−tk∇g(y))
2. 收斂性分析
前面已經瞭解了基本原理,下面需要證明一下爲什麼他可以達到 O(1/k2) 的收斂速度。作爲類比,我們先回憶一下之前是怎麼證明梯度方法/近似梯度方法的收斂性的?
(GD)⟹(SD)(PD)⟹f(x+)−f⋆≤∇f(x)T(x−x⋆)−2t∥∇f(x)∥22f(x+)−f⋆≤2t1(∥x−x⋆∥22−∥∥x+−x⋆∥∥22)2t(f(x)−f⋆)≤∥x−x⋆∥22−∥∥x+−x⋆∥∥22+t2∥g∥22f(x+)≤f(z)+Gt(x)T(x−z)−2t∥Gt(x)∥22−2m∥x−z∥22f(x+)−f⋆≤2t1(∥x−x⋆∥22−∥∥x+−x⋆∥∥22)
對於這一節的 APG 方法,證明思路是首先證明下面的迭代式子成立
f(xi+1)−f⋆+2γi+1∥vi+1−x⋆∥22≤(1−θi)(f(xi)−f⋆+2γi∥vi−x⋆∥22) if i≥1
對比後發現實際上之前我們考慮的是 f(x+)−f⋆ 的迭代式子,而這裏我們加了一個小尾巴,考慮 f(x+)−f⋆+2γi+1∥vi+1−x⋆∥22 的收斂速度。證明一會再說,有了這個迭代關係式,那麼就可以有
f(xk)−f⋆≤λk((1−θ0)(f(x0)−f⋆)+2γ1−mθ0∥x0−x⋆∥22)≤λk((1−θ0)(f(x0)−f⋆)+2t0θ02∥x0−x⋆∥22)
其中 λ1=1,λk=∏i=1k−1(1−θi) for k>1,如果能證明 λk∼O(1/k2) 就能證明收斂速度了。好了,下面就是非常巧妙而又繁瑣的證明過程了。
這個證明過程很繁瑣,爲了更容易順下來,這裏列出來其中幾個關鍵的等式/不等式(爲了簡便省略了下標):
- γ+−mθ=(1−θ)γ(易證)
- γ+v+=γ+v+mθ(y−v)−θGt(y)
- f(x+)−f⋆≤(1−θ)(f(x)−f⋆)−Gt(y)T((1−θ)x+θx⋆−y)−2t∥Gt(y)∥22−2mθ∥x⋆−y∥22
- 2γ+∥∥v+−x⋆∥∥22≤2γ+−mθ∥v−x⋆∥22+Gt(y)T(θx⋆+(1−θ)x−y)+2t∥Gt(y)∥22+2mθ∥x⋆−y∥22
(3,4) 條結合就能得到上面的迭代關係式,很多項剛好消掉。下面就是要證明 λk∼O(1/k2):
γk+1=(1−θk)γk+mθkλi+1=(1−θi)λi=γiγi+1−θimλi≤γiγi+1λi⟹λk≤γk/γ1λi+11−λi1≥2λi+1θi=21γ1ti
然後就可以有
λk≤(2+γ1∑i=1k−1ti)24=(2t0+θ0∑i=1k−1ti)24t0
如果取 t0=tk=1/L,θ0=1,則有
λk≤(k+1)24
如果有強凸性質,也即 m>0,那麼取 θ0≥mt0⟹θk≥mtk
λk≤Πi=1k−1(1−mti)
這就可以變成線性收斂了。
最後給我的博客打個廣告,歡迎光臨
https://glooow1024.github.io/
https://glooow.gitee.io/
前面的一些博客鏈接如下
凸優化專欄
凸優化學習筆記 1:Convex Sets
凸優化學習筆記 2:超平面分離定理
凸優化學習筆記 3:廣義不等式
凸優化學習筆記 4:Convex Function
凸優化學習筆記 5:保凸變換
凸優化學習筆記 6:共軛函數
凸優化學習筆記 7:擬凸函數 Quasiconvex Function
凸優化學習筆記 8:對數凸函數
凸優化學習筆記 9:廣義凸函數
凸優化學習筆記 10:凸優化問題
凸優化學習筆記 11:對偶原理
凸優化學習筆記 12:KKT條件
凸優化學習筆記 13:KKT條件 & 互補性條件 & 強對偶性
凸優化學習筆記 14:SDP Representablity
最優化方法 15:梯度方法
最優化方法 16:次梯度
最優化方法 17:次梯度下降法
最優化方法 18:近似點算子 Proximal Mapping
最優化方法 19:近似梯度下降
最優化方法 20:對偶近似點梯度下降法
最優化方法 21:加速近似梯度下降方法
最優化方法 22:近似點算法 PPA
最優化方法 23:算子分裂法 & ADMM
最優化方法 24:ADMM