PyTorch笔记--动量(Momentum)
动量是一个能够对抗鞍点和局部最小值的技术。
下面我们来看更新梯度的方法。首先选取一个初始值theta0,计算Loss在theta0处的梯度g0,然后根据公式
teata1=teta0-aita*g0,得到的theta1就是更新后的参数。
引入动量后的参数更新,不仅要考虑当前的梯度,还要考虑之前所有的梯度。
- 如果前一次说要往m1蓝色及蓝色虚线这个方向走
- Gradient 说要往红色反方向这个方向走
- 把两者相加起来,走两者的折中,也就是往蓝色m2这一个方向走,所以我们就移动了 m2,走到 θ2 这个地方
当我们使用动量的时候,即便当前梯度计算出结果是零,但是之前的梯度是不为零的,所以,参数不会卡在梯度为零的地方,
它会接着更新下去。
整合动量后的参数更新如下。
m0=0