一般的梯度下降算法的收敛速率为
o(1/t).
1.简介:
加速梯度算法(AGD)是梯度算法(GD)的一个改进的版本。Nesterov 在1983年首次提出。人们已经证明AGD算法是所有基于梯度算法(或者说一阶)算法中最好的方法。然而原始的AGD算法仅能处理光滑的凸优化问题。最新的进展是,将AGD扩展到了更广泛类型的凸优化问题:
minxf(x)+g(x)
其中 f(x)是闭凸函数。同样可以获得相似的收敛速率。
2.算法
AGD算法可以概括为算法1:,其中有两种方式确定步长γ
首先,类似于梯度下降算法,为了确保收敛率,我们可以设置γ。其次,我们可以使用直线搜索,自适应地确定步长,满足:
f(xk+1)≤myk,γ(xk+1)
其中:
xk+1=proxγg(⋅)(yk−γ▽f(yk))
proxγg(⋅)(⋅)表示近端操作(近似操作)。即:
proxγg(⋅)(v)=argminz∈Rn12γ||v−z||2+g(z)
通常给定γ.
注意:序列{tk}满足下面的三个属性:
- {tk} 是正的,并且递增
- tk+1≥tk+12
- fract0−1t1=0
3.收敛率:
AGD 是最优的基于梯度的方法。因为它提供了最优的收敛率。假定满足下面的Lipschitz 条件。
假设1. 假定平滑的凸函数f(x)拥有一个Lipschitz梯度。也就是说存在常数L,满足:
f(y)≤f(x)+<▽f(x),y−x>+L2||y−x||2x,y
在这个假设下,如果步长选择的足够小,或者通过直线搜索确定,那么我们有下面的收敛率:
F(xk)−F∗≤O(1k2)
另外一种解释方法:
首先定义下面的序列:
λ0=0,λs=1+1+4λ2s−1−−−−−−−−√2,and,γs=1−λsλs+1
注意: γs≤0是任意的。
ys+1=xs−1β▽f(xs)
xs+1=(1−γs)ys+1+γsys
换句话说:
Nesterov加速梯度下降法执行简单的梯度下降步骤,从xs.
参考文献:
- https://blogs.princeton.edu/imabandit/2013/04/01/acceleratedgradientdescent/
[ORF523: Nesterov’s Accelerated Gradient Descent] - CSC 576: Accelerated Gradient Descent Algorithm
- Gradient methods for minimizing composite objective function [Nesterov2007]