
Cosine Learning Rate Schedule
75번 AdamW 로 가중치 업데이트를 배웠다면, 현대 학습의 또 다른 필수 요소는 학습률 스케줄링. Cosine schedule 은 현재 가장 널리 쓰이는 방식:
ηt=ηmin+21(ηmax−ηmin)(1+cos(Tπt))
- t=0: ηt=ηmax (최대)
- t=T: ηt=ηmin (최소, 보통 0)
- 중간: 부드러운 코사인 감소 — 시작은 빠르게, 끝은 천천히.
왜 cosine 인가
- step decay (50% 지점마다 /10) 는 급변 — gradient estimate 를 망가뜨림.
- linear decay 는 끝이 너무 빠름.
- cosine 은 처음엔 lr 큰 구간을 유지해 탐색하고, 후반에 부드럽게 안착 → 실험적으로 가장 잘 동작.
- SGDR (cosine with warm restarts) 의 기본 블록.
Warmup 과 함께
현대 (LLM) 학습은 보통:
- Warmup phase: 0→ηmax 선형 증가 (첫 수 %).
- Cosine decay: ηmax→ηmin.
이 문제에선 warmup 없이 순수 cosine 만.
과제
함수 cosine_lr(t, total_steps, lr_max, lr_min=0.0) 를 완성하세요.
- 입력: 스칼라 또는 array
t, 정수 total_steps, 스칼라 lr_max, lr_min.
- 반환:
t 와 같은 shape. t <= 0 → lr_max; t >= total_steps → lr_min 로 clamp.
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | t=0 → lr_max | |
| 2 | t=T → lr_min | |
| 3 | t=T/2 → (lr_max+lr_min)/2 | 코사인 정의상 |
| 4 | 단조 감소 | 모든 t 에서 dlr/dt ≤ 0 |
| 5 | t > T 는 lr_min clamp | |
| 6 | 배열 입력 지원 | |