batch size的选择对模型有什么影响呢?
因为Batch的选择,首先决定的是下降的方向。如果数据集比较小,完全可以采用full batch learning的形式。好处是:
- 较为准确地朝极值方向迭代优化
- Full batch learning 可以使用Rprop只记与梯度符号并且针对性单独更新各权值。
对于数据集很大,那就有问题了。首先,显存肯定不够。第二个就是以Rprop迭代的方式,会由于各个batch 之间的采样性差异,各次梯度修正值相互低效,无法修正。所以才有了后来的RMSProp的方案。
但如果只训练一个样本,会导致训练时间很长,不容易收敛。
所以如何选择一个合适的Batch size就是值得考虑的问题。建议是:
- 在合理的范围内,尽量选择大的batch size,提高显存利用率。
- 同时大的batch size 跑完一次epoch的迭代次数少了,训练时间变短。
- batch size越大,梯度下降的方向越准,训练震荡就越小,模型训练的曲线会更平滑,提高了模型的稳定性。
但是太大的Batch size,首先显存就无法满足。且第二个就是迭代次数少,要达到同样的精度,花费时间就变长了。而且可能batch size增大到一定的程度,其确定的下降方向已经基本不再变化了。最后,大的batch size可能会导致模型泛化能力下降。
Reference
- https://www.zhihu.com/question/32673260