引言
- 在深度学习模型训练时,一次性将所有数据用于训练很明显是不靠谱的,因为算力跟不上;一次用几条数据也是不靠谱的,因为数据小可能走的方向会随机性更大,每次修正方向以各自样本的梯度方向修正,导致更新点横冲直撞,无法完成收敛。所以在训练的时候一般都是一个batch一个bath的来,这样学习到的分布才是可靠的,那么batch的大小对训练有啥影响呢?
总结
-
合理范围内增大batch_size的好处
- 内存利用率提高了,大矩阵乘法的并行化效率提高
- 跑完一次epoch所需的迭代次数减少,对于相同数据量的处理速度进一步加快
- 在一定范围内,一般来说batch_size越大,其确定的下降方向越准,引起的训练振荡越小
-
盲目增大batch_size的坏处
- 内存容量可能撑不住
- 跑完一次epoch所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加,从而对参数的修正也就显得更加缓慢
- batch_size增大到一定程度,其确定的下降方向已经基本不再变化
参考文献
[1] 深度学习中的batch的大小对学习效果有何影响? - 程引的回答 - 知乎
https://www.zhihu.com/question/32673260/answer/71137399