compile + fit + callback. 세 줄 뒤에 state machine, optimizer step, loss reduction, metrics accumulator, callback bus 다 숨어있어. fit() 이 이상한 짓 할 때 *어느 손잡이* 가 풀렸는지 정확히 알게 해주는 unpack 트랙.
compile 이 진짜 하는 일
compile 은 weight 를 건드리지도, forward pass 한 번 돌리지도 않아. 순수 *환경 설정* 이야. 셋을 model 에 박아둬서 fit() 이 어떻게 배워야 할지 알게 해주는 거지. optimizer 는 gradient 를 weight 업데이트로 바꾸는 방법, loss 는 optimizer 가 0 으로 밀어붙일 scalar 목표값, metrics 는 gradient 엔 손 안 대고 진행 상황만 읽어주는 observer.
Code 섹션에 두 형태 — classification compile 과 regression compile. 둘 사이에 바뀌는 건 loss 랑 metrics 뿐이고 호출 구조는 똑같아. 패턴 하나 외우면 둘 다 끝.
문자열 vs 인스턴스 — 나중에 왜 중요한지
빠르게는 문자열 ('adam', 'mse'), 제대로 조절하려면 인스턴스. 'adam' 은 default learning rate 의 Adam 을 주고, keras.optimizers.Adam(learning_rate=1e-3) 은 직접 정하게 해줘. hyperparameter 튜닝하거나 learning-rate schedule 붙이거나 model 에 저장될 config 를 정확히 못박고 싶으면 바로 인스턴스로 가. 딱 하나 규칙 — fit() 전에 무조건 compile(). compile 안 한 model 은 '더 나아진다' 가 뭔지조차 몰라.