b站链接 Momentum梯度下降法总是快于标准的梯度下降算法,基本思想就是计算梯度的指数加权平均数,并计算该梯度更新权重。

梯度下降 牛顿法 简介_梯度下降法

如果你要优化成本函数,红点代表最小值的位置,如果用mini-batch梯度下降法,我们可以看到蓝色的线不断向最小值点接近,这种上下摆动减慢了梯度下降法的速度,这样就无法使用更大的学习率,如果学习率过大,结果可能会偏离函数的范围,未来避免脱离最小值,只能选择较小的学习率。

Momentum梯度下降法:
在每次迭代中,确切来说在第t次迭代的过程中,用现有的mini-batch计算dw、db,但是在动量梯度下降算法,我们计算dw和db的移动平均数,即:
v_dw=β * v_dw+(1-β) * dw;v_db=β*v_db+(1-β)*db,
更新权重时,w=w-α * v_dw,b=b-α * v_db
这样就可以减缓梯度下降的幅度。如果平均这些梯度,你会发现这些纵轴上的摆动平均值接近于0,所以在纵轴方向,你希望放慢一点,但是在横轴方向,所以的微分都指向横轴方向,因此横轴方向的平均值仍然很大,因此用算法几次迭代后,你会发现Momentum梯度下降法最终在纵轴方向摆动变小,在横轴方向速度变快。

Momentum的一个本质就是如果你要最小化碗状函数,这些微分项dw、db提供了加速度,而v_dw、v_db这些momentum项就相当于速度,想象你有一个碗,手里有一个球,微分给了这个球一个加速度,球因为有了加速度越滚越快,而因为β稍小于1,有一点的摩擦力,所以球不会无线地加速下去。

梯度下降 牛顿法 简介_最小值_02


这个算法中有两个超参数,一个是学习率α,一个是参数β,β控制着指数加权平均数,最常用的数值是0.9,可以平均前十次的迭代梯度。关于偏差修正,你可以拿v_dw除以1-βt ,实际上,人们不这样做,因为10次迭代之后,移动平均已经过了初始阶段,不再是一个偏差的预测阶段。有时候,可以看到momentum算法中的1-β项不见了,那么相应的α也要相应地修改,实际上,这两种方式效果都不错,只是会影响到学习率的最佳值。