冲量:momentum
参见:http://www.jianshu.com/p/58b3fe300ecb,这个博客里有冲量的python实现的代码和讲解
“冲量”这个概念源自于物理中的力学,表示力对时间的积累效应。
在普通的梯度下降法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
的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。