当前位置:   article > 正文

加速梯度下降法_nesterov加速梯度下降法

nesterov加速梯度下降法

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:,其中有两种方式确定步长γ
这里写图片描述
首先,类似于梯度下降算法,为了确保收敛率,我们可以设置γ为一个足够小的数,特别的,γ(||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λs122,and,γs=1λsλs+1

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

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

换句话说:
Nesterov加速梯度下降法执行简单的梯度下降步骤,从xsys+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]
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/687861
推荐阅读
相关标签
  

闽ICP备14008679号