Momentum :
SGD方法的一个缺点是,其更新方向完全依赖于当前的batch,因而其更新十分不稳定。当我们使用SGD训练参数时,有时候会下降的非常慢,并且可能会陷入到局部最小值中。momentum的引入就是为了解决了SGD存在的不足,特别是对于高曲率、小但一致的梯度。动量的主要思想是积累了之前梯度指数级衰减的移动平均(前面的指数加权平均)即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性。
# Momentum update
v = momentum * v - learning_rate * dx # integrate velocity
W += v # integrate position