在Batch Gradient Descent及Mini-batch Gradient Descent, Stochastic Gradient Descent(SGD)算法中,每一步优化相对于之前的操作,都是独立的。每一次迭代开始,算法都要根据更新后的Cost Function来计算梯度,并用该梯度来做Gradient Descent。
Momentum Gradient Descent相较于前三种算法,虽然也会根据Cost Function来计算当前的梯度,但是却不直接用此梯度去做Gradient Descent。而是赋予该梯度一个权值,并综合考虑之前N次优化的梯度,得到一个加权平均的移动平均值(Weighted Moving Average),并以此来作为Gradient Descent的参数。
这里使用Exponential Moving Average(EMA)来计算该加权平均值,公式为:
dW为本次计算出的梯度值,beta是衰减因子。如果将上式展开,可以得到:
根据β值的大小,可以得出大致纳入考虑范围的步数为1/(1-β),β值越大,步数约多,反之则窗口约窄。
EMA算法的优点:
1.EMA会减小算法的震荡
2.在实现上也非常有效率,比起Simple Moving Average,EMA所用的存储空间小,并且每次迭代中使用一行代码即可实现。
不过,β成为了除α外的又一个Hyperparameter,调参要更难了。
Gradient Descent with Momentum
原文:https://www.cnblogs.com/rhyswang/p/9284171.html