
v1 Cosine LR 은 에서 바로 . 실전 딥러닝 (BERT, GPT, ViT) 에서는 선형 warmup 추가 — 초반 학습 안정성 확보:
\eta_{\max} \cdot \dfrac{t}{t_w} & t < t_w \\[6pt] \eta_{\min} + \dfrac{1}{2}(\eta_{\max} - \eta_{\min}) \!\left(1 + \cos\!\dfrac{\pi (t - t_w)}{T - t_w}\right) & t \ge t_w \end{cases}$$ ## 왜 warmup 이 필요한가 - 초기 random weight 에서는 gradient 가 불안정 → 큰 lr 시 발산 위험. - 처음 몇 step 을 **작은 lr** 로 시작 → 정규화·Loss landscape 적응. - Transformer 에서 특히 중요 (attention softmax 포화). ## 일반적 세팅 - $t_w \approx 1000$ ~ $10000$ steps (전체의 1-10%). - $\eta_{\max} = 10^{-3}$ (AdamW). - $\eta_{\min} = 0$ 또는 $10^{-5}$. - 총 스텝 $T$: 전체 training iteration. ## 과제 함수 `warmup_cosine_lr(t, T, warmup_steps, lr_max, lr_min)` 를 완성하세요. - `t`: 스칼라 또는 배열. - 반환: 같은 shape lr 값. - $t < t_w$ 에서 linear ramp, $t_w \le t \le T$ 에서 cosine. - $t > T$ 의 경우 $\eta_{\min}$ (clamp). ## 테스트 케이스 | # | 이름 | 검증 | |---|---|---| | 1 | t=0 → 0 (또는 lr_max·0/warmup) | | | 2 | t=warmup_steps → lr_max (warmup 끝) | | | 3 | t=T → lr_min | | | 4 | t < warmup_steps 영역: 선형 증가 | | | 5 | warmup 끝 이후 단조 감소 | | | 6 | t > T → lr_min (clamp) | | | 7 | warmup_steps=0 → v1 cosine 과 일치 | |코드를 작성하고 Run 을 눌러보세요.