凸优化学习笔记 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)”**,如下图所示

凸优化学习笔记 21:加速近似梯度下降方法

我们自然的要关注 β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 的变化:

凸优化学习笔记 21:加速近似梯度下降方法

如果我们取前面的 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:加速近似梯度下降方法