深度学习中的batch_size设置

 

Batch_Size(批尺寸)是深度学习中的重要参数,本文通过讲解batch_size存在的原因,选取合理的参数值的优缺点,建议设置的大小。

 一、Mini-batches 方法的重要性

如果数据集比较小,完全可以把整个数据集用来训练,这样有 2 个好处:其一,由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。其二,由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。 

对于数据集变得很大的话, 2 个坏处:其一,随着数据集的海量增长和内存限制,电脑内存会爆炸,然而迭代一次所花的时间很长,要很长时间权值才更新一次,所以训练时间就长了。其二,以 Rprop 的方式迭代,会由于各个 Batch 之间的采样差异性,各次梯度修正值相互抵消,无法修正。这才有了后来 RMSProp 的妥协方案。

 

下图为用整个数据集训练:

下图为采用Mini-batches的效果: 

所以如果用batch_size的话,一次迭代的样本数batch_size大小,这样可以加快训练速度。同时收敛的速度也是大大加快,几乎一步就走到了合适的参数范围 

1.1在线学习

一个极端,就是每次只训练一个样本,即 Batch_Size = 1。这就是在线学习(Online Learning)。。使用在线学习,每次修正方向以各自样本的梯度方向修正,横冲直撞,很难以达到收敛如图所示

 


这里写图片描述

 

二、采用合适的batch_size值

因为如果数据集足够充分,那么用一半(甚至少得多)的数据训练算出来的梯度与用全部数据训练出来的梯度是几乎一样的。

在合理范围内,增大 Batch_Size 优缺点

  • 提高了内存的利用率,大矩阵乘法的并行化效率提高。
  • 跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
  • 在合理范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

盲目增大 Batch_Size 缺点:

  •  内存溢出、训练时间增加、收敛缓慢、局部最优,泛化性差
  • 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
  • Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。

三、mini-batch 的大小设置:

通常是10到100。大小最好是2的n次方,如16,32,64,128

  • 12
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值