在梯度下降时,学习率对搜索最小值产生一定的影响。
当学习率过大时,容易产生震荡,错过最优值;当学习率过小时,收敛速度就会十分缓慢。
冲量就可以缓解这一问题。
在普通的梯度下降法x += v
中,每次x
的更新量v
为v = - dx * lr
,其中dx
为目标函数func(x)
对x
的一阶导数。当使用冲量时,则把每次x
的更新量v
考虑为本次的梯度下降量- dx * lr
与上次x
的更新量v
乘上一个介于[0, 1]
的因子momentum
的和,即v = - dx * lr + v * momemtum
。
- 当本次梯度下降
- dx * lr
的方向与上次更新量v
的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。 - 当本次梯度下降
- dx * lr
的方向与上次更新量v
的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。
所以动量在学习率较小时可以起到一个加速收敛的作用,在学习率过大时减小收敛时的震荡幅度。
链接:https://www.jianshu.com/p/58b3fe300ecb