Tensorflow, 케라스 콜백함수
ReduceLROnPlateau
모델의 개선이 없을 경우, Learning Rate를 조절해 모델의 개선을 유도하는 콜백함수입니다.
www.tensorflow.org/api_docs/python/tf/keras/callbacks/ReduceLROnPlateau
tf.keras.callbacks.ReduceLROnPlateau(
monitor='val_loss', factor=0.1, patience=10, verbose=0, mode='auto',
min_delta=0.0001, cooldown=0, min_lr=0, **kwargs
)
# Example
reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.2,
patience=5, min_lr=0.001)
model.fit(X_train, Y_train, callbacks=[reduce_lr])
인자 설명
인자 | 설명 |
monitor | ReduceLROnPlateau의 기준이 되는 값을 입력합니다. 만약 'val_loss'를 입력하면 val_loss가 더이상 감소되지 않을 경우 ReduceLROnPlateau을 적용합니다. 이외에도 다양한 값을 입력할 수 있습니다. |
factor | Learning rate를 얼마나 감소시킬 지 정하는 인자값입니다. 새로운 learning rate는 기존 learning rate * factor입니다. 예를 들어 현재 lr이 0.01이고 factor가 0.8일 때, 콜백함수가 실행된다면 그 다음 lr은 0.008이 됩니다. 또다른 예로 현재 lr이 0.3이고 factor가 0.1일 때, 콜백함수가 실행된다면 그 다음 lr은 0.03이 됩니다. |
patience | Training이 진행됨에도 더이상 monitor되는 값의 개선이 없을 경우, 최적의 monitor 값을 기준으로 몇 번의 epoch을 진행하고, learning rate를 조절할 지의 값입니다. 예시를 통해 이해하는 게 더 좋을 것 같습니다. 예를 들어 patience는 3이고, 30에폭에 정확도가 99%였을 때, 만약 31번째에 정확도 98%, 32번째에 98.5%, 33번째에 98%라면 모델의 개선이 (patience=3)동안 개선이 없었기에, ReduceLROnPlateau 콜백함수를 실행합니다. |
verbose | 0 또는 1 1일 경우, EarlyStopping이 적용될 때, 화면에 적용되었다고 나타냅니다. 0일 경우, 화면에 나타냄 없이 종료합니다. |
mode | "auto" 또는 "min" 또는 "max" monitor되는 값이 최소가 되어야 하는지, 최대가 되어야 하는지 알려주는 인자입니다. 예를 들어, monitor하는 값이 val_acc 즉 정확도일 경우, 값이 클수록 좋기때문에 "max"를 입력하고, val_loss일 경우 작을수록 좋기 때문에 "min"을 입력합니다. "auto"는 모델이 알아서 판단합니다. |
min_delta | 개선된 것으로 간주하기 위한 최소한의 변화량입니다. 예시로 이해하는 게 좋을 것 같습니다. 예를 들어, min_delta가 0.01이고, 30에폭에 정확도가 0.8532라고 할 때, 만약 31에폭에 정확도가 0.8537라고 하면 이는 0.005의 개선이 있었지만 min_delta 값 0.01에는 미치지 못했으므로 개선된 것으로 보지 않습니다. |
cooldown | Learning rate가 감소한 후, ReduceLROnPlateau 콜백함수를 다시 실행하기 전에 대기 할 Epoch 수입니다. 예시로 이해하는 게 좋을 것 같습니다. 예를 들어, factor가 3이고, cooldown이 5일 때, 만약 ReduceLROnPlateau이 적용되어 learning rate가 감소되었다고 합시다. 감소된 이후에도, 3에폭 연속 monitor 값의 개선이 없다고 해도, ReduceLROnPlateau는 실행되지 않습니다. cooldown이 적용되고 있기 때문입니다. cooldown 값인 5 에폭 실행 후, 3번 연속 moniort 값의 개선이 없을 시, ReduceLROnPlateau이 다시 적용됩니다. |
min_lr | Learning rate의 하한선을 지정합니다. 예를 들어 현재 lr이 0.1이고 factor가 0.5이고, min_lr이 0.03이라면, 첫 번째로 콜백함수가 적용될 시, lr은 0.05(0.1*0.5)이 됩니다. 두 번째로 콜백함수가 적용된다면 0.025(0.1*0.5*0.5)이지만, min_lr이 0.03이기 때문에, 새로운 learning rate는 0.025가 아닌, 0.03이 됩니다. |
간단한 사용 예시는 아래 링크를 참조해주세요!
텐서플로우 콜백 함수(tensorflow callback)
'Tensorflow' 카테고리의 다른 글
IMDB에 Bidirectional LSTM 모델 적용하기 (0) | 2020.12.17 |
---|---|
케라스: 시계열을 활용한 기상(weather) 예측 (2) | 2020.12.16 |
Tensorflow 콜백함수: EarlyStopping (1) | 2020.11.18 |
tensorflow 콜백함수: ModelCheckpoint (0) | 2020.11.17 |
Image Augmentation 라이브러리 albumentations 사용법 (0) | 2020.11.13 |