batchsize和数据量设置比例_设置BatchSize

本文探讨了在深度学习中如何选择BatchSize。虽然大BatchSize可以提高训练速度,但可能导致模型精度下降和泛化能力减弱。合适的BatchSize能够平衡训练速度与模型质量。太小的BatchSize会增加训练的不稳定性,而使用Batch Normalization时,过小的BatchSize会影响其效果。通常,较大的BatchSize需要配合相应调整的学习率,且在训练过程中,BatchSize可作为超参数进行多次尝试。
摘要由CSDN通过智能技术生成

BatchSize是非常重要的超参数,它不仅影响训练速度,也影响模型精度。本篇来讨论如何选择BatchSize。

BatchSize是否越大越好?

BatchSize一般指同时代入训练模型的实例个数,最直接的经验是如果GPU显存不大,又设置较大的BatchSize时直接报错“cuda runtime error(2): out of memory”。

是不是只要机器性能允许,就要设置尽可能大的Batch size呢?同时训练多个实例比逐个代入单个实例训练速度又能提高多少?

下图为使用不同的batchSize,在LeNet上训练mnist数据的效果,使用的框架为Theano。

可以看到,使用较大的batchSize的确可以提速,但是batchSize大到一定程度后,效果并不十分明显。

从图中可以看到如果将所有数据全部代入一次迭代(左图),则在训练集上的代价函数下降比较平滑,如果切分成多个Batch,代价函数不一定是下降的。这是由于每一个Batch中数据的难度不同,造成了代价函数忽大忽小。

如何选择batch大小?

两种极端的情况是BatchSize大小为1,每次只训练一个实例,或者BatchSize大小等于所有训练集数据大小,即每次训练所有数据。但更多的时候BatchSize设置在二者之间。

batchSize较小时,抖动大,训练过程有很大运气的成份,可能某个实例将模型带偏了,防止被模型被带偏的方法是使用较小的学习率,这样即非并行处理,又使用较小的学习率,使得收敛变慢。

batchSize较大时,任务并行执行,训练速度快, 且大Batch正负样本更均衡可以有效更新BN层参数精度更高。代价函数也能相对比较稳定,平滑地下降。但是如果代入了所有数据后再调参,可能会使很多梯度相互抵消,调参也比较粗糙。如果不进行特殊处理,过大的BatchSize一将会损失模型精度。另外,较大的batchSize会使模型的泛化能力下降(generalization gap)。

如果遇到较大的数据集,一般需要切分成batch分批训练,对于较少的数据,也可以使用全部数据训练。当有足够算力时,选取BatchSize为32,64,128或更小一些的batch_size。算力不够时,在效率和泛化性之间做权衡,选择更小的batchSize。

在训练过程中,可以将batch_size作为超参数做多次尝试。另一方面,也可以在前期使用较大的学习率和较越BatchSize粗调,后期(比如论文实验/比赛最后)将BatchSize变小精调,并使用SGD优化方法,慢慢把Error磨低。

BatchSize是否只与速度有关?

BatchSize不仅与速度相关,如果模型中使用了Batch Normalization(BN)归一化方法,那么太小的BatchSize会影响模型效果,如果受算法或性能限制只能使用小的BatchSize,则建议在fine-tune时锁住BN归一化层,或者使用其它归一化方法(如Group Normalization)。

另外,BN归一化时的统计值针对每一Batch计算,而非对整个训练集计算,从而引入了噪声,当噪声在合理范围以内时,它能实现类似Dropout的效果,使模型更加健壮;BatchSize太小噪声太大,则使模型效果变差;如果BatchSize太大,统计值能有效地表示整体训练数据的统计数据,则无法产生类似Dropout的正则化效果。

BatchSize与Learning rate的关系

Krizhevsky提出,如果BatchSize加大,可以加大学习率,当BatchSize加大k倍,则学习也加大k的开根号位数,后来发现使用线性变换调节二者关系效果更好。用这种方法将AlexNet的BatchSize从128加大到1024精度只损失1%。但是太大的学习率又会在一开始使模型训练不稳定,解决该问题的方法是学习率warm-up。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值