Learning Rate Schedule — 학습률을 어떻게 조절할까

난이도: 초중급

태그: 기초수학,최적화,딥러닝기초

분류: foundations

타입: concept

선수지식: 있음 — 경사하강법, optimizer, learning rate

optimizer를 결정했다면, 다음으로 중요한 것이 learning rate schedule이다. 실제로 optimizer 선택보다 성능에 더 큰 영향을 주는 경우가 많다.

문제 설정

learning rate η는 업데이트 크기를 직접 결정한다. 실제 학습에서는 고정값 대신 warmup과 cosine decay 같은 schedule을 사용해 초기 안정성과 후반 수렴 품질을 함께 확보한다.

한 줄 요약

학습 초반에는 크게, 후반에는 작게. 이 원칙을 어떻게 구현할지가 learning rate schedule이다.

발전 흐름

Constant → Step decay → Exponential → Linear → Cosine → Warmup → Cosine+Warmup (현재 표준)

이 문서를 읽고 설명할 수 있어야 하는 핵심 3가지

처음 보는 사람용 핵심 용어

1단. 왜 learning rate를 바꿔야 하나

기본 gradient descent 수식에서 η가 고정이면 문제가 생긴다.

w = w - η * ∇L
시점상태고정 lr의 문제필요한 lr
초반loss 크고, 최적점에서 멀다너무 작으면 수렴이 느림크게
후반loss 작고, 최적점 근처너무 크면 overshoot 발생작게

두 조건을 동시에 만족하는 고정 lr은 없다. → schedule 필요.

2단. Constant — 가장 단순 (거의 안 씀)

lr = 0.001  # 항상 동일

초반에 느리거나 후반에 overshoot. 현재 단독으로는 거의 사용하지 않는다.

3단. Step Decay — 초기 CNN의 표준

η = η₀ * γ**k      # k: 감소 횟수, γ: 감소 비율 (예: 0.1)

# 예시
epoch  0~30  → lr = 0.1
epoch 30~60  → lr = 0.01
epoch 60~90  → lr = 0.001

단순하고 효과적이라 VGG, ResNet 등 초기 CNN 학습에서 오래 사용됐다. 계단식으로 lr이 떨어지는 것이 특징.

4단. Exponential / Linear Decay

# Exponential decay
η_t = η₀ * exp(-k * t)       # 빠르게 감소, 점점 완만

# Linear decay (Transformer 이후 많이 씀)
η_t = η₀ * (1 - t / T)       # T: 총 step 수. 끝에서 0이 됨

Linear decay는 구현이 쉽고 안정적이라 Transformer 초기 학습에서 많이 사용됐다.

5단. Cosine Decay — Vision과 LLM 모두 많이 쓰임

η_t = η_min + 0.5 * (η_max - η_min) * (1 + cos(π * t / T))
# t: 현재 step, T: 총 step, η_min: 최소 lr (보통 0)

처음에는 빠르게 감소하고, 후반에는 매우 천천히 감소한다. 이 덕분에 수렴 직전 미세 조정이 정밀하다.

6단. Warmup — Transformer의 핵심

초기 파라미터가 랜덤 상태일 때 큰 lr을 쓰면 gradient가 폭발한다. 처음 몇 step 동안 lr을 0에서 천천히 올린다.

if step < warmup_steps:
    lr = peak_lr * (step / warmup_steps)   # 0 → peak_lr 선형 증가
else:
    lr = decay_schedule(step)              # 이후 decay 시작

Attention Is All You Need (2017) 논문에서 처음 도입. Transformer schedule 수식:

lr = d_model**(-0.5) * min(step**(-0.5), step * warmup_steps**(-1.5))
# warmup 구간: step 증가 → lr 증가
# 이후 구간: step 증가 → lr 감소 (step^-0.5 에 의해 자동 감소)

7단. Cosine + Warmup — 현재 LLM 표준

warmup으로 안정적으로 시작하고, cosine으로 정밀하게 수렴한다. 현재 가장 널리 쓰이는 조합.

if step < warmup_steps:
    lr = peak_lr * (step / warmup_steps)           # 선형 warmup
else:
    progress = (step - warmup_steps) / (total_steps - warmup_steps)
    lr = eta_min + 0.5 * (peak_lr - eta_min) * (1 + cos(π * progress))
    # cosine decay

GPT, LLaMA 등 대부분의 LLM 사전학습에서 이 조합을 사용한다.

8단. 기타 스케줄

스케줄아이디어사용처
Reduce on Plateauval loss 정체 시 lr 감소 (자동 조절)소규모 실험
One Cycle Policylr 증가 → 감소 (/\ 형태)Vision, FastAI
Cosine with Restarts (SGDR)cosine decay 후 lr reset 반복local minimum 탈출 실험

핵심 수식 정리

스케줄수식
Step decayη = η₀ · γᵏ
Exponentialη_t = η₀ · e^(−kt)
Linearη_t = η₀(1 − t/T)
Cosineη_t = η_min + ½(η_max − η_min)(1 + cos(πt/T))
Transformerlr = d^(−0.5) · min(step^(−0.5), step · warmup^(−1.5))

현업 사용 정리

분야추천 스케줄
Vision (CNN)Cosine decay, Step decay
Transformer (소/중형)Warmup + Linear decay
LLM 사전학습Warmup + Cosine decay

Optimizer와 LR Schedule의 관계

Adam은 파라미터별로 adaptive lr을 적용하지만, 전체 lr의 절대 크기는 schedule로 따로 조절해야 한다.

둘은 독립적으로 작동한다. AdamW를 써도 schedule 없이 고정 lr을 쓰면 성능이 크게 떨어지는 경우가 많다.

예상 질문 5개와 답변

다음에 스스로 해볼 실습 2가지

관련 문서