指数加权平均
对于一个序列a[1],a[2]…a[3]
我们定义一个数组v[], 其中
v[0]=0
v[i]= beta*v[i-1] + (1-beta)*a[i]
这个v就叫做a的指数加权平均值
可以直观的理解为v[i]代表着a[i]之前的1/(1-beta)组数据的平均值,例如beta为0.9时,v[n]近似代表着v[n-9]-v[n]的平均值
然而我们可以发现,由于v[0]=0,导致在计算初期,我们的平均值是不准确的,例如v[1]和a[1]差了(1-beta)倍。
因此我们想到对其进行偏差修正:
v_correct[i] = v[i]/(1-betai)
可以看到,初始时1/(1-betai)起到修正效果。当i逐渐增大时,滑动平均值已经趋于准确,而此时的1/(1-betai)也恰好接近于1。
Momentum梯度下降法
对于简单的梯度下降法我们如下更新参数:
w = w - dw*learning_rate
在Momentum梯度下降法中我们令vdw代表dw的指数加权平均值:
w = w - vdw*learning_rate
这样做的好处是:对于简单的梯度下降法,在训练参数时可能出现这样的情况:
在训练的过程中参数变化会产生抖动,