← 문제 목록/Cosine Learning Rate Schedule
문제 해설

Cosine Learning Rate Schedule

최적화 · easy

preview

Cosine Learning Rate Schedule

75번 AdamW 로 가중치 업데이트를 배웠다면, 현대 학습의 또 다른 필수 요소는 학습률 스케줄링. Cosine schedule 은 현재 가장 널리 쓰이는 방식:

ηt=ηmin+12(ηmaxηmin)(1+cos(πtT))\eta_t = \eta_{\min} + \frac{1}{2}(\eta_{\max} - \eta_{\min})\left(1 + \cos\left(\frac{\pi t}{T}\right)\right)

  • t=0t = 0: ηt=ηmax\eta_t = \eta_{\max} (최대)
  • t=Tt = T: ηt=ηmin\eta_t = \eta_{\min} (최소, 보통 0)
  • 중간: 부드러운 코사인 감소 — 시작은 빠르게, 끝은 천천히.

왜 cosine 인가

  • step decay (50% 지점마다 /10) 는 급변 — gradient estimate 를 망가뜨림.
  • linear decay 는 끝이 너무 빠름.
  • cosine 은 처음엔 lr 큰 구간을 유지해 탐색하고, 후반에 부드럽게 안착 → 실험적으로 가장 잘 동작.
  • SGDR (cosine with warm restarts) 의 기본 블록.

Warmup 과 함께

현대 (LLM) 학습은 보통:

  1. Warmup phase: 0ηmax0 \to \eta_{\max} 선형 증가 (첫 수 %).
  2. Cosine decay: ηmaxηmin\eta_{\max} \to \eta_{\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 <= 0lr_max; t >= total_stepslr_min 로 clamp.

테스트 케이스

#이름검증
1t=0 → lr_max
2t=T → lr_min
3t=T/2 → (lr_max+lr_min)/2코사인 정의상
4단조 감소모든 t 에서 dlr/dt ≤ 0
5t > T 는 lr_min clamp
6배열 입력 지원
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.