[Keras] 콜백함수 (1) - 학습률(learning rate): ReduceLROnPlateau
Jan 18, 2020

keras의 콜백함수인 ReduceLROnPlateau는 학습률이 개선되지 않을 때, 학습률을 동적으로 조정하여 학습률을 개선하는 효과를 기대할 수 있습니다. 경사하강법에 의하여 학습을 하는 경우 Local Minima에 빠져버리게 되면, 더이상 학습률이 개선되지 않고 정체되거나, 심하게 튀는 현상을 경험하신 분들이 많으실껍니다.

2020-01-19-img-01

위의 그림처럼, Local Minima에 빠져버린 경우, 쉽게 빠져나오지 못하고 갇혀버리게 되는데, 이때 learning rate를 늘리거나 줄여주는 방법으로 빠져나오는 효과를 기대할 수 있습니다.

Keras에는 콜백함수로 제공하고 있으며, ReduceLROnPlateau이 바로 그 역할을 합니다.

from keras.callbacks import ReduceLROnPlateau

# 콜백 정의
reduceLR = ReduceLROnPlateau(
    monitor='val_loss',  # 검증 손실을 기준으로 callback이 호출됩니다
    factor=0.5,          # callback 호출시 학습률을 1/2로 줄입니다
    patience=10,         # epoch 10 동안 개선되지 않으면 callback이 호출됩니다
)

# model.fit 때 callback
history = model.fit(x_train, y_train, 
      validation_data=(x_valid, y_valid),
      epochs=EPOCH, 
      batch_size=BATCH_SIZE, 
      callbacks=[reduceLR], 
     )


관련 글 더보기

- 딥러닝(LSTM)을 활용하여 삼성전자 주가 예측을 해보았습니다

- [Keras] 콜백함수 (3) - 조기종료: EarlyStopping

- [Keras] 콜백함수 (2) - weight 중간 저장: ModelCheckpoint

- [Keras] 손실함수(Loss Function)와 평가지표(metric) 커스텀하기

- keras를 활용한 word2vec pre-trained 모델을 로딩하여 IMDB 감정분석 분류문제 해결하기

데이터 분석, 머신러닝, 딥러닝의 대중화를 꿈 꿉니다.