深度学习总结2

序言:上一节中我们重点总结了激活函数,那么这一次我们着重讲一下Bacth_size。每天总结一点,每天进步一点,厚积薄发,总是可以滴水穿石的。

1.为什么需要Batch_size?
2.Batch_size值的选择
3.在合理的范围内,增大Batch_size有何好处
4.盲目增大Batch_size有何坏处

一、为什么需要Batch_size?

在这里我们需要明白batch_size,epoch,iteration这三者之间的关系;batch_size为单次训练用的样本数,epoch = 完成一次全部训练样本 = 训练集个数/batch_size;iterations指的是 1 epoch= 完成一次batch_size个数据样本迭代,通常一次前向传播+ 一次反向传播。
言归正传,如果没有引入batch_size这一参数,那么在训练过程中所有的训练数据直接输入到网络,经过计算之后得到网络输出值及目标函数值,并以此来调整网络参数使目标函数取极小值。批量梯度下降算法(Batch Gradient Descent)正是这样的原理,注意这里的batch和batch_size中的batch并无直接联系,当然此时也可以理解为batch_size的值恰好等于训练集样本数量。
那么这样做的缺点是什么呢?
首先,当训练集样本非常多时,直接将这些数据输入到神经网络的话会导致计算量非常大,同时对极端集的内存要求也比较高。
其次,当所有样本同时输入到网络中时,往往很难确定一个全局最优学习率使得训练效果最佳。
另外一种极端情况是:每次只读取一个样本作为输入,这种方法称为随机梯度下降算法(Stochastic Gradient Descent, SGD)。这种情况下,可以充分考虑每一个样本的特殊性。但是其缺点同样非常明显:
在每个训练样本上得到的目标函数值差别可能较大,因此最后通过求和或者求平均值的方法而得到的目标函数值不足以代表每个样本。也就是说,这种方法得到的模型对样本的泛化能力差。如下图所示,很难达到收敛。在这里插入图片描述
为了对两种极端情况进行折衷处理,就有了mini batches这一概念。也就是说每次只输入一定数量的训练样本对模型进行训练,这个数量就是batch_size的大小。
这样做的优点主要有:1)可以充分利用计算机的并行运算结构,提高数据处理速度;
2)考虑了一定数量的样本数据,可以比较准确得代表梯度下降方向;
3)跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。

二、Batch_size值的选择

此时,可采用批梯度下降法(Mini-batches Learning)。因为如果数据集足够充分,那么用一半(甚至少得多)的数据训练算出来的梯度与用全部数据训练出来的梯度是几乎一样的。

三、在合理范围内,增大Batch_Size有何好处?

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

四、盲目增大 Batch_Size 有何坏处?

1)内存利用率提高了,但是内存容量可能撑不住了。
2)跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
3)Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。

Batch Size从小到大的变化对网络影响
在这里插入图片描述
为什么说Batch size的增大能使网络的梯度更准确?
在这里插入图片描述
参考文章:神经网络中Batch Size的理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值