Step 2: 위쪽 unfreeze, 아주 작은 learning rate 로 재학습
head 학습 끝나고 accuracy 가 자리 잡으면 fine-tuning 이 나머지를 짜내. base_model.trainable = True 로 풀고, *마지막* 몇 layer 빼고 다시 freeze 해. 왜 위쪽만? 초기 layer 엔 그대로 두고 싶은 보편 edge/texture detector 가 있고, 후반 layer 엔 내 task 쪽으로 살짝 구부릴 만한 ImageNet 전용 개념이 있거든.
learning rate 가 전부야
여기서 제일 중요한 숫자는 learning rate, 1e-5 정도로 — 평소 학습의 약 100× 낮게. pretrained weight 는 이미 좋은 해 근처에 있어. 평소 크기 LR 이면 큰 보폭으로 다 망가뜨려 (catastrophic forgetting). 작은 LR 이 unlearning 없이 딱 specialize 할 만큼만 밀어줘. 10~20 epoch 더 돌리면서 validation accuracy 봐 — 더 안 오르거나 overfit 시작하면 멈춰. 아래 Code section 이 freeze → 재 compile → fit 순서를 그대로 보여줘.