LR Scheduler
LR Scheduler
LR Scheduler
- 머신 러닝에서는 learning rate(lr)는 아주 중요한 존재, 이 값이 너무 크거나 작으면 학습이 안 됨
- 이 lr을 처음부터 끝까지 같은 값으로 사용할 수도 있음
- 그러나 변화의 폭이 큰 초반에는 큰 lr을, 폭이 작은 후반에는 lr을 작게 설정하는 것이 좋을 수 있음
- 혹은 계속 lr을 변화시키는 방법도 효과적일 수 있음
- 이렇게 learning rate를 계속 변경해주는 라이브러리로 learning rate scheduler 등장
- pytorch에서는 매 epoch마다
scheduler.step()
을 실행해 주면 됨
- Optimizer과는 다른 개념!
종류
- LambdaLR: 초기값에 사전 정의된 람다 함수 값을 곱해서 lr을 줄임
- StepLR: 특정 step마다 람다 함수 값을 곱해서 lr을 줄임, 계단 함수 형태
- ExponentialLR: 지수함수를 이용해 lr을 줄임
- CosineAnnealingLR: 코사인 함수를 이용해 lr을 늘렸다 / 줄였다 반복
- CyclicLR: 주기적으로 lr을 늘렸다 줄였다 하면서 변경, consine과 비슷하지만 여러 모드를 사용하면서 계속 lr을 바꿔줌
- OneCycleLR: 하나의 주기로 lr을 늘렸다 줄임
- CosineAnnealingWarmRestarts: Cosine 함수를 이용해 lr을 줄이되, 일정 주기마다 다시 lr을 초기화
References
- https://sanghyu.tistory.com/113
- https://gaussian37.github.io/dl-pytorch-lr_scheduler/