机器学习loss函数过大应对方法Momentum and GD

Batch and Momentum

Momentum方法

momentum就是动量,即loss函数在到达gradient的critical point不会直接停下来,能够直接凭借之前(较大的)gradient直接冲过critical point。

在真实的物理世界里面不会被saddle point 或者 local minima 卡住。与此类似的技术就是momentum方法。

Vanilla Gradient Descent 一般梯度下降

vanilla 仙草

 在初始点,确定一个g0,同时朝这个的反方向运动。朝gradient的反方向去update参数

                                                                  \theta ^{1}=\theta ^{0}-\eta g^{0}

Gradient Descent + Momenturn

使用Momentum之后,每次更新参数的时候,不是光光去gradient的反方向,而是用gradient的反方向,加上一个前一步移动的方向,因为都是向量,求两者加起来的结果

 初始的参数\theta ^{0},此时上一步update的参数则为m^{0}=0

接下来在 \Theta ^{0}的地方,计算 Gradient 的方向g^{0} ,前一步刚好是0,所以update的方向没有什么变化。但是从第二个开始就开始变化了,不过这里的\lambda \eta都是要自己去设置的参数。第二个的m就是由第一个的m和第一个的g共同作用下

g1 告诉我们,Gradient 告诉我们要往红色反方向这边走,但是我们不是只听 Gradient 的话,加上Momentum 以后,我们不是只根据 Gradient 的反方向,来调整我们的参数,我们也会看前一次 Update 的方向
1.如果前一次说要往m^{1}蓝色及蓝色虚线这个方向走
2.Gradient 说要往红色反方向这个方向走
3.把两者相加起来,走两者的折中,也就是往蓝色m^{2}这一个方向走,所以我们就移动了 m2,走到 θ2 这个地方

 接下来就反覆进行同样的过程,在这个位置我们计算出 Gradient,但我们不是只根据 Gradient 反方向走,我们看前一步怎麼走,前一步走这个方向,走这个蓝色虚线的方向,我们把蓝色的虚线加红色的虚线,前一步指示的方向跟 Gradient 指示的方向,当做我们下一步要移动的方向

 每一步的移动,我们都用 m 来表示,那这个 m 其实可以写成之前所有算出来的,Gradient 的 Weighted Sum.从右边的这个式子,其实就可以轻易的看出来。 其实所有的m,都可以看成和g然后和\lambda \eta 有关的

 

  m0 我们把它设為 0,m1 是 m0 减掉 g0,m0 為 0,所以 m1 就是 g0 乘上负的 η,m2 是 λ 乘上 m1,λ 就是另外一个参数,就好像 η 是 Learning Rate 我们要调,λ 是另外一个参数,这个也是需要调的,m2 等於 λ 乘上m1,减掉 η 乘上 g1,然后 m1 在哪裡呢,m1 在这边,你把 m1 代进来,就知道说 m2,等於负的 λ 乘上 η 乘以g0,减掉 η 乘上 g1,它是 g0 跟 g1 的 Weighted Sum

  以此类推,所以你会发现说,现在这个加上 Momentum 以后,一个解读是 Momentum 是,Gradient 的负反方向加上前一次移动的方向,那但另外一个解读方式是,所谓的 Momentum,当加上 Momentum 的时候,我们 Update 的方向,不是只考虑现在的 Gradient,而是考虑过去所有 Gradient 的总合.

 那我们从这个地方开始 Update 参数,根据 Gradient 的方向告诉我们,应该往右 Update 参数,那现在没有前一次 Update 的方向,所以我们就完全按照 Gradient 给我们的指示,往右移动参数,好 那我们的参数,就往右移动了一点到这个地方

Gradient 变得很小,告诉我们往右移动,但是只有往右移动一点点,但前一步是往右移动的,我们把前一步的方向用虚线来表示,放在这个地方,我们把之前 Gradient 告诉我们要走的方向,跟前一步移动的方向加起来,得到往右走的方向,那再往右走 走到一个 Local Minima,照理说走到 Local Minima,一般 Gradient,Descent 就无法向前走了,因為已经没有这个 Gradient 的方向,那走到 Saddle Point 也一样,没有Gradient 的方向已经无法向前走了

 但没有关係,如果有 Momentum 的话,你还是有办法继续走下去,因為 Momentum 不是只看
Gradient,Gradient 就算是 0,你还有前一步的方向,前一步的方向告诉我们向右走,我们就继续向右走,甚至你走到这种地方,Gradient 告诉你应该要往左走了,但是假设你前一步的影响力,比 Gradient 要大的话,你还是有可能继续往右走,甚至翻过一个小丘,搞不好就可以走到更好 Local Minima,这个就是 Momentum有可能带来的好处。

根据文章

(56条消息) NN中的学习技巧之(一)参数的最优化之 Momentum_doubleslow;的博客-CSDN博客_momentum参数

 中所提到的,收敛速度会在其他章节开始展开。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是随便学学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值