본문 바로가기

Data Science/Deep Learning

[Pytorch] Learning Rate Scheduler

728x90

Learning Rate Scheduler란?

  • 처음부터 끝까지 같은 learning rate(ex) 0.001)를 사용할 수도 있지만, 학습과정에서 미리 정의된 schedule에 따라 learning rate를 조정하는 learning rate scheduler를 사용할 수도 있다.  
  • 처음엔 큰 learning rate(보폭)으로 빠르게 optimize를 하고 최적값에 가까워질수록 learning rate(보폭)를 줄여 미세조정을 하는 것이 학습이 잘된다고 알려져있다.
  • learning rate을 줄이는 보편적인 schedule 방식에는 시간에 따라 줄이는 time-based decay, 특정 epoch마다 줄이는 step decay와 exponential decay , learning rate를 줄였다 늘렸다 하는 방식 등이 있다. 

https://miro.medium.com/max/1400/1*7xeRIjAhnih6EWKrOk_aKw.png

  • PyTorch에서는 기본적으로 다양한 learning rate scheduler를 제공하고 있다. 
from torch.optim import lr_scheduler

 

1. LamdaLR

  • Epoch에 따른 가중치로 lr 를 점점 감소 시키는 Scheduler
optimizer = torch.optim.SGD(model.parameters(), lr=100)
lambda1 = lambda epoch: 0.65 ** epoch
scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lambda1)

 

2. MultiplicativeLR

  • 이전 Epoch에 따른 가중치로 lr 를 감소시키는 Scheduler
scheduler = lr_scheduler.MultiplicativeLR(optimizer, lr_lambda=lmbda)

 

3. StepLR

특정 Step에 따라 lr 를 감소시키는 Scheduler

 

(작성중)

 

 

Reference

https://dacon.io/codeshare/2373

 

다양한 Learning Rate Scheduler(pytorch)

제 2회 컴퓨터 비전 학습 경진대회

dacon.io

 

반응형