Small Batch Size in Deep Learning

2020. 7. 23. 14:26DeepLearning

How to Choose the Batch Size?

일반적으로 아래 세 가지 batch size를 결정할 수 있으며, 배치 사이즈의 크기에 따라 딥러닝의 성능에 많은 영향을 미친다.

  • Batch(deterministic) Gradient Descent
  • Mini-Batch Gradient Descent
  • Stochastic(Online) Gradient Descent
Large Batch Small Batch
Accurate estimate of the gradient (low variance) Noisy  estimate of the gradient (high variance)
High Computation cost per iteration Low computation cost per iteration
High availability of parallelism limited availability of parallelism (slow)
High generalization error Low generalization error

일반적으로 Batch size에 따른 학습의 효과는 다음과 같이 여겨졌다.

SGD(stochastic gradient descent)는 에폭당 여러 번 가중치 업데이트를 진행하며, 전체 훈련 데이터의 분포에서 비정상적으로 떨어진 특이값(outlier)에 따라 최적화 탐색 경로가 불안정할 수 있습니다. 반면 BGD(Batch Gradient Descent)는 전체 데이터에 대한 loss를 구하여 모델의 가중치들을 update하는 것이기 때문에 에폭당 가중치를 한 번 업데이트하며 이 덕분에 최적화 탐색 경로가 안정적입니다. 결과적으로 두 방식 다 같은 지점으로 최적화가 이루어집니다. 여기에 GPU 병렬 연산을 가정한다면, 배치 크기가 클수록 최종 성능에 도달하는데 걸리는 총 훈련 시간은 줄어듭니다. 따라서 보다 빠르게 최적의 성능에 도달할 수 있다는 이유로 배치 크기는 클수록 좋다는 결론을 도출할 수 있습니다.

1 에폭을 기준으로 했을 때, 배치가 클수록 기울기 방향이 더 안정적으로 작은 손실을 내는 가중치 조합을 찾아감을 확인해볼 수 있다. [출처] 카카오브레인

그러나 아래 논문들에서는 Small Batch가 generalization에 더 도움이 된다는 것을 실험적으로 보였다. 또한, 안정적인 학습을 위해서는 오히려 Small Batch를 사용할 것을 주장한다.

The performance of the model on testing data sets is often worse when trained with large batch methods as compared to small-batch methods


Revisiting Small Batch Training for Deep Neural Networks, 2018.

The presented results confirm that using small batch sizes achieves the best training stability and generalization performance, for a given computational cost, across a wide range of experiments. In all cases the best results have been obtained with batch sizes m = 32 or smaller, often as small as m = 2 or m = 4.

Intuition of Small Batch Size

"왜 Small Batch Size를 사용하면 좋을까?"에 대한 답으로 저자들은 다음과 같은 장점이 있다고 한다.

  • Better Generalization Performance
  • Better Training Stability
  • Can choose much larger range of learning rates

그 이유로 Deep neural network의 loss function과 같이 복잡한 non-convex function일수록 gradient 값은 parameter 상태에 따라 크게 변하므로, large batch를 사용하면 오래전 gradient로 부정확한 weight update를 하게 될 위험이 커지게 되고, base learning rate를 크게 가져가지 못하는 원인이 될 수 있기 때문이다.


On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima, 2017.


Main Ideas

  • Small Batch 를 사용할 경우 gradient estimation의 noise가 커지기 때문에 Sharp Minimum에서 쉽게 벗어날 수 있고, noise에 둔감한 Flat Minimum에 수렴하게 된다.
  • Large Batch 를 사용할 경우 gradient estimation의 noise가 줄어들기 때문에 Sharp Minimum로 수렴할 가능성이 높아지고, 이는 generalization 성능을 저하시킨다.
  • This is due to the inherent noise in the gradient estimation

Sharp Minimum은 loss function의 작은 변화에도 민감하게 반응하기 때문에 Flat Minimum에 비해 generalization 측면에서 훨씬 불리하다고 볼 수 있다.

즉, large batch는 local minima에 빠질 가능성이 높아 generalization에 실패하는 것으로 볼 수 있다.

최소값임을 보장할 수 없는 극소값 또는 안장점 근처에서 학습이 진행된다고 가정해보자. 배치 크기가 큰 상황에서는 이 구간을 빠져나오기가 어렵다. 반면, 배치 크기가 작을 때는 이 구간에서 빠져나오기가 훨씬 수월하다.[출처] 카카오브레인


What are the causes for this phenomenon?

Large Batch(LB) 가 Small Batch(SB)에 비하여 떨어지는 성능을 보이는 이유에 대해 제시되는 일반적인 견해들은 다음과 같이 정리해볼 수 있다. 본 논문에서는 아래 3,4번 주장에 대하여 뒷받침하며, 또한, 일반적인 견해인 over-fitting ( or over-training)에 의한 결과가 아님에 강조한다.

  1. LB methods overfit the model
  2. LB methods are attracted to saddle points
  3. LB methods lact the explorative properties of SB methods and tend to zoom-in on the minimizer closest to the initial point
  4. SB and LB methods converge to qualitatively different minimizers with differing generalization properties

The main observation of this paper(On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima, 2017.)

How to remedy the problem?

본 논문에서는 Large Batch를 사용함으로써 생기는 문제에 대하여 다음 아래 3가지 방법을 제시하였다.

  1. Data Augmentation
  2. Conservative Training
  3. Robust optimization
  4. Dynamic Sampling : iteration마다 점진적으로 batch size를 증가시키는 방법.

하지만, 위 방법들은 Large Batch 방법론들에 대한 generalization 성능에 도움을 주더라도 sharp minima에 빠지는 문제는 여전함을 확인하였다.

Thoughts

저자들은 본 논문에서 주장하는 바를 실험적으로 보였지만 (only empirical evidence), 주장에 대한 엄밀한 증명(proof)의 부재가 한계점으로 지적된다.

  • 왜 Large-Batch method가 sharp minimizer에 수렴하는가?
  • flat minima가 왜 sharp minima보다 generalization 에 더 좋은가?
  • Large Batch method를 적용하여도 문제없는 신경망의 구조를 구성할 수 있는가?
  • Large Batch method를 적용하여도 문제없는 신경망의 초기화를 할 수 있는가?
  • What is the relative density of the two kinds of minima?

References