當前位置: 華文問答 > 數位

怎麽選取訓練神經網路時的Batch size?

2017-07-27數位

batch size可以說是所有超參數裏最好調的一個,也是應該最早確定下來的超參數。

我的原則是,先選好batch size,再調其他的超參數。

實踐上來說,就兩個原則——batch size別太小,也別太大,其他都行。

聽起來像是廢話,但有時候真理就是這麽簡單。

合適的batch size範圍和訓練數據規模、神經網路層數、單元數都沒有顯著的關系。

合適的batch size範圍主要和收斂速度、隨機梯度噪音有關。

一,為什麽batch size別太小?

別太小的限制在於, batch size太小,會來不及收斂。

有一篇NeurIPS2019[1]說,「learning rate/batch size比值越大,泛化越好」。

所以文獻裏都這麽說了,那我們是不是一定就應該選盡量小batch size呢?

那當然不是了。你看一下文獻[1]的generalization bound的證明是long-time limit的定態分布和continuous-time approximation下證明的。

當你的batch size太小的時候,在一定的epoch數裏,訓練出來的參數posterior是根本來不及接近long-time limit的定態分布。

所以batch size下限主要受收斂的影響。

所以在常見的setting(~100 epochs),batch size一般不會低於16。

如果你要選更小的batch size,你需要給自己找到很好的理由。

二,為什麽batch size別太大?

batch size別太大的限制在於兩個點,

1)batch size太大,memory容易不夠用。這個很顯然,就不多說了。

2) batch size太大,深度學習的最佳化(training loss降不下去)和泛化(generalization gap很大)都會出問題。

隨機梯度噪音的magnitude在深度學習的continuous-time dynamics裏是 正比於learning rate/batch size。batch size太大,噪音就太小了。

而大家已經知道,隨機梯度噪音對於逃離saddle points [2]和sharp minima [3]都必不可少的作用。前者可以解釋為什麽最佳化出問題,後者則可以解釋為什麽泛化出問題。

所以當你 跑large-batch training的時候,就應該用linear scaling rule [4]。就是保持learning rate/batch size和正常設定一致即可。

這是目前的一些常識。

中文互聯網大多數介紹文章也是到這裏就結束了。


但是還沒完。

linear scaling rule最開始是一條經驗規則,但它還有自己的故事——它其實是可以從Langevin Dynamics推匯出來的。有空我單獨介紹一下怎麽推,其實對懂一些統計物理的人來說很簡單。

總之,可以證明, learning rate/batch size的比值對深度學習是有指數級的影響 [3],所以非常重要,沒事別瞎調。

(關於文獻[3],我有一篇專門的介紹文章:梯度下降法的神經網路容易收斂到局部最優,為什麽套用廣泛?)

最後,很多人忽略的一點就是, 這個linear scaling rule也有一個尷尬的極限。

Figure 1. ImageNet top-1 validation error vs. minibatch size [4]

在ImageNet上,batch size達到16K的時候,無論怎麽調learning rate, large-batch training都比正常設定顯著得差。

原因在於large learning rate帶來的訓練誤差太大了,偏偏深度學習small learning rate下的理論很多,而large learning rate下的理論幾乎是空白。所以大家現在對解決這個問題其實是沒什麽有效的思路。

(文獻[5]說自己可以用full-batch training達到minibatch training的效果哦。但是沒完,你仔細看看文獻[5]的minibatch的baseline是沒有用weight decay,比標準的baseline差得遠。)

而在CIFAR上,你甚至不太容易觀察到這個linear scaling rule。因為在常規的200個epoch左右的訓練下,這個linear scaling rule已經接近失效了。

因為,learning rate調大一點,200個epoch甚至就來不及收斂了。這種情況的表現形式是,generalization gap很小,但是training loss降不下來。

所以, 怎麽把large-batch training的極限batch size提高,是一個有很高工業價值和學術價值的課題。

References:

[1] He, F., Liu, T., & Tao, D. (2019). Control batch size and learning rate to generalize well: Theoretical and empirical evidence. In International Conference on Neural Information Processing Systems .

[2] Jin, C., Ge, R., Netrapalli, P., Kakade, S. M., & Jordan, M. I. (2017, July). How to escape saddle points efficiently. In International Conference on Machine Learning (pp. 1724-1732). PMLR.

[3] Xie, Z., Sato, I., & Sugiyama, M. (2020). A diffusion theory for deep learning dynamics: Stochastic gradient descent exponentially favors flat minima. In International Conference on Representation Learning .

[4] Goyal, P., Dollár, P., Girshick, R., Noordhuis, P., Wesolowski, L., Kyrola, A., ... & He, K. (2017). Accurate, large minibatch sgd: Training imagenet in 1 hour. arXiv preprint arXiv:1706.02677 .

[5] Wu, J., Hu, W., Xiong, H., Huan, J., Braverman, V., & Zhu, Z. (2020, November). On the noisy gradient descent that generalizes as sgd. In International Conference on Machine Learning (pp. 10367-10376). PMLR.