最優化方法 21:加速近似梯度下降方法

我們證明了梯度方法最快的收斂速度只能是 O(1/k2)O(1/k^2)(沒有強凸假設的話),但是前面的方法最多隻能達到 O(1/k)O(1/k) 的收斂速度,那麼有沒有方法能達到這一極限呢?有!這一節要講的**加速近似梯度方法(APG)**就是。這個方法的構造非常的巧妙,證明過程中會發現每一項都恰到好處的抵消了!真不知道作者是怎麼想出來這麼巧妙地方法,各位可以看看證明過程自行體會。

1. 加速近似梯度方法

首先說我們要考慮的優化問題形式還是
minimize f(x)=g(x)+h(x) \text{minimize }\quad f(x)=g(x)+h(x)
其中 gg 爲光滑項,dom g=Rn\text{dom }g=R^nhh 爲不光滑項,且爲閉的凸函數,另外爲了證明梯度方法的收斂性,跟前面類似,我們需要引入 Lipschitz-smooth 條件與強凸性質:
L2xTxg(x),g(x)m2xTxconvex \frac{L}{2}x^Tx-g(x),\quad g(x)-\frac{m}{2}x^Tx \quad \text{convex}
其中 L>0,m0L>0,m\ge0mm 可以等於 0,此時就相當於沒有強凸性質。

然後我們就來看看 APG(Accelerated Proximal Gradient Methods) 方法到底是怎麼下降的。首先取 x0=v0,θ0(0,1]x_0=v_0,\theta_0\in(0,1],對於每次迭代過程,包括以下幾個步驟:

  1. θk\theta_kθk2tk=(1θk)γk+mθk where γk=θk12tk1\frac{\theta_{k}^{2}}{t_{k}}=\left(1-\theta_{k}\right) \gamma_{k}+m \theta_{k} \quad \text { where } \gamma_{k}=\frac{\theta_{k-1}^{2}}{t_{k-1}}
  2. 更新 xk,vkx_k,v_k

y=xk+θkγkγk+mθk(vkxk)(y=x0 if k=0)xk+1=proxtkh(ytkg(y))()vk+1=xk+1θk(xk+1xk) \begin{aligned} y &=x_{k}+\frac{\theta_{k} \gamma_{k}}{\gamma_{k}+m \theta_{k}}\left(v_{k}-x_{k}\right) \quad\left(y=x_{0} \text { if } k=0\right) \\ x_{k+1} &=\operatorname{prox}_{t_{k} h}\left(y-t_{k} \nabla g(y)\right) \quad(\bigstar)\\ v_{k+1} &=x_{k}+\frac{1}{\theta_{k}}\left(x_{k+1}-x_{k}\right) \end{aligned}

這裏面的關鍵就是上面的 ()(\bigstar) 式,對比前面講過的近似梯度下降法實際上是
xk+1=proxtkh(xktkg(xk)) x_{k+1} =\operatorname{prox}_{t_{k} h}\left(x_k-t_{k} \nabla g(x_k)\right)
所以這裏實際上主要的變化就是將 xkx_k 換成了 yy,那麼 yyxkx_k 又有什麼不同呢?
y=xk+θkγkγk+mθk(vkxk)=xk+βk(xkxk1)βk=θkγkγk+mθk(1θk11)=tkθk1(1θk1)tk1θk+tkθk12 y=x_{k}+\frac{\theta_{k} \gamma_{k}}{\gamma_{k}+m \theta_{k}}\left(v_{k}-x_{k}\right)=x_{k}+\beta_{k}\left(x_{k}-x_{k-1}\right) \\ \beta_{k}=\frac{\theta_{k} \gamma_{k}}{\gamma_{k}+m \theta_{k}}\left(\frac{1}{\theta_{k-1}}-1\right)=\frac{t_{k} \theta_{k-1}\left(1-\theta_{k-1}\right)}{t_{k-1} \theta_{k}+t_{k} \theta_{k-1}^{2}}
可以看到 y=xk+βk(xkxk1)y=x_{k}+\beta_{k}\left(x_{k}-x_{k-1}\right) 實際上就是在 xkx_k 的基礎上增加了一個**“動量(Momentum)”**,如下圖所示

在這裏插入圖片描述

我們自然的要關注 βk,θk\beta_k,\theta_k 的大小以及有什麼性質。首先對於參數 θk\theta_k 它是根據二次方程一步步迭代出來的
θk2tk=(1θk)θk12tk1+mθk \frac{\theta_{k}^{2}}{t_{k}}=\left(1-\theta_{k}\right) \frac{\theta_{k-1}^{2}}{t_{k-1}}+m \theta_{k}
可以有幾個主要結論:

  1. 如果 m>0m>0θ0=mt0\theta_0=\sqrt{mt_0},那麼有 θk=mtk,k\theta_k=\sqrt{mt_k},\forall k
  2. 如果 m>0m>0θ0mt0\theta_0\ge\sqrt{mt_0},那麼有 θkmtk,k\theta_k\ge\sqrt{mt_k},\forall k
  3. 如果 mtk<,mt_k<,,那麼有 θk<1\theta_k<1

下面可以看幾個關於 θk,βk\theta_k,\beta_k 隨着迭代次數 kk 的變化:

在這裏插入圖片描述

如果我們取前面的 APG 方法中的 m=0m=0,然後消掉中間變量 vkv_k,就可以得到 FISTA(Fast Iterative Shrinkage-Thresholding Algorithm) 算法
y=xk+θk(1θk11)(xkxk1)(y=x0 if k=0)xk+1=proxtkh(ytkg(y)) \begin{aligned} y &=x_{k}+\theta_{k}\left(\frac{1}{\theta_{k-1}}-1\right)\left(x_{k}-x_{k-1}\right) \quad\left(y=x_{0} \text { if } k=0\right) \\ x_{k+1} &=\operatorname{prox}_{t_{k} h}\left(y-t_{k} \nabla g(y)\right) \end{aligned}

2. 收斂性分析

前面已經瞭解了基本原理,下面需要證明一下爲什麼他可以達到 O(1/k2)O(1/k^2) 的收斂速度。作爲類比,我們先回憶一下之前是怎麼證明梯度方法/近似梯度方法的收斂性的?
(GD)f(x+)ff(x)T(xx)t2f(x)22f(x+)f12t(xx22x+x22)(SD)2t(f(x)f)xx22x+x22+t2g22(PD)f(x+)f(z)+Gt(x)T(xz)t2Gt(x)22m2xz22f(x+)f12t(xx22x+x22) \begin{aligned}(GD)\quad& f\left(x^{+}\right)-f^{\star} \leq \nabla f(x)^{T}\left(x-x^{\star}\right)-\frac{t}{2}\|\nabla f(x)\|_{2}^{2}\\\Longrightarrow &f\left(x^{+}\right)-f^{\star} \leq\frac{1}{2 t}\left(\left\|x-x^{\star}\right\|_{2}^{2}-\left\|x^{+}-x^{\star}\right\|_{2}^{2}\right) \\(SD)\quad& 2 t\left(f(x)-f^{\star}\right) \leq\left\|x-x^{\star}\right\|_{2}^{2}-\left\|x^{+}-x^{\star}\right\|_{2}^{2}+t^{2}\|g\|_{2}^{2} \\(PD)\quad& f\left(x^+\right) \leq f(z)+G_{t}(x)^{T}(x-z)-\frac{t}{2}\left\|G_{t}(x)\right\|_{2}^{2}-\frac{m}{2}\|x-z\|_{2}^{2}\\\Longrightarrow &f\left(x^{+}\right)-f^{\star} \leq \frac{1}{2 t}\left(\left\|x-x^{\star}\right\|_{2}^{2}-\left\|x^{+}-x^{\star}\right\|_{2}^{2}\right)\end{aligned}
對於這一節的 APG 方法,證明思路是首先證明下面的迭代式子成立
f(xi+1)f+γi+12vi+1x22(1θi)(f(xi)f+γi2vix22) if i1 f\left(x_{i+1}\right)-f^{\star}+\frac{\gamma_{i+1}}{2}\left\|v_{i+1}-x^{\star}\right\|_{2}^{2} \\\quad \leq \left(1-\theta_{i}\right)\left(f\left(x_{i}\right)-f^{\star}+\frac{\gamma_{i}}{2}\left\|v_{i}-x^{\star}\right\|_{2}^{2}\right) \quad \text { if } i\ge1
對比後發現實際上之前我們考慮的是 f(x+)ff(x^+)-f^\star 的迭代式子,而這裏我們加了一個小尾巴,考慮 f(x+)f+γi+12vi+1x22f(x^+)-f^\star + \frac{\gamma_{i+1}}{2}\left\|v_{i+1}-x^{\star}\right\|_{2}^{2} 的收斂速度。證明一會再說,有了這個迭代關係式,那麼就可以有
f(xk)fλk((1θ0)(f(x0)f)+γ1mθ02x0x22)λk((1θ0)(f(x0)f)+θ022t0x0x22) \begin{aligned}f\left(x_{k}\right)-f^{\star} & \leq \lambda_{k}\left(\left(1-\theta_{0}\right)\left(f\left(x_{0}\right)-f^{\star}\right)+\frac{\gamma_{1}-m \theta_{0}}{2}\left\|x_{0}-x^{\star}\right\|_{2}^{2}\right) \\& \leq \lambda_{k}\left(\left(1-\theta_{0}\right)\left(f\left(x_{0}\right)-f^{\star}\right)+\frac{\theta_{0}^{2}}{2 t_{0}}\left\|x_{0}-x^{\star}\right\|_{2}^{2}\right)\end{aligned}
其中 λ1=1\lambda_1=1λk=i=1k1(1θi) for k>1\lambda_{k}=\prod_{i=1}^{k-1}\left(1-\theta_{i}\right) \text { for } k>1,如果能證明 λkO(1/k2)\lambda_k\sim O(1/k^2) 就能證明收斂速度了。好了,下面就是非常巧妙而又繁瑣的證明過程了。

這個證明過程很繁瑣,爲了更容易順下來,這裏列出來其中幾個關鍵的等式/不等式(爲了簡便省略了下標):

  1. γ+mθ=(1θ)γ\gamma^+-m\theta=(1-\theta)\gamma(易證)
  2. γ+v+=γ+v+mθ(yv)θGt(y)\gamma^+v^+=\gamma ^+ v+ m\theta(y-v)-\theta G_t(y)
  3. f(x+)f(1θ)(f(x)f)Gt(y)T((1θ)x+θxy)t2Gt(y)22mθ2xy22\begin{aligned} f\left(x^{+}\right)-f^{\star} \leq &(1-\theta)\left(f(x)-f^{\star}\right)-G_{t}(y)^{T}\left((1-\theta) x+\theta x^{\star}-y\right) -\frac{t}{2}\left\|G_{t}(y)\right\|_{2}^{2}-\frac{m \theta}{2}\left\|x^{\star}-y\right\|_{2}^{2} \end{aligned}
  4. γ+2v+x22γ+mθ2vx22+Gt(y)T(θx+(1θ)xy)+t2Gt(y)22+mθ2xy22\begin{aligned} \frac{\gamma^{+}}{2}\left\|v^{+}-x^{\star}\right\|_{2}^{2} \leq & \frac{\gamma^{+}-m \theta}{2}\left\|v-x^{\star}\right\|_{2}^{2}+G_{t}(y)^{T}\left(\theta x^{\star}+(1-\theta) x-y\right) +\frac{t}{2}\left\|G_{t}(y)\right\|_{2}^{2}+\frac{m \theta}{2}\left\|x^{\star}-y\right\|_{2}^{2} \end{aligned}

(3,4) 條結合就能得到上面的迭代關係式,很多項剛好消掉。下面就是要證明 λkO(1/k2)\lambda_k\sim O(1/k^2)
γk+1=(1θk)γk+mθkλi+1=(1θi)λi=γi+1θimγiλiγi+1γiλiλkγk/γ11λi+11λiθi2λi+1=12γ1ti \gamma_{k+1}=(1-\theta_k)\gamma_k+m\theta_k \\\lambda_{i+1}=\left(1-\theta_{i}\right) \lambda_{i}=\frac{\gamma_{i+1}-\theta_{i} m}{\gamma_{i}} \lambda_{i} \leq \frac{\gamma_{i+1}}{\gamma_{i}} \lambda_{i} \Longrightarrow \lambda_k\le \gamma_k/\gamma_1 \\\frac{1}{\sqrt{\lambda_{i+1}}}- \frac{1}{\sqrt{\lambda_{i}}} \ge \frac{\theta_i}{2\sqrt{\lambda_{i+1}}}=\frac{1}{2}\sqrt{\gamma_1t_i}
然後就可以有
λk4(2+γ1i=1k1ti)2=4t0(2t0+θ0i=1k1ti)2 \lambda_{k} \leq \frac{4}{\left(2+\sqrt{\gamma_{1}} \sum_{i=1}^{k-1} \sqrt{t_{i}}\right)^{2}}=\frac{4 t_{0}}{\left(2 \sqrt{t_{0}}+\theta_{0} \sum_{i=1}^{k-1} \sqrt{t_{i}}\right)^{2}}
如果取 t0=tk=1/L,θ0=1t_0=t_k=1/L,\theta_0=1,則有
λk4(k+1)2 \lambda_k\le \frac{4}{(k+1)^2}
如果有強凸性質,也即 m>0m>0,那麼取 θ0mt0θkmtk\theta_0\ge\sqrt{mt_0}\Longrightarrow \theta_k\ge \sqrt{mt_k}
λkΠi=1k1(1mti) \lambda_k \le \Pi_{i=1}^{k-1}(1-\sqrt{mt_i})
這就可以變成線性收斂了。

最後給我的博客打個廣告,歡迎光臨
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章