机器学习 关于Batch and Momentum

Batch

在机器学习基本概念中讲述了Optimization的方法,我们可以将训练资料划分为batches
机器学习 关于Batch and Momentum_第1张图片
不断用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 and Momentum_第2张图片
(上图纵轴表示时间,横轴表示batch size)

(3)Time for one epoch

Small Batch size一次更新epoch时间长于Large Batch size
机器学习 关于Batch and Momentum_第3张图片
(上图中:左图纵轴表示一次update时间,右图纵轴表示一次epoch时间,横轴都表示为Batch size)

(4)Gradient

Large Batch的gradient是稳定的,Small Batch的gradient是不稳定的。机器学习 关于Batch and Momentum_第4张图片Large Batch此时就像长时间蓄力向某一个方向攻击,而Small Batch像短时间蓄力但随意向四周乱打。

(5) Optimization

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

(6)Generalization

实线图为训练资料,其中较平缓曲线的最低点为small batch size的local minima,这里称作Flat minima;较陡峭曲线的最低点为Large size的local minima,这里称作Sharp minima。
虚线图为测试资料,它与训练资料存在mismatch,在这种情况下,Flat minima的training与test结果不会有大的差异,而Sharp minima存在大的差异。
机器学习 关于Batch and Momentum_第7张图片

Conclusion

机器学习 关于Batch and Momentum_第8张图片

Momentum

Momentum解释为冲力、推动力、动量
机器学习 关于Batch and Momentum_第9张图片
如上图所示,假设曲线为error surface,黑球为参数。黑球正沿着曲线向下滚动,在落到凹陷处,可能持有的动量能驱使小球继续向右滚动。

(Vanilla) Gradient Descent

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

机器学习 关于Batch and Momentum_第10张图片

Gradient Descent + Momentum

机器学习 关于Batch and Momentum_第11张图片
在考虑Momentum的情况下,下一步updte的方向取决于gradient和前一步的方向
机器学习 关于Batch and Momentum_第12张图片
其实,在考虑Momentum的情况下,updte的方向考虑了过去所有的gradient的总和

你可能感兴趣的:(batch,深度学习,机器学习,momentum,神经网络)