SGD中的Nesterov动量方法是一种结合了Nesterov梯度加速思想的随机梯度下降优化算法,旨在通过调整参数更新方式来加速收敛并提高优化稳定性。具体介绍如下:算法来源与核心思想Nesterov梯度加速源于非随机梯度的迭代算法,其核心思想是在计算梯度前对参数进行“前瞻”调整,使参数更新能更早地感知到未来位置的梯度信息,从而提升收敛速度。在SGD中引入Nesterov动量后,算法通过调整参数更新公式,在随机梯度下降的框架下实现了类似Nesterov加速的效果。初始化状态迭代次数:$k=0$。初始动量系数:$a_{0}=1$。初始参数:$theta_{-1}=y_{0}$($theta_{-1}$为初始参数值,$y_{0}$为初始点)。任意常数:$z$为任意数。初始误差项:$epsilon_{-1}=frac{left | y_{0}-z right |}{left | nabla f(y_{0})-nabla f(z) right |}$。迭代更新方式学习率更新:$varepsilon_{t}=2^{-i}varepsilon_{t-1}$,其中$i$为满足$f(y_{t})-f(y_{t}-2^{-i}varepsilon_{t-1} nabla f(y_{t}))geq 2^{-i}varepsilon_{t-1}frac{left | nabla f(y_{t}) right |^{2}}{b}$的最小位置。学习率$varepsilon_{t}$恒小于优化轨迹的$nabla f$的Lipshitz系数。若倒数的Lipshitz系数等于$L$,则对于任意$t$,设定$varepsilon_{t}=1/L$在理论上可行(但此选择假设$f$中不存在噪声,在随机梯度下降中可能导致学习率过大)。参数更新:计算前瞻点:$theta_{t}=y_{t}-varepsilon_{t} nabla f(y_{t})$。更新动量系数:$a_{t+1}=frac{1+sqrt{4a_{t}^{2}+1}}{2}$。当$t$很大时,$a_{t}approxfrac{t+4}{2}$,$frac{a_{t}-1}{a_{t+1}}$可近似为 - 3(t+5)$。更新参数:$y_{t+1}=theta_{t}+frac{(a_{t}-1)(theta_{t}-theta_{t-1})}{a_{t+1}}$。动量相关定义与更新:定义速度项:$v_{t}equivtheta_{t}-theta_{t-1}$。定义动量衰减系数:$mu_{t}equivfrac{a_{t}-1}{a_{t+1}}$。参数更新公式可改写为:$y_{t}=theta_{t-1}+mu_{t-1}v_{t-1}$,$theta_{t}=theta_{t-1}+mu_{t-1}v_{t-1}-varepsilon_{t-1} nabla f(theta_{t-1}+mu_{t-1}v_{t-1})$,$v_{t}=mu_{t-1}v_{t-1}-varepsilon_{t-1} nabla f(theta_{t-1}+mu_{t-1}v_{t-1})$。收敛性与加速效果收敛性:若$f$为凸函数,则算法满足$f(theta_{t})-f(theta^{})leqfrac{4Lleft | theta_{-1}-theta^{} right |^{2}}{(t+2)^{2}}$,其中$theta^{*}$为最优参数值。加速效果:动量应用在线性函数时,第$i$步的动量与$i$的距离成正比。使用动量的$N$步相当于横穿了一个很长的距离( + 2+cdots+N = O(N^{2})$),从而实现了加速收敛。



































