과적합(Overfitting)은 모델이 훈련 데이터에 지나치게 맞춰져서,
새로운 입력 데이터에 대응하지 못하는 현상을 말한다.
즉, 훈련 데이터에 대해서는 높은 정확도를 보이지만,
실제 응용에서는 예측이 부정확해지는 문제가 발생하는 것입니다.
과적합을 확인하기 위해 일반적으로는 훈련 데이터와 검증 데이터(또는 개발 데이터)의 손실(loss) 또는 정확도(accuracy)를 그래프로 나타내는 방법을 사용한다.
검증 데이터에 대한 손실은 훈련이 진행됨에 따라 감소하다가 어느 시점부터 오히려 증가하는 경향을 보이는데 이는 과적합의 신호로 볼 수 있다.
텐서플로에선 테스트셋 오차가 줄어들지 않으면
학습을 자동으로 멈추게 하는 함수 EarlyStopping()이 존재한다.
from tensorflow.keras.callbacks import EarlyStopping
es_callback = EarlyStopping(monitor='val_loss', patience=20)
EarlyStopping함수 임포트 후 변수에 저장
검증셋의 오차가 20번 이상 낮아지지 않을 경우 학습을 종료하도록 설정
modelpaht="경로"
checkpointer = ModelCheckpoint(filepath=modelpath, monitor='val_loss',
verbose=0, save_best_only=True)
체크 포인트 설정
history = model.fit(X_train, y_train, epochs=200, batch_size=500,
validation_split=0.25, verbose=1, callbacks=[es_callback, checkpointer])
callbacks에서 설정해둔 변수 배열에 넣어준다.
자동으로 최적 에포크를 찾아 멈출 것이므로 epchos값은 넉넉하게 준다.