Batch size
배치 크기 (Batch Size)
in Deep learning
- Batch의 네이버 영어 사전 뜻은 "(일괄적으로 처리되는) 집단", "한 회분(한 번에 만들어 내는 음식 기계 등의 양)", "(일괄 처리를 위해) 함께 묶다"라는 의미가 있다.
- 즉, 연산 한 번에 들어가는 데이터의 크기를 가리킨다.
- 1 Batch size에 해당하는 데이터 셋을 mini Batch라고 한다.
- 1회 epoch 안에 m 개
($m >= 1$)
의 mini Batch가 들어가게 되며, 만약,m = 1
인 경우, 배치 학습법이라고 한다. - 배치 사이즈가 너무 큰 경우 한 번에 처리해야 할 데이터의 양이 많아지므로, 학습 속도가 느려지고, 메모리 부족 문제가 발생할 위험이 있다.
- 반대로, 배치 사이즈가 너무 작은 경우 적은 데이터를 대상으로 가중치를 업데이트하고, 이 업데이트가 자주 발생하므로, 훈련이 불안정해진다.
Batch size vs Epoch vs Iteration
batch size의 의미
- 전체 트레이닝 데이터 셋을 여러 작은 그룹을 나누었을 때 batch size는 하나의 소그룹에 속하는 데이터 수를 의미합니다.
- 전체 트레이닝 셋을 작게 나누는 이유는 트레이닝 데이터를 통째로 신경망에 넣으면 비효율적이 리소스 사용으로 학습 시간이 오래 걸리기 때문입니다.
Machine-learning_-_batch_size.jpg
epoch의 의미
- 딥러닝에서 epoch는 전체 트레이닝 셋이 신경망을 통과한 횟수 의미합니다.
- 예를 들어, 1-epoch는 전체 트레이닝 셋이 하나의 신경망에 적용되어 순전파와 역전파를 통해 신경망을 한 번 통과했다는 것을 의미합니다.
Machine-learning_-_epoch.jpg
iteration의 의미
- 마지막으로 iteration은 1-epoch를 마치는데 필요한 미니배치 갯수를 의미합니다.
- 다른 말로, 1-epoch를 마치는데 필요한 파라미터 업데이트 횟수 이기도 합니다.
- 각 미니 배치 마다 파라미터 업데이터가 한번씩 진행되므로 iteration은 파라미터 업데이트 횟수이자 미니배치 갯수입니다.
- 예를 들어, 700개의 데이터를 100개씩 7개의 미니배치로 나누었을때, 1-epoch를 위해서는 7-iteration이 필요하며 7번의 파라미터 업데이트가 진행됩니다.
계산 방법
Detectron2 에서 epoch는 없고 직접 Total Iteration과 Batch Size 을 전달해야 한다. 이 때 다음과 같이 계산하면 된다.
이 때 다음의 조건일 경우:
- 훈련셋의 데이터 개수: 100장
- Batch Size: 4
- Total Iteration: 1,000
이라면 100 / 4
= 25 Iteration 이 1-epoch 이며, Total epoch 은 1,000 / 25
= 40 Total Epoch 이다.