파이토치에서 조기 종료와 함께 자주 사용되는 것으로 학습률 감소(learning rate decay)라는 것이 있습니다. 학습률에 대한 값을 고정시켜서 모델을 학습시키는 것이 아니라 학습이 진행되는 과정에서 학습률을 조금씩 낮추어 주는 성능 튜닝 기법 중에 하나입니다. 학습률 감소는 학습률 스케줄러(learning rate scheduler)라는 것을 이용하는데, 주어진 ‘patience’ 횟수만큼 검증 데이터셋에 대한 오차 감소가 없으면 역시 주어진 ‘factor’만큼 학습률을 감소시켜서 모델 학습의 최적화가 가능하도록 도와줍니다. 다음 코드를 통해 자세히 살펴보겠습니다.
코드 8-24 학습률 감소
class LRScheduler():
def __init__(
self, optimizer, patience=5, min_lr=1e-6, factor=0.5
):
self.optimizer = optimizer
self.patience = patience
self.min_lr = min_lr
self.factor = factor
self.lr_scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(
self.optimizer,
mode='min',
patience=self.patience,
factor=self.factor,
min_lr=self.min_lr,
verbose=True
) ------ ①
def __call__(self, val_loss):
self.lr_scheduler.step(val_loss) ------ ②