加速梯度下降法

Nesterov’s Accelerated Gradient Descent

一般的梯度下降算法的收敛速率为
o(1/t) , t 表示迭代的次数。但是人们已经证明了随着迭代次数t的增加。收敛速率可以到达 o(1/t2) .

1.简介:

加速梯度算法(AGD)是梯度算法(GD)的一个改进的版本。Nesterov 在1983年首次提出。人们已经证明AGD算法是所有基于梯度算法(或者说一阶)算法中最好的方法。然而原始的AGD算法仅能处理光滑的凸优化问题。最新的进展是,将AGD扩展到了更广泛类型的凸优化问题:

minxf(x)+g(x)

其中 f(x) 是平滑的凸函数, g(x) 是闭凸函数。同样可以获得相似的收敛速率。

2.算法

AGD算法可以概括为算法1:,其中有两种方式确定步长 γ
加速梯度下降法_第1张图片
首先,类似于梯度下降算法,为了确保收敛率,我们可以设置 γ 为一个足够小的数,特别的, γ(||2f(x)||1)x 。其次,我们可以使用直线搜索,自适应地确定步长,满足:

f(xk+1)myk,γ(xk+1)

其中:
xk+1=proxγg()(ykγf(yk))

proxγg()() 表示近端操作(近似操作)。即:
proxγg()(v)=argminzRn12γ||vz||2+g(z)

通常给定 γ 的情况下,我们先求解: v=ykγf(yk) ,然后再求解 proxγg()(v) .
注意:序列 {tk} 满足下面的三个属性:

  1. {tk} 是正的,并且递增
  2. tk+1tk+12
  3. fract01t1=0 并且 limttk1tk+1=1

3.收敛率:

AGD 是最优的基于梯度的方法。因为它提供了最优的收敛率。假定满足下面的Lipschitz 条件。
假设1. 假定平滑的凸函数 f(x) 拥有一个Lipschitz梯度。也就是说存在常数L,满足:

f(y)f(x)+<f(x),yx>+L2||yx||2x,y

在这个假设下,如果步长选择的足够小,或者通过直线搜索确定,那么我们有下面的收敛率:

F(xk)FO(1k2)

另外一种解释方法:

首先定义下面的序列:

λ0=0,λs=1+1+4λ2s12,and,γs=1λsλs+1

注意: γs0 ,。现在算法通过下面的等式简单的定义,初始点 x1=y1 是任意的。
ys+1=xs1βf(xs)

xs+1=(1γs)ys+1+γsys

换句话说:
Nesterov加速梯度下降法执行简单的梯度下降步骤,从 xs ys+1 。然后通过先前的点 y 给定的方向上,轻微的滑动,进一步的远离ys+1.

参考文献:

  1. https://blogs.princeton.edu/imabandit/2013/04/01/acceleratedgradientdescent/
    [ORF523: Nesterov’s Accelerated Gradient Descent]
  2. CSC 576: Accelerated Gradient Descent Algorithm
  3. Gradient methods for minimizing composite objective function [Nesterov2007]

你可能感兴趣的:(凸优化)