深度學習用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能帶來多少的速度增益了。