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的总和
本文探讨了小批量(SmallBatch)和大数据量(LargeBatch)在机器学习训练中的优劣,涉及速度、梯度稳定性、优化效果和泛化能力。通过对比更新速度、epoch时间、梯度性质以及对模型收敛的影响,揭示了小批量训练在某些场景下可能带来更好的优化结果。
1024

被折叠的 条评论
为什么被折叠?



