학습률(Learning Rate)은 딥러닝 모델의 학습 속도와 안정성을 좌우하는 중요한 하이퍼파라미터다.
너무 크면 학습이 불안정해지고, 너무 작으면 학습 속도가 느려질 수 있다.
이 문제를 해결하기 위해 학습률 조정(Learning Rate Scheduling) 기법을 사용하며, 이를 통해 학습 과정에서 동적으로 학습률을 최적화한다.
Cosine Annealing은 학습률을 코사인 함수의 형태로 점진적으로 감소시키는 방법이다.
필요에 따라 학습률을 다시 증가시켜 새로운 국소 최소값을 탐색할 수도 있다.
from tensorflow.keras.optimizers.schedules import CosineDecay
lr_schedule = CosineDecay(
initial_learning_rate=0.01,
decay_steps=1000,
alpha=0.0
)
초반에는 학습률을 점진적으로 증가시켜 모델이 안정적으로 학습에 진입하도록 하고, 이후에는 점차 감소시키는 방식이다.
def warmup_decay_schedule(epoch, lr):
if epoch < 5:
return lr + 0.0002
else:
return lr * 0.95
OneCycle은 학습 초기에 빠르게 최대 학습률로 도달한 후 점진적으로 감소시키는 방식이다.
이는 학습 속도를 가속화하면서도 안정성을 유지하는 데 효과적이다.
from tensorflow.keras.optimizers.schedules import PolynomialDecay
lr_schedule = PolynomialDecay(
initial_learning_rate=0.01,
decay_steps=1000,
end_learning_rate=0.0001,
power=1.0
)
ReduceLROnPlateau는 일정 기간 동안 모델의 성능(예: 검증 손실)이 개선되지 않을 경우 학습률을 줄이는 방식이다.
from tensorflow.keras.callbacks import ReduceLROnPlateau
reduce_lr = ReduceLROnPlateau(
monitor='val_loss',
factor=0.1,
patience=10,
min_lr=0.00001
)
학습률 조정은 모델 학습의 안정성과 효율성을 높이는 핵심 전략이다.
본 글에서 소개한 다양한 기법들을 활용하여, 자신만의 최적의 학습률 전략을 설계해보자.