callback 은 학습의 control plane
fit() 이 루프를 돌리지만, 그 루프를 *똑똑하게* 만드는 건 callback 이야. Keras 가 정해진 지점에서 터뜨리는 hook — epoch 시작/끝, batch 마다, 전체 run — 이고, 그 안에서 callback 이 metric 읽고 행동해. 일찍 멈추고, checkpoint 저장하고, learning rate 내리고, log 쓰고. callback 없는 학습은 fire-and-forget 스크립트라 GPU 시간을 overfitting 에 날리고 best model 을 건질 방법도 안 남겨.
스크립트를 pipeline 으로 만드는 4 개
Code 섹션이 핵심 set 을 연결해. EarlyStopping 은 val_loss 를 보다가 patience epoch 동안 개선 없으면 중단 — 그리고 결정적으로 restore_best_weights=True 가 살짝 overfit 된 마지막 상태 말고 best 지점으로 model 을 되돌려줘. ModelCheckpoint 의 save_best_only=True 는 진행하면서 best weight 를 disk 에 남겨서 crash 나도 run 을 안 잃어. ReduceLROnPlateau 는 진전 멈추면 LR 깎아서 plateau 에서 정확도를 더 짜내. 네 번째 자리는 logger — 여기선 CSVLogger, live curve 원하면 TensorBoard 로 교체.
이 4 개는 list 순서 상관없어 — 각자 독립적으로 state 읽거든. monitor='val_loss' 로 어떤 metric 볼지, patience 로 몇 epoch 기다릴지, min_delta 로 의미있는 변화 최소값 지정. built-in 으로 안 되면 keras.callbacks.Callback subclass 해서 필요한 hook override — on_epoch_begin, on_batch_end, on_train_end 다 현재 metric 의 logs dict 를 받아.