728x90
반응형
- batch size가 학습에 미치는 영향
batch size 의 값에 따라 학습 결과는 직접적인 영향을 받게 됩니다. 클때와 작을 때 각각의 장단점은 아래와 같습니다.
✅ 배치 크기가 클 때 (예: 256~1024)
✔ 장점:
- 병렬 연산이 최적화됨 → GPU 활용도가 높아짐
- 학습이 빠름 (한 번의 forward/backward pass에서 많은 샘플을 처리)
- Gradient가 안정적 (많은 샘플을 평균내므로 변화가 작음)
❌ 단점:
- 일반화 성능이 낮아질 가능성 (Gradient가 안정적이라 local minima에 빠질 위험 있음)
- 메모리 사용량이 많음 (큰 모델에서는 Out of Memory(OOM) 발생 가능)
- 배치 내 데이터 다양성이 감소하여 Overfitting 위험 증가
✅ 배치 크기가 작을 때 (예: 2~32)
✔ 장점:
- 일반화 성능이 좋아질 가능성 (Gradient가 noisy하여 다양한 패턴을 학습)
- 메모리 사용량이 적음 (큰 모델도 학습 가능)
- 최적화가 더 효과적일 수 있음 (SGD와 같은 Optimizer는 작은 배치에서 더 빠르게 학습 가능)
❌ 단점:
- 학습이 느림 (업데이트가 자주 발생하여 전체적인 효율이 낮음)
- Gradient 변동성이 커서 학습이 불안정할 수 있음
- Batch Normalization이 제대로 동작하지 않을 가능성
- 적절한 batch size를 선택하는 방법
✅ 일반적인 추천 값
- 경험적으로 128~512 범위가 일반적으로 적절
- 작은 데이터셋: 16~64
- 중간 크기 데이터셋: 128~256
- 대형 데이터셋 (ImageNet, LLaMA 등): 512~1024
단! batch size가 큰 경우 마지막 batch에 몇개의 데이터가 들어가는지에 따라 성능에 악영향을 미칠 수 있습니다.
예를들어, batch size가 300인데 마지막 batch에 6개의 데이터만 들어간다면 이는 아래와 같은 이유들로 성능에 악영향을 미치게 됩니다.
1️⃣ Batch Normalization (BN) 문제
- 배치 크기가 너무 작아지면 Batch Normalization에서 평균/분산 추정이 불안정해짐
- 보통 BN은 batch_size가 16~32 이상일 때 안정적으로 동작하는데, 배치 크기가 6이면 통계 값이 제대로 계산되지 않을 수 있음
- 그 결과, 이전 배치들과 다른 스케일링이 적용되어 모델이 잘못된 업데이트를 수행할 가능성이 있음
2️⃣ Optimizer의 Gradient Update 문제
- 마지막 배치 크기가 6이므로, 이전 배치(300)보다 Gradient Update 크기가 매우 작아질 수 있음
- 만약 momentum이 높은 Optimizer (예: SGD with momentum=0.9)를 사용하면, 이전 배치(300)의 큰 gradient가 유지되고 마지막 배치(6)의 작은 gradient는 거의 무시됨
- 특히 Adam, RMSProp 등의 Adaptive Optimizer는 배치 크기가 작아질수록 학습 속도가 불안정해질 수 있음
이 때 가장 간단한 해결책으로는 DataLoader에 drop_Last 옵션을 추가하여 마지막 작은 배치를 제거해주면 됩니다.
dataloader = DataLoader(dataset, batch_size=300, shuffle=True, drop_last=True)
728x90
반응형
'AI Research > Deep Learning' 카테고리의 다른 글
[딥러닝 기본지식] Text-to-Image의 원리(Multi-Modal AI) (1) | 2025.01.02 |
---|---|
[딥러닝 기본지식] Inductive Bias (1) | 2023.10.01 |
[딥러닝 기본지식] Self Attention과 Transformer (2) (0) | 2023.08.24 |
[딥러닝 기본지식] Self Attention과 Transformer (1) (0) | 2023.08.19 |
[딥러닝 기본지식] Auto Regressive Models (0) | 2023.05.07 |