《python深度学习》对于动量法的解释

《python深度学习》对于动量法的解释

动量解决了 SGD 的两个问题:收敛速度和局部极小点。
图 2-13 给出了损失作为网络参数的函数的曲线。

《python深度学习》对于动量法的解释

如你所见,在某个参数值附近,有一个局部极小点(local minimum):在这个点附近,向左移动和向右移动都会导致损失值增大。如果使用小学习率的SGD 进行优化,那么优化过程可能会陷入局部极小点,导致无法找到全局最小点。

使用动量方法可以避免这样的问题,这一方法的灵感来源于物理学。有一种有用的思维图像,就是将优化过程想象成一个小球从损失函数曲线上滚下来。如果小球的动量足够大,那么它不会卡在峡谷里,最终会到达全局最小点。

动量方法的实现过程是每一步都移动小球,不仅要考虑当前的斜率值(当前的加速度),还要考虑当前的速度(来自于之前的加速度)。这在实践中的是指,更新参数w 不仅要考虑当前的梯度值,还要考虑上一次的参数更新。