학습률을 일정하게 유지하는 건 거의 최선이 아니야
학습률 감쇠는 높은 값으로 시작해 점차 낮추는 방식이야. 딥러닝에서 적은 노력으로 얻을 수 있는 가장 확실한 개선 중 하나지. PyTorch에는 여러 학습률 조정기가 있지만 다음 세 가지를 자주 사용해:
StepLR:step_size에포크마다 학습률에 gamma를 곱해. 간단하고 예측하기 쉬운 오래된 기본값이야.CosineAnnealingLR:T_max단계 동안 초기 학습률에서eta_min까지 부드러운 코사인 곡선으로 낮춰. 현대적인 Transformer와 비전 학습에서 선호해.OneCycleLR: 한 주기 안에서 워밍업한 뒤 감쇠해. Leslie Smith의 1cycle 정책을 구현하며 빠른 학습에 강해.
워밍업은 왜, 어떻게 쓸까?
현대적인 Transformer 학습은 거의 항상 수백 단계의 워밍업으로 시작해. 학습률을 0에서 목표값까지 선형으로 올린 뒤 감쇠하는 방식이야. 워밍업이 없으면 무작위로 초기화된 매개변수와 큰 손실이 거친 기울기를 만들고, 옵티마이저가 첫 단계부터 파괴적인 갱신을 할 수 있어. 워밍업을 쓰면 손실 지형의 안정된 구간으로 부드럽게 진입해.
워밍업과 코사인 감쇠를 함께 쓰려면 SequentialLR로 두 조정기를 연결하거나 사용자 정의 LambdaLR를 만들 수 있어. 직접 구현하고 싶지 않다면 Hugging Face의 get_cosine_schedule_with_warmup이 좋은 기준 구현이야.
알맞은 단위에서 갱신해
- 에포크 단위 조정기(StepLR, 에포크 단위 CosineAnnealingLR)는 에포크마다 한 번
scheduler.step()을 호출해. - 단계 단위 조정기(OneCycleLR, 단계 단위 LambdaLR)는 배치마다 한 번
scheduler.step()을 호출해.