학습률 스케줄 계산기 쉽게 이해하기 — 개념과 원리
이 계산기는 딥러닝에서 널리 쓰이는 "선형 웜업 + 코사인 감쇠" 스케줄에서 특정 학습 단계의 학습률을 구합니다. 지금 옵티마이저가 실제로 어떤 학습률을 쓰고 있는지 확인하거나, 체크포인트에서 학습을 이어 갈 때, 긴 학습을 시작하기 전에 스케줄을 비교할 때 유용합니다.
계산 방법
- 웜업 구간(현재 단계 < 웜업 단계): 학습률 = 최대 학습률 × 현재 단계 ÷ 웜업 단계. 0에서 최대값까지 직선으로 올라갑니다.
- 코사인 감쇠 구간: 진행률 p = (현재 단계 − 웜업) ÷ (전체 단계 − 웜업)을 구한 뒤 학습률 = 최대 학습률 × [m + (1 − m) × 0.5 × (1 + cos(πp))]입니다.
m은 최소 학습률을 최대값에 대한 비율로 나타낸 값입니다. 단계는 에포크가 아니라 가중치를 한 번 갱신하는 횟수입니다.
원리
학습 초기에는 가중치가 무작위이고 Adam 같은 적응형 옵티마이저의 기울기 통계도 불안정해서, 처음부터 큰 보폭으로 움직이면 학습이 발산하기 쉽습니다. 웜업은 보폭이 작은 동안 이 통계가 자리 잡게 해 줍니다. 그 뒤에는 큰 학습률로 빠르게 탐색하고, 점차 줄여 좋은 최솟값 근처에 안착하게 합니다. 0.5 × (1 + cos(πp))는 p가 0에서 1로 갈 때 1에서 0으로 부드럽게 줄어드는데, 처음과 끝은 완만하고 중간에서 가장 빠르게 감소합니다. m은 바닥값을 두어 학습률이 0이 되지 않게 합니다. 이 모양은 SGDR(Loshchilov와 Hutter)에서 재시작 없이 가져온 것입니다.
예제 풀이
- 입력값: 최대 학습률 3e-4, 웜업 2,000, 전체 100,000, 현재 단계 50,000, 최소 비율 0.1입니다.
- 50,000은 웜업 이후이므로 코사인 식을 씁니다.
- p = 48,000 ÷ 98,000 ≈ 0.48980입니다.
- cos(π × 0.48980) ≈ 0.03205이므로 0.5 × (1 + 0.03205) ≈ 0.51603입니다.
- 배율 = 0.1 + 0.9 × 0.51603 ≈ 0.56442입니다.
- 학습률 = 3e-4 × 0.56442 ≈ 0.000169327(약 1.69e-4)입니다.
| 최대 학습률 | 해당 스텝의 학습률 |
|---|---|
| 7.5e-05 | 0.0000423317 |
| 0.00015 | 0.0000846635 |
| 0.000225 | 0.0001269952 |
| 0.0003 | 0.000169327 |
| 0.000375 | 0.0002116587 |
| 0.00045 | 0.0002539904 |
| 0.0006 | 0.0003386539 |
결과 해석
배율은 웜업이 끝난 시점에 1.0, 최소 비율이 0.1일 때 감쇠 구간의 정확한 중간에서 0.55, 마지막 단계에서 m이 됩니다. 예제의 50,000단계는 웜업 2,000단계 때문에 감쇠 구간의 중간보다 조금 앞이어서 0.55보다 약간 큽니다. 웜업은 전체의 1~5% 정도, 바닥값은 최대값의 0~0.1배로 두는 경우가 많습니다.
흔한 실수
- 단계 대신 에포크 수를 넣거나, 기울기 누적(gradient accumulation)을 고려하지 않는 경우입니다.
- 학습을 재개하면서 전체 단계를 바꾸어 곡선 전체가 달라지는 경우입니다.
- 최소 비율 0.1을 절대 학습률로 오해하는 경우입니다.
자주 묻는 질문
학습률이 왜 0에서 시작하나요?
0단계에서는 최대값 × 0 ÷ 웜업 = 0이 됩니다. 일부 구현은 0 대신 작은 비율에서 시작하기도 합니다.
전체 단계를 넘기면 어떻게 되나요?
이 식에서는 p가 1을 넘어 코사인 값이 다시 커집니다. 실제 스케줄러는 보통 최소값에서 멈추므로 입력한 전체 단계보다 오래 학습하지 않도록 하십시오.
코사인 감쇠가 선형 감쇠보다 항상 좋은가요?
그렇지 않습니다. 설정할 값이 적고 부드럽게 줄어 널리 쓰일 뿐, 잘 조정한 선형 감쇠도 비슷한 성능을 내는 경우가 많습니다.
출처: I. Loshchilov and F. Hutter, "SGDR: Stochastic Gradient Descent with Warm Restarts", ICLR 2017 · P. Goyal et al., "Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour", arXiv:1706.02677 (2017)