Deep Learning study
학습률 스케줄러 심층 가이드: 수학적 원리부터 실전 적용까지 본문
학습률 스케줄러 심층 가이드: 수학적 원리부터 실전 적용까지
포스트 요약: 최적화 성능을 좌우하는 학습률 스케줄링의 수학적 기반을 상세히 살펴보고, 주요 스케줄러(스텝, 지수, 코사인, 원사이클, 지표 기반)의 작동 원리·수식·코드 예제·실험 팁을 종합 제공합니다.
1. 학습률의 역할과 수학적 배경
경사 하강법(Gradient Descent)의 매 스텝 업데이트는
\[ \theta_{t+1} = \theta_t - \eta_t \,\nabla_\theta \mathcal{L}(\theta_t) \]
여기서 \(\eta_t\)는 학습률(learning rate)으로, 너무 크면 발산, 너무 작으면 수렴 속도가 느려집니다. 스케줄러는 에폭(epoch)·스텝(step)·성능 지표에 따라 \(\eta_t\)를 동적으로 조정해 최적화 궤적을 최적화합니다.
2. 주요 스케줄러와 수학적 원리
2.1 StepLR
일정 간격 \(s\)마다 학습률을 \(\gamma\) 배로 줄입니다:
\[ \eta_t = \eta_0 \,\gamma^{\lfloor t / s \rfloor} \]
- 장점: 구현 단순, 예측 가능한 감소
- 단점: 계단식(step) 변화로 학습 불안정 가능
scheduler = StepLR(optimizer, step_size=30, gamma=0.1)
2.2 ExponentialLR
매 스텝마다 지수적으로 감소합니다:
\[ \eta_t = \eta_0 \,\gamma^t \]
- 장점: 부드러운 감소
- 단점: 감소 속도 고정, 과도한 감소 우려
scheduler = ExponentialLR(optimizer, gamma=0.95)
2.3 CosineAnnealingLR
\(\eta\)를 코사인 곡선 형태로 스케줄링하여, 초기 탐색 후 점진적 안정화:
\[ \eta_t = \eta_{\min} + \tfrac{1}{2}(\eta_0 - \eta_{\min}) \Bigl(1 + \cos\!\tfrac{\pi\,t}{T_{\max}}\Bigr) \]
- \(T_{\max}\): 하나의 사이클 길이
- \(\eta_{\min}\): 최소 학습률
scheduler = CosineAnnealingLR(optimizer, T_max=50, eta_min=1e-6)
2.4 OneCycleLR
학습 초반 \(\eta\)를 증가 후 감소시키는 1-cycle 정책:
- 증가 구간: \(\eta_0 \to \eta_{\max}\)
- 감소 구간: \(\eta_{\max} \to \eta_{\min}\)
scheduler = OneCycleLR(
optimizer,
max_lr=0.01,
epochs=10,
steps_per_epoch=len(train_loader),
pct_start=0.3,
anneal_strategy='cos'
)
2.5 ReduceLROnPlateau
검증 지표(예: \(\text{val\_loss}\))가 개선되지 않으면 \(\eta\) 감소:
scheduler = ReduceLROnPlateau(
optimizer,
mode='min', factor=0.5,
patience=5, min_lr=1e-6
)
3. 실험: 학습 곡선 비교
학습률 곡선과 손실 변화를 동시에 시각화하면 효과를 직관적으로 파악할 수 있습니다:
import matplotlib.pyplot as plt
# lr_histories: dict[str, list] - 각 스케줄러별 lr 리스트
# loss_histories: dict[str, list] - 학습 손실 리스트
for name in lr_histories:
plt.plot(lr_histories[name], label=f'{name} lr')
plt.plot(loss_histories[name], label=f'{name} loss')
plt.legend()
plt.show()
4. 설정 비교 표
| 스케줄러 | 수식 | 장점 | 단점 |
|---|---|---|---|
| StepLR | \(\eta_0\gamma^{\lfloor t/s\rfloor}\) | 단순·예측 가능 | 계단식 변화 |
| ExponentialLR | \(\eta_0\gamma^t\) | 부드러운 감소 | 감속 고정 |
| CosineAnnealingLR | \(\tfrac{1}{2}(1+\cos(\pi t/T))\) | 사이클 형태 | 사이클 길이 설정 필요 |
| OneCycleLR | 증가→감소 1-cycle | 빠른 수렴, 일반화 | 파라미터 복잡 |
| ReduceLROnPlateau | 지표 기반 | 성능 개선 반영 | 노이즈 민감 |
5. 팁 & 추천 설정
- StepLR: 초기 lr 클수록 큰 step_size 권장
- Cosine: \(\eta_{\min}\)을 0에 가깝게 설정하면 수렴 후 fine-tuning 효과
- OneCycle: pct_start=0.3~0.4, anneal_strategy='cos'
- ReduceLROnPlateau: 지표 노이즈 완화를 위해 smoothing 적용
6. 결론 및 다음 단계
학습률 스케줄러는 딥러닝 성능 최적화의 핵심입니다. 모델·데이터 특성에 맞춰 적절한 스케줄러를 선택하고, 수식과 실험 결과를 기반으로 하이퍼파라미터를 튜닝하세요.
- 스케줄러 조합(예: Cosine + Warm Restarts) 실험
- 스케줄러와 옵티마이저(AdamW, Ranger) 상호작용 분석
- AutoLR 라이브러리(AutoML) 적용
참고 문헌
- PyTorch Documentation: Learning Rate Scheduler — https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate
- Smith, L. N. (2017). Cyclical Learning Rates for Training Neural Networks. WACV.
- Loshchilov, I., & Hutter, F. (2016). SGDR: Stochastic Gradient Descent with Warm Restarts. ICLR.
'AI > Deep learning 을 위한 지식' 카테고리의 다른 글
| 전이 학습(Transfer Learning) 심층 가이드: 이론부터 도메인 적응까지 (0) | 2025.04.18 |
|---|---|
| 과적합 vs 과소적합 심층 분석: 이론, 진단, 해결 전략 (0) | 2025.04.18 |
| 베이즈 정리(Bayes theorem)와 최대 우도 추정 (Maximum likelihood estimation, MLE) (0) | 2020.04.12 |
| Lipschitz function, Lipschitz constant(립시츠 함수, 립시츠 상수) (2) | 2019.09.08 |
| Vector norm, matrix norm (벡터 노름, 행렬 노름) (4) | 2019.08.31 |