Metric vs loss — 다들 헷갈리는 선
loss 랑 metric 은 compile() 에서 비슷해 보이지만 역할이 정반대야. loss 는 학습이 minimize 하는 대상 — gradient 가 흘러야 하니 미분 가능해야 해. metric 은 순수 observer — step 마다 계산되고 log 에 찍히지만 gradient 엔 절대 손 안 대. accuracy 가 metric 은 되는데 loss 는 못 되는 이유가 딱 이거야: step function 이라 미분 불가능, optimizer 한텐 쓸모없지만 사람한테 model 상태 알려주는 덴 완벽.
metrics 는 list 로 넘기고 문자열이랑 인스턴스 섞어도 돼. 이름 붙이거나 (log 에 깔끔하게 나오게) 설정하려면 인스턴스 형태. Code 섹션은 classifier 에 실제로 쓸 metric 스택 — accuracy 에 precision/recall/AUC/F1 family 까지, 얼마나 자주 틀리는지뿐 아니라 *어디서* 틀리는지 알려줘.
validation 을 봐, 없으면 직접 만들어
fit() 에서 찍히는 모든 metric 은 validation data 넘기는 순간 val_ 쌍둥이가 생겨 — accuracy 와 val_accuracy. training metric 은 model 이 fit 하는 걸, validation metric 은 일반화하는 걸 보여주고, 둘 사이 gap 이 overfitting 게이지야. callback 의 monitor 도 이 metric 이름으로 매칭해. built-in 으로 안 잡히는 게 있으면 keras.metrics.Metric 을 subclass 해서 세 메서드 구현 — update_state() 가 batch 동안 누적, result() 가 현재값 반환, reset_state() 가 epoch 경계마다 초기화.