두 phase 레시피, 단계별로
지난 세 lesson 이 부품을 줬으면, 이번엔 그걸 *어떤 순서로* 쓰느냐야. 검증된 흐름은 두 phase 를 순서대로:
- base freeze.
base_model.trainable = False— 새 head 만 배우게. - head 학습 ~5–10 epoch, 보통 learning rate (~1e-3). 이게 feature-extraction baseline.
- base 위쪽 layer unfreeze — 보통 마지막 block 또는 마지막 ~20 layer — 하고 재 compile.
- trainable 전부 fine-tune, 아주 낮은 learning rate (~1e-5), ~10–20 epoch 더.
- 비교하고 결정. phase 2 가 validation 에서 phase 1 을 진짜 이겼나? 아니면 더 단순한 feature-extraction 모델 출시.
왜 순서를 못 바꾸나
이 순서는 catastrophic forgetting 막으려고 있어. 새 head 는 random weight 로 시작해. base 를 처음부터 풀고 학습하면, 그 random head 가 초반에 큰 gradient 를 뿜고 — 그 gradient 가 pretrained layer 로 거꾸로 흘러서 재활용하러 온 바로 그 feature 를 망가뜨려. head 를 *먼저* 학습하면 합리적 상태가 되니까, base 를 풀 때쯤엔 거기 도달하는 gradient 가 작고 얌전해. phase 2 의 작은 learning rate 가 같은 위험에 대한 두 번째 안전장치야.