學習率與batch_size對模型性能的影響

 

目錄

 

學習率

Batch_size(批量大小)

學習率與batch_size在權重更新中的關係

學習率與batch_size對模型性能的影響(轉載:原文)

對過擬合的影響

補充


學習率

學習率(lr)表示每次更新權重參數的尺度(步長),\Delta \Theta = \Theta _0 -(lr)({loss}')

Batch_size(批量大小)

batch_size有一個計算公式,即 batchsize = \frac{N_{data}}{batch},  或者 batch= \frac{N_{data}}{batchsize}, N爲訓練數據集大小, batch爲需要多少次迭代才能在一個epoch中訓練完整個數據集。batch_size參數決定了完整訓練數據集1個epoch需要多少個batch。

學習率與batch_size在權重更新中的關係

  • 學習率(lr)直觀可以看出lr越大,權重更新的跨度越大,模型參數調整變化越快。

  • batch_size對模型的影響,在於模型每次更新時,計算梯度是計算整個Batch的平均梯度,即權重更新公式中的{loss}' = \frac{1}{batchsize}{(loss_{batch})}', 整合就是\Delta \Theta = \Theta _0 -(lr)\frac{1}{batchsize}{(loss_{batch})}'。即lr與batch_size共同影響模型更新。 

學習率與batch_size對模型性能的影響(轉載:原文

  • 大的batchsize減少訓練時間,提高穩定性。 這是肯定的,同樣的epoch數目,在性能允許情況下,大的batchsize需要的batch數目減少了,所以可以減少訓練時間。另一方面,大的batch size梯度的計算更加穩定,因爲模型訓練曲線會更加平滑。在微調的時候,大的batch size可能會取得更好的結果。
  • 過大的batchsize泛化能力下降。 在一定範圍內,增加batchsize有助於收斂的穩定性,但是隨着batchsize的增加,模型的性能會下降,如下圖,來自於文[1]。

這是研究者們普遍觀測到的規律,雖然可以通過一些技術緩解。這個導致性能下降的batch size在上圖就是8000左右。

研究[2]表明大的batchsize收斂到sharp miminum,而小的batchsize收斂到flat mimimum,後者具有更好的泛化能力。兩者的區別就在於變化的趨勢,一個快一個慢,如下圖,造成這個現象的主要原因是小的batchsize帶來的噪聲有助於逃離sharp mininum。

Hoffer[3]等人的研究表明,大的batchsize性能下降是因爲訓練時間不夠長,本質上並不是batchsize的問題,在同樣的epochs下的參數更新變少了,因此需要更長的迭代次數。

 

[1] Goyal P, Dollar P, Girshick R B, et al. Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour.[J]. arXiv: Computer Vision and Pattern Recognition, 2017.

[2] Keskar N S, Mudigere D, Nocedal J, et al. On large-batch training for deep learning: Generalization gap and sharp minima[J]. arXiv preprint arXiv:1609.04836, 2016.

[3] Hoffer E, Hubara I, Soudry D. Train longer, generalize better: closing the generalization gap in large batch training of neural networks[C]//Advances in Neural Information Processing Systems. 2017: 1731-1741.

對過擬合的影響

  • 學習率:學習率高的話,模型學習數據時間加快,提前到達擬合點,但是epoch沒結束,繼續學習訓練數據,容易導致過擬合於原始數據。

  • batch_size:同樣是通過對訓練步數的影響,小的batch_size使模型迭代次數增多,提前到達擬合點,但是epoch沒結束,繼續學習訓練數據,容易導致過擬合於原始數據。

補充

  • 較大的batch_size能夠得到更加精準的梯度估計,但是回報小於線性。
  • 較小的batch_size能夠帶來更好的泛化誤差。
  1. 由於小batch_size再學習過程中帶來了噪聲,會產生一些正則化效果。
  2. 由於梯度估計的高方差,小batch_size在訓練中需要更小的學習率以保持穩定性,這意味着更長的訓練時間

當batch_size設置爲2的次冪時能夠充分利用矩陣運算。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章