Nesterov加速梯度下降(Nesterov Accelerated Gradient,简称NAG)是一种优化算法,由Yurii Nesterov在1983年提出。它是一种改进的梯度下降法,通过引入一个“动量”项,使得参数更新在梯度方向上有一定的“惯性”,从而加速收敛。NAG算法在深度学习中被广泛应用,尤其是在训练深度神经网络时,NAG算法往往能够比传统的梯度下降法更快地找到最优解。
NAG算法的基本思想是在计算梯度时,不仅考虑当前位置,还考虑之前的更新方向。具体来说,传统的梯度下降法在每一步都是根据当前位置的梯度来更新参数,而NAG算法则是根据当前位置和之前的更新方向的加权平均来计算梯度,然后再更新参数。这样做的好处是,如果之前的更新方向和当前的梯度方向一致,那么NAG算法的更新步长会比传统的梯度下降法大,从而加速收敛;如果之前的更新方向和当前的梯度方向不一致,那么NAG算法的更新步长会比传统的梯度下降法小,从而减少震荡。
NAG算法的具体步骤如下:
-
初始化参数θ和动量v。
-
在每一步,首先计算“预测”的参数值θ’ = θ - γv,其中γ是动量因子,通常取值为0.9。
-
然后,计算在θ’处的梯度g = ∇f(θ’)。
-
更新动量v =