【笔记】目标检测和识别中如何选择合适的batch:太小来不及收敛,太大会影响网络的优化和泛化(泛化:在未见过的测试数据上也能进行预测)


注:

泛化:在未见过的测试数据上也能进行预测。

batch size可以说是所有超参数里最好调的一个,也是应该最早确定下来的超参数。

我的原则是,先选好batch size,再调其他的超参数。

实践上来说,就两个原则——batch size别太小,也别太大,其他都行。

听起来像是废话,但有时候真理就是这么简单。

合适的batch size范围和训练数据规模、神经网络层数、单元数都没有显著的关系。

合适的batch size范围主要和收敛速度、随机梯度噪音有关。

一,为什么batch size别太小?

别太小的限制在于,batch size太小,会来不及收敛。

有一篇NeurIPS2019[1]说,「learning rate/batch size越大,泛化越好」。

所以文献里都这么说了,那我们是不是一定就应该选尽量小batch size呢?

那当然不是了。你看一下文献[1]的generalization bound的证明是long-time limit的定态分布和continuous-time approximation下证明的。

当你的batch size太小的时候,在一定的epoch数里,训练出来的参数posterior是根本来不及接近long-time limit的定态分布。

所以batch size下限主要受收敛的影响。

所以在常见的setting(~100 epochs),batch size一般不会低于16。

如果你要选更小的batch size,你需要给自己找到很好的理由。

二,为什么batch size别太大?

batch size别太大的限制在于两个点,

1)batch size太大,memory容易不够用。这个很显然,就不多说了。

2)batch size太大,深度学习的优化(training loss降不下去)和泛化(generalization gap很大)都会出问题。

随机梯度噪音的magnitude在深度学习的continuous-time dynamics里是正比于learning rate/batch size。batch size太大,噪音就太小了。

而大家已经知道,随机梯度噪音对于逃离saddle points [2]和sharp minima [3]都必不可少的作用。前者可以解释为什么优化出问题,后者则可以解释为什么泛化出问题。

所以当你跑large-batch training的时候,就应该用linear scaling rule [4]。就是保持learning rate/batch size和正常设置一致即可。

这是目前的一些常识。

中文互联网大多数介绍文章也是到这里就结束了。


但是还没完。

linear scaling rule最开始是一条经验规则,但它还有自己的故事——它其实是可以从Langevin Dynamics推导出来的。有空我单独介绍一下怎么推,其实对懂一些统计物理的人来说很简单。

总之,可以证明,learning rate/batch size对深度学习是有指数级的影响[3],所以非常重要,没事别瞎调。

最后,很多人忽略的一点就是,这个linear scaling rule也有一个尴尬的极限。

Figure 1. ImageNet top-1 validation error vs. minibatch size [4]

在ImageNet上,batch size达到16K的时候,无论怎么调learning rate, large-batch training都比正常设置显著得差。

原因在于large learning rate带来的训练误差太大了,偏偏深度学习small learning rate下的理论很多,而large learning rate下的理论几乎是空白。所以大家现在对解决这个问题其实是没什么有效的思路。

(文献[5]说自己可以用full-batch training达到minibatch training的效果哦。但是没完,你仔细看看文献[5]的minibatch的baseline是没有用weight decay,比标准的baseline差得远。)

而在CIFAR上,你甚至不太容易观察到这个linear scaling rule。因为在常规的200个epoch左右的训练下,这个linear scaling rule已经接近失效了。

因为,learning rate调大一点,200个epoch甚至就来不及收敛了。这种情况的表现形式是,generalization gap很小,但是training loss降不下来。

所以,怎么把large-batch training的极限batch size提高,是一个有很高工业价值和学术价值的课题。

Guess you like

Origin blog.csdn.net/nyist_yangguang/article/details/121184415