batch size 对神经网络训练的影响

先说结论:batch size并不是越大越好,也不是越小越好
batch size直观上决定了一次喂给神经网络的样本数
引用怎么选取训练神经网络时的Batch size?中的一张图片说明batch size的影响:
batch size
如果使用 Gradient Descent,那么每一步的更新都会向类似于黄线那种,同时满足 6 个样本的 去贴近 (不是一步到位,而是通过迭代一点点更新变形
如果使用 Stochastic Gradient Descent,那么每一步的更新都会向能穿过该样本点的 去贴近。
如果使用 3-Batch Gradient Descent,那么每一步都会向同时满足 3 个样本点的形状更新,比如 1,2,3 样本组成的 batch 会往黑色虚线的形状变化。下一步可能是向同时满足 1,5,6 的 batch 的形状去变化。
同理,若使用 2-Batch Gradient Descent,绿色虚线是例子。
这时可能有人会说,那不是batch size越大越好吗,一次性把所有样本都喂进去,拟合的曲线就能穿过所有样本
这的确是其中一种方法,叫做full batch learning,神经网络训练时间减小,但随之而来也有缺点:

  1. 当数据集很大时,一次性喂给神经网络变得不可能,因为内存的开销会很大
  2. batch size越大,说明一个epoch内迭代的次数越小,这会给参数修正造成影响,很慢甚至难以达到较优精度。

那么batch size = 1呢?则每次梯度更新时都只针对当前样本,会很随机,且速度会很慢
最后再引用上面链接中答主在batch size选取上的经验:

个人习惯从 batch size 以 128 为分界线。向下 (x0.5) 和向上 (x2) 训练后比较测试结果。若向下更好则再 x0.5,直到结果不再提升。
我遇到过很多情况。比如同样的 cnn+rnn 模型结构,adam 更新法,learning rate 和其他参数全部相同。

  • 例1:遇到某个语音、画面、自然语言不同任务时,最好的 batch size 分别为 8, 32, 16。
  • 例2:遇到某个多信号语音识别任务时, batch size 为 1 最好。 可是训练时间让人抓狂,尤其是使用循环网络时。而将这些多个信号之间做 inversion mapping 时,结果却是 batch size 设为 32 后效果依然提升,但由于 GPU 显存限制无法继续加大 batch size。

可以看出来,调参也有时间和空间的限制:
大 batch size 限于空间,小 batch size 苦于时间。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值