본문 바로가기
AI/Deep-Learning

[Keras] EarlyStopping

by Wikinist 2023. 9. 21.

EarlyStopping은 머신 러닝 모델의 훈련을 중지시키는 콜백(callback) 클래스 중 하나로, 특정 조건이 충족되면 모델 훈련을 조기에 멈추도록 도와주는 역할을 합니다. 이 클래스는 주로 훈련 중 과적합(overfitting)을 방지하거나, 최상의 검증 성능을 갖는 모델을 선택하기 위해 사용됩니다. 

시그니처

EarlyStopping 클래스의 시그니처 (메서드와 파라미터)는 라이브러리 또는 프레임워크에 따라 다를 수 있지만, 일반적인 시그니처는 다음과 같습니다:

from tensorflow.keras.callbacks import EarlyStopping

EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto', baseline=None, restore_best_weights=False)

주요 파라미터

monitor

모니터링할 지표를 지정합니다. 보통 검증 데이터셋의 손실 함수 (예: 'val_loss')나 검증 정확도 (예: 'val_accuracy') 등을 모니터링합니다. 이 지표가 개선되지 않으면 조기 중지가 작동합니다.

patience

patience는 조기 중지를 얼마나 기다릴지를 지정합니다. 훈련 중에 monitor로 지정한 지표가 개선되지 않더라도 몇 번의 에포크를 추가로 기다릴 것인지를 나타냅니다. 예를 들어, patience=10으로 설정하면 10번의 에포크 동안 지표가 개선되지 않으면 훈련이 중지됩니다.

restore_best_weights

이 옵션을 True로 설정하면, 조기 중지가 발생한 후 모델을 다시 초기화하지 않고 최상의 성능을 갖는 에포크에서의 가중치를 복원합니다. 이렇게 하면 조기 중지 이후에도 최상의 모델을 사용할 수 있습니다. 만약 False로 설정하면 조기 중지 이후의 모델 가중치는 마지막 에포크에서의 것으로 유지됩니다.

min_delta (부동 소수점)

지정한 지표가 개선되었다고 판단되기 위한 최소 변경량입니다. 예를 들어, min_delta=0.001로 설정하면 지표가 0.001보다 작은 개선이 없을 때 조기 중지됩니다.

verbose (정수)

출력 메시지의 상세도를 제어합니다. 0일 경우 아무런 출력이 없고, 1일 경우 메시지를 출력합니다.

mode (문자열)

monitor로 지정한 지표를 어떻게 해석할지를 나타내는 문자열입니다. 주로 'auto', 'min', 또는 'max' 중 하나를 선택합니다. 'auto'는 지표에 따라 자동으로 최소값 또는 최대값을 선택합니다.

baseline (부동 소수점)

모델 성능의 기준선(baseline)으로 사용할 값입니다. 이 값보다 개선될 때만 조기 중지를 고려합니다. 기준선을 설정하면 초기에 모델의 성능이 개선되지 않더라도 조기 중지를 방지할 수 있습니다.

EarlyStopping 콜백을 사용하면 모델 훈련 중에 지정한 조건이 만족될 때 훈련을 멈출 수 있으므로, 과적합을 방지하고 최상의 모델을 선택하는 데 도움이 됩니다. 이를 통해 불필요한 계산 자원과 시간을 절약할 수 있습니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'AI > Deep-Learning' 카테고리의 다른 글

[Keras] Sequential 모델과 Dense, Dropout  (0) 2023.09.21
LSTM(Long Short-Term Memory)  (2) 2023.09.18
[TensorFlow] Tokenizer  (0) 2023.09.13
순환신경망(Recurrent Neural Network, RNN)  (0) 2023.09.13
풀링 레이어 (Pooling Layer)  (0) 2023.09.13