본문 바로가기
AI

Batch size에 대해

by Ladun 2022. 2. 7.

이번 글에서는 간단하게 Batch  Size와 학습, 학습 시간에 대해서 정리해보겠습니다.

 

  • 먼저 Batch란 학습을 할 때 모델에 한 번에 들어가게 되는 데이터 집합을 의미한다고 볼 수 있습니다. 학습할 때 준비한 Train 데이터 전체를 모델에 입력으로 넣을 수 없기 때문에 이를 나눈 것을 Batch라고 생각하시면 될 것같습니다.
  •  이 때 이 Batch에 포함된 데이터의 개수를 Batch Size라고 합니다. 아래 그림은 Batch size에 대한 그림입니다. epoch은 Train 데이터 전체를 한 번 보는 기준으로 생각하면 될 것같습니다.

출처: https://www.kakaobrain.com/blog/113

 Batch Size와 학습 시간

 그렇다면 Batch Size와 학습은 어떤 관계가 있을까요? 일반적으로 GPU를 이용하여 학습을 진행하기 때문에 GPU를 사용하고, 이때 GPU의 병렬 처리 덕분에 배치 크기의 상관 없이 한 번 학습할 때 걸리는 시간은 동일하다고 가정하겠습니다. 이러한 상황에서는 epoch당 학습 횟수를 줄이는 것이 중요합니다.

 예시를 들어보겠습니다. 1000개 데이터가 있을 때 Batch Size가 1이면 1000번 학습을 합니다. Batch Size가 1000이면 1번 학습을 진행하겠죠. 앞선 가정에 따르면 Batch Size가 크면 클수록 학습 횟수가 줄어들기 때문에 좋아보입니다. 하지만 실제로는 그렇지 않습니다.

 

 Batch Size와 학습

  Batch Size가 클 때와 작을 때 학습에서는 어떤 차이점이 있을까요? 일단 Batch Size가 큰 경우를 생각해보겠습니다. Batch Size가 크다는 것은 Train 데이터에서 많은 양을 데이터를 한 번에 볼 수 있다는 것을 의미합니다. 이 경우 학습을 하고 모델의 가중치를 갱신할 때 최적화된 경로로 가중치를 갱신하게 됩니다. 왜나하면 모델은 Train 데이터의 분포를 따를려고 하는데 한 번에 많은 데이터를 볼 수 있다면 Batch의 분포와 Train 데이터의 분포가 비슷해질 수 있기 때문입니다. Batch Size가 Train 데이터의 크기와 같다면 Batch의 분포와 Train 데이터의 분포가 같아진다는 의미이죠. 

 만약 Batch Size가 작은 경우는 어떨까요? Batch Size가 1이라고 가정하면 학습을 진행할 때 Batch에 특이값(Outlier)가 포함되었을 때 실제 최적화된 경로가 아닌 다른 경로로 모델의 가중치가 갱신될 것입니다. 아래 이미지는 위 이야기를 그림으로 보인 것입니다.

출처: https://www.kakaobrain.com/blog/113

 여기까지만 이야기를 들어보면 여전히 Batch Size가 큰 경우에 좋아보입니다. 하지만 실제로는 다릅니다. 실제 상황에서는 Train Data에는 noise가 포함되어 있을 수 있기 때문에 Train 데이터의 분포만 따라가다가는 일반화(generalization)이 힘들어집니다. Batch Size가 큰 경우에는 학습 도중에 오차가 local optimal에 해당되었을 때는 더 이상 학습이 되지 않습니다. Train 데이터의 최적화 경로를 따르기 때문에 local optimal에서 빠져나올 길이 없게 되는 것입니다. 이와는 다르게 Batch Size가 작을 때는 local optimal에 해당되더라도 Batch 내부의 특이값 혹은 그 자체의 분포가 실제 Train 데이터의 분포와 다르기 때문에 Train 데이터의 최적화된 경로가 아닌 다른 경로로 움직여 local optimal에서 빠져나갈 수 있게 됩니다.

 이러한 이유로 Batch Size가 무작정 크다고 좋은 것은 아닙니다. 하지만 Batch Size가 클 때는 학습 속도가 비교적 빠르고 안정적인 학습이 가능합니다. 이러한 강점을 얻으려면 어떠한 방법들이 있을까요? 이를 위해서 학습이 불안정한 초반에는 학습률을 낮게 사용하거나 레이어별로 다른 학습률을 적용시키는 방법들이 있었습니다. 이에 대한 자세한 정보는 출처란에 남겨두었습니다.

'AI' 카테고리의 다른 글

Model의 Bias-Variance  (0) 2022.02.03
Macro-average, Micro-average  (0) 2022.02.03
CutMix  (0) 2022.01.27
Cross Entropy를 사용하는 이유  (0) 2021.11.12
Backpropagation  (0) 2021.11.03