深度学习用mini-batch进行反向传播时,先将mini-batch中每个instance得到的loss平均化后再反向求梯度。
即:每次反向传播的梯度是对mini-batch中每个instance的梯度平均之后的结果。
所以batchsize的大小决定了相邻迭代之间的梯度平滑程度,也决定了每个epoch的时间。
- 当batchsize太小时,相邻mini-batch间的差异太大,会造成相邻两次迭代的梯度震荡比较严重,不利于网络模型收敛;
- 当batchsize越大时,相邻mini-batch中的差异越小,虽然梯度震荡会比较小,但是在一定程度有利于模型的收敛;
- 但是当batchsize极端大时,相邻mini-batch中的差异过小,两个相邻的mini-batch的梯度就没有区别了,整个训练就按照一个方向一直走,容易陷入到局部最优。
batchsize对于训练时间的影响:
反向的过程取决于模型的复杂度,与batchsize的大小关系不大,而正向则同时取决于模型的复杂度和batch size的大小。
完成每个epoch的时间取决于:
1、load数据的时间
2、每个epoch的iter数量。
因此对于每个epoch,不管是纯计算时间还是全部时间,大体上还是大batch能够更节约时间一点,但随着batch增大,iter次数减小,完成每个epoch的时间更取决于加载数据所需的时间,此时也不见得大batch能带来多少的速度增益了。