TL;DR

Full fine-tuning cập nhật mọi weight matrix W của mạng pretrained — mỗi W nhận một ΔW riêng. Tự do tối đa, nhưng mọi tham số đã cử động đều phải lưu. Freezing layers giữ các lớp dưới (W₁, W₂) cố định ở trạng thái pretrained, chỉ cập nhật lớp gần task-specific output (W₃). Nghiên cứu MDPI 2025 trên transformer sub-3B cho thấy đông cứng 25–50% lớp dưới đạt accuracy bằng hoặc tốt hơn full FT và LoRA, đồng thời tiết kiệm 30–50% bộ nhớ và nhanh hơn 20–30%.

Analogy: MLP như chuỗi prerequisite

Prof. Tom Yeh (AI by Hand ✍️) ví một MLP ba lớp như chuỗi môn học bắc cầu lên một khóa nâng cao:

  • Layer 1 — Linear Algebra
  • Layer 2 — Probability
  • Layer 3 — Advanced Machine Learning

Pretraining là quãng đại học. Fine-tuning là cao học: nền tảng đã có sẵn, không phải học lại từ đầu.

Full fine-tuning = ngồi lại review từng prerequisite xem có gì mới. Hiệu quả, nhưng mệt.

Freezing = nhận ra Linear Algebra và Probability vẫn vậy — phép phân rã ma trận, định lý Bayes chẳng đổi. Chỉ có lớp nâng cao trên cùng cần refresh.

Full fine-tuning: mỗi W một ΔW

Trong full fine-tuning, mọi weight matrix đều "on the table":

  • W₁ → W₁ + ΔW₁
  • W₂ → W₂ + ΔW₂
  • W₃ → W₃ + ΔW₃

Không có gì frozen. Forward pass và backward pass đều chạm tới mọi tham số. Đây là chiến lược cho model nhiều quyền tự do nhất để chuyên biệt hóa.

Cái giá: mọi tham số đã cử động đều phải lưu. Một bản full fine-tune của Llama-3 70B = thêm một checkpoint 70B nữa. Nếu bạn cần 10 phiên bản chuyên biệt cho 10 domain, bạn lưu 700B tham số.

Freezing layers: chỉ refresh lớp gần output

Trong sơ đồ của Tom Yeh ở phần thứ hai, chỉ W₃ nhận ΔW. W₁ và W₂ — "prerequisite" — đứng yên. Forward pass vẫn chảy qua chúng; backward pass bỏ qua bước update weight cho các lớp đông cứng.

Trong code Keras, đông cứng đơn giản là:

for layer in base_model.layers[:10]:
    layer.trainable = False

Lưu ý: phải model.compile(...) lại sau khi đổi trainable — nếu không thay đổi sẽ không có hiệu lực.

Technical facts đáng nhớ

  • Lớp dưới = generic features. Trong CNN: cạnh, texture. Trong LLM: syntax, low-level semantics. Chuyển giao tốt giữa các task.
  • Lớp trên = task-specific features. Cần thích nghi với dataset mới.
  • Learning rate khi unfreeze phải nhỏ ~100× (vd 1e-5 thay vì 1e-3). Gradient lớn sẽ phá hủy feature pretrained.
  • BatchNorm cần training=False khi fine-tune — để running stats không bị batch nhỏ làm lệch.
  • Frozen ≠ removed. Lớp đông cứng vẫn tham gia inference; chỉ là weight không update.

So sánh: Full FT vs Freezing vs PEFT

StrategyParams được trainBộ nhớStorage per variantQuality
Full fine-tuning100%Cao nhất= full modelTrần cao nhất
Freeze 50% bottom~50%−30 đến −50%= 50% model≥ Full FT trên NLI
Feature extraction (freeze all)Chỉ head mớiThấp nhấtVài MBPhụ thuộc domain gap
LoRA / PEFT< 1%Rất thấpVài MBSát Full FT

Số liệu thực nghiệm: MDPI 2025 báo cáo đông cứng 25%–50% bottom layers của transformer sub-3B đạt accuracy bằng hoặc cao hơn full FT lẫn LoRA trên NLI, đồng thời giảm 20%–30% thời gian train.

Use cases: chọn cái nào cho dự án nào?

Chọn full fine-tuning khi:

  • Domain đích lệch xa pretraining (ảnh y khoa, văn bản pháp lý chuyên ngành).
  • Có dataset đủ lớn (chục nghìn+ sample) để tránh overfitting.
  • Compute và storage không phải vấn đề.

Chọn freezing layers khi:

  • Dataset nhỏ — đông cứng giúp regularize.
  • GPU memory eo hẹp.
  • Task đích gần với pretraining domain — generic features chuyển giao sạch.
  • Cần ship nhiều variant cho nhiều task — chỉ lưu ΔW của lớp unfrozen.

Chọn PEFT (LoRA, adapters) khi: bạn muốn cả hai thế giới — chất lượng gần full FT, nhưng kích thước checkpoint chỉ vài MB.

Limitations & pitfalls

  • Đông cứng quá nhiều → underfitting. Model không còn đủ độ tự do để bám task.
  • Đông cứng quá ít với dataset nhỏ → overfitting. Hàng tỷ tham số nuốt gọn vài nghìn sample.
  • Chọn sai lớp đông cứng (vd freeze nhầm lớp task-relevant) → transfer fail.
  • Catastrophic forgetting trong full FT: model có thể "quên" khả năng tổng quát khi chuyên biệt hóa.
  • Mismatched preprocessing phá feature pretrained — luôn dùng cùng pipeline normalize/tokenize của model gốc.

What's next: spectrum đầy đủ

Freezing layers chỉ là một điểm trên một dải liên tục:

  1. Full fine-tuning — all in.
  2. Partial freezing — đông cứng N lớp dưới, fine-tune phần còn lại.
  3. Feature extraction — đông cứng tất cả backbone, chỉ train head mới.
  4. PEFT — đông cứng backbone, chèn module trainable nhỏ (LoRA, adapter, prefix, prompt-tuning).

Khi model lên 100B+ tham số, full fine-tuning trở nên kinh tế bất khả thi. Partial freezing và PEFT đang chiếm lĩnh production workflow 2025–2026. Series AI by Hand của Prof. Tom Yeh cố ý vẽ tay từng phép nhân ma trận để engineer xây trực giác trước khi gọi trainer.train() — vì hiểu W nào đang cử động và tại sao là thứ phân biệt người dùng framework với người thiết kế chiến lược fine-tuning.

Nguồn: Tom Yeh (@ProfTomYeh), Keras Transfer Learning Guide, MDPI 2025, Exxact, IBM PEFT.