PyTorch笔记--动量(Momentum)

动量是一个能够对抗鞍点和局部最小值的技术。

下面我们来看更新梯度的方法。首先选取一个初始值theta0,计算Loss在theta0处的梯度g0,然后根据公式

teata1=teta0-aita*g0,得到的theta1就是更新后的参数。

 

 引入动量后的参数更新,不仅要考虑当前的梯度,还要考虑之前所有的梯度。

 

 

  • 如果前一次说要往m1蓝色及蓝色虚线这个方向走
  • Gradient 说要往红色反方向这个方向
  • 把两者相加起来,走两者的折中,也就是往蓝色m2这一个方向走,所以我们就移动了 m2,走到 θ2 这个地方

当我们使用动量的时候,即便当前梯度计算出结果是零,但是之前的梯度是不为零的,所以,参数不会卡在梯度为零的地方,

它会接着更新下去。

整合动量后的参数更新如下。

m0=0

posted @ 2021-09-11 16:19  奋斗的小仔  阅读(471)  评论(0编辑  收藏  举报