콜백은 학습 루프를 운영하는 제어 장치야
fit()이 학습 루프를 돌린다면, 콜백은 정해진 시점마다 그 루프를 관찰하고 개입해. 에포크나 배치의 시작과 끝, 전체 학습의 시작과 끝에서 평가지표를 읽고 중단·저장·학습률 조정·기록 같은 행동을 수행하지. 콜백 없이 긴 학습을 시작하면 과적합을 알아도 멈추지 못하고, 실행이 끊겼을 때 가장 좋았던 모델도 남지 않을 수 있어.
일회성 스크립트를 학습 파이프라인으로 바꾸는 네 가지
EarlyStopping은 val_loss가 patience만큼의 에포크 동안 좋아지지 않으면 학습을 끝내. 이때 restore_best_weights=True를 켜야 마지막 가중치가 아니라 검증 손실이 가장 낮았던 가중치로 돌아가. ModelCheckpoint에 save_best_only=True를 주면 학습 도중 가장 좋은 모델을 디스크에 보존하므로 실행이 중단돼도 성과를 잃지 않아. ReduceLROnPlateau는 개선이 정체됐을 때 학습률을 낮춰 더 섬세한 탐색을 돕고, CSVLogger나 TensorBoard는 과정을 나중에 분석할 수 있게 기록해.
콜백 목록의 순서는 중요하지 않아. 각 콜백이 자신의 상태와 관찰값을 독립적으로 관리하기 때문이야. monitor로 관찰할 값을, patience로 기다릴 기간을, min_delta로 의미 있는 최소 개선 폭을 정해. 기본 콜백으로 부족하다면 keras.callbacks.Callback을 상속하고 on_epoch_begin, on_batch_end, on_train_end 같은 훅을 재정의하면 돼. 훅에 전달되는 logs 딕셔너리에서 현재 평가지표를 읽을 수 있어.