Nesterov加速梯度下降法是梯度下降法的一个改进的版本。Nesterov在1983年首次提出,人们已经证明加速梯度算法是所有基于梯度算法(或者说一阶)算法中最好的算法之一。然而原始的梯度下降算法仅仅能处理光滑的“凸”优化问题。最新的进展是,将加速梯度下降法拓展到了更广泛类型的“凸”优化问题。Nesterov加速梯度下降法在梯度下降法的基础上,通过结合动量法的思想,优化了寻优的效率。
Nesterov加速梯度下降算法由两步组成:第一步沿着前两步的计算方向计算一个新点,第二步在该新点处做一步近似点梯度迭代,即
下图给出Nesterov加速梯度下降算法的迭代序列图。
可以看到这一做法对每一步迭代的计算量几乎是没有影响的,而带来的效果却是显著的。
注:该方法与梯度下降法一样简单;唯一复杂的是上式中的一种线搜索。事实上,如果没有提前给出目标梯度的Lipschitz常数(当然,实际上从来没有提前给出),那么梯度下降中应该使用相同的线搜索(类似于所谓的Armiljo-Goldstein规则)。
Nesterov加速梯度下降算法的步骤如下: