机器学习 关于Batch and Momentum

Batch

机器学习基本概念中讲述了Optimization的方法,我们可以将训练资料划分为batches
在这里插入图片描述
不断用batch进行参数更新,直至所有看完batch,为一个epoch。每过一个epoch,将batches打乱。

使用batch的原因

Batch size = N (Full batch) 一个batch包含所有的训练资料,即不使用batch的情况。看完所有训练资料更新一次参数。Batch Size大,可归为Large Batch
Batch size = 1 每看一笔训练资料更新一次参数,所有训练资料看完为一个周期。Batch Size小,可归为Small Batch

则问题化为对比Small Batch和Large Batch的不同

(1)Speed for one update (no parallel)

在无平行运算的情况下,对于一次update的时间,Small Batch所需时间 < Large Batch所需时间

(2)Speed for one update(with parallel)

在能够平行运算的情况下,更大的Batch size并不需要比Small batch size更长的计算时间(除非超出平行运算的范围,即batch size过于大)
在这里插入图片描述
(上图纵轴表示时间,横轴表示batch size)

(3)Time for one epoch

Small Batch size一次更新epoch时间长于Large Batch size
在这里插入图片描述
(上图中:左图纵轴表示一次update时间,右图纵轴表示一次epoch时间,横轴都表示为Batch size)

(4)Gradient

Large Batch的gradient是稳定的,Small Batch的gradient是不稳定的。在这里插入图片描述Large Batch此时就像长时间蓄力向某一个方向攻击,而Small Batch像短时间蓄力但随意向四周乱打。

(5) Optimization

noisy gradient反而可以帮助training。下图为两个具体案例中,对同一个模型但不同batch size下的正确率折线表示图。(横轴表示batch size,纵轴为validation accuracy)
在这里插入图片描述
Small batch size的Optimization结果更好
这是因为:
(1)在Full Batch中,若gradient = 0,且不考虑Hessian,则gradient descent会卡住导致gradient无法更新。
(2)在Small Batch中,Loss Fuction之间都略有差异,若某一个Batch的Loss计算的gradient = 0,可用下一个Batch接着计算gradient
在这里插入图片描述

(6)Generalization

实线图为训练资料,其中较平缓曲线的最低点为small batch size的local minima,这里称作Flat minima;较陡峭曲线的最低点为Large size的local minima,这里称作Sharp minima。
虚线图为测试资料,它与训练资料存在mismatch,在这种情况下,Flat minima的training与test结果不会有大的差异,而Sharp minima存在大的差异。
在这里插入图片描述

Conclusion

在这里插入图片描述

Momentum

Momentum解释为冲力、推动力、动量
在这里插入图片描述
如上图所示,假设曲线为error surface,黑球为参数。黑球正沿着曲线向下滚动,在落到凹陷处,可能持有的动量能驱使小球继续向右滚动。

(Vanilla) Gradient Descent

在一般使用gradient descent时,从θ0开始,向g0反方向update,更新至θ1

在这里插入图片描述

Gradient Descent + Momentum

在这里插入图片描述
在考虑Momentum的情况下,下一步updte的方向取决于gradient和前一步的方向
在这里插入图片描述
其实,在考虑Momentum的情况下,updte的方向考虑了过去所有的gradient的总和

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

聪明的Levi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值