Overfitting & Underfitting
Quá khớp & Dưới khớp
Học thuộc lòng vs học lý thuyết — hai kiểu trượt kỳ thi
Học thuộc 10 đề cũ
Nhớ rõ từng câu trong 10 đề đã làm. Vào phòng thi gặp đề mới — lạ từ câu 1. Điểm rất thấp. Đây là overfit.
Học mỗi lý thuyết, không làm bài
Đọc hiểu lý thuyết nhưng chưa luyện bài nào. Gặp đề thật — bí từ đầu, không áp dụng được. Đây là underfit.
Mô hình ML cũng y như thế. Có hai cách “trượt”: học ít quá (underfit) hoặc học nhiều quá đến mức thuộc cả nhiễu (overfit). Mục tiêu là ở giữa — đủ phức tạp để bắt được quy luật, đủ đơn giản để không nhớ rác.
Bạn tăng bậc đa thức (polynomial degree) từ 1 lên 20 để fit đường cong qua các điểm dữ liệu. Train loss (lỗi trên dữ liệu cũ) sẽ thay đổi thế nào?
Đây là 12 điểm dữ liệu train (cam)nằm gần một đường cong “thật” (chưa hiện). Kéo thanh trượt để chọn bậc đa thức dùng để fit các điểm này. Quan sát đường xanh biến dạng thế nào, rồi bật test datađể xem mô hình có “đoán đúng” điểm mới không.
Hình minh họa
Good fit
Vừa đủ — bắt được quy luật, bỏ qua nhiễu
Train loss (MSE)
0.029
Càng tăng bậc, càng giảm về 0.
Test loss (MSE)
0.012
Bật “Hiện test” để quan sát.
Train loss thấp không có nghĩa là mô hình tốt. Mục tiêu thực sự là loss thấp trên dữ liệu mới, chưa hề thấy. Mô hình overfit thuộc lòng train data (loss ≈ 0) nhưng sai bét trên test — giống học sinh thuộc đáp án 10 đề cũ nhưng thi trượt vì đề mới.
Good fit ≠ train loss thấp nhất. Good fit = khoảng cách nhỏ giữa train loss và test loss, cả hai đều ở mức hợp lý.
Bấm “Tiếp tục” để đi qua ba chế độ của cùng dữ liệu train: bậc 1 → bậc 3 → bậc 20. Mỗi chế độ sẽ kèm hình minh hoạ và chẩn đoán.
Bậc 1 — đường thẳng
UnderfitMô hình chỉ có 2 tham số (độ dốc + chặn). Không đủ linh hoạt để uốn theo đỉnh và đáy của dữ liệu. Cả train loss lẫn test loss đều cao, gần bằng nhau.
- Train loss: cao (~0.55)
- Test loss: cao (~0.58)
- Triệu chứng: cả hai đều cao, khoảng cách nhỏ
- Cách chữa: tăng độ phức tạp, thêm feature
Early stopping = dừng huấn luyện khi validation loss bắt đầu TĂNG trở lại (không chờ train loss về 0). Vì sao kỹ thuật này chống overfit hiệu quả?
Bên dưới là biểu đồ “kinh điển”: đường train loss (xanh) luôn giảm, đường val loss (đỏ) giảm rồi tăng. Đường xanh lá đứt nét là điểm early stop.
Giải thích
Khi ta luyện một mô hình, có hai lỗi hoàn toàn khác nhau cần phân biệt: lỗi trên dữ liệu đã thấy (train error) và lỗi trên dữ liệu chưa thấy (test error). Mục tiêu cuối cùng luôn là thu nhỏ test error, vì chỉ khi đó mô hình mới thực sự hữu ích.
Generalization gap(khoảng cách tổng quát hoá) chính là khoảng cách giữa “điểm bài tập về nhà” và “điểm thi”. Mục tiêu là giữ khoảng cách này nhỏ — không phải bằng cách “hạ” train error về 0, mà bằng cách chọn mô hình đủ linh hoạt vừa phải.
So sánh hai mô hình cực trị
Cùng dữ liệu train, hai đường cong khác nhau kinh khủng.
Underfit = học chưa đủ
- Mô hình quá đơn giản (ít tham số)
- Cả train và test error đều cao
- Ẩn dụ: chỉ học lý thuyết, chưa luyện đề
- Giải pháp: tăng độ phức tạp, thêm feature, huấn luyện lâu hơn
Bảng chẩn đoán nhanh
| Triệu chứng | Underfit | Good fit | Overfit |
|---|---|---|---|
| Train error | Cao | Thấp | Rất thấp |
| Test error | Cao | Thấp | Cao |
| Khoảng cách | Nhỏ | Nhỏ | Lớn |
| Độ phức tạp | Quá thấp | Vừa phải | Quá cao |
- Chọn mô hình đủ lớn để ban đầu overfit nhẹ trên train.
- Dùng cross-validation hoặc train/val/test split để đo generalization gap.
- Nếu overfit: thêm dữ liệu, early stopping, regularization.
- Nếu underfit: tăng số tham số / thêm feature / train lâu hơn.
- Lặp lại tới khi val loss không còn tốt hơn được nữa.
- Underfit = mô hình quá đơn giản; train & test loss đều cao. Overfit = mô hình quá phức tạp; train loss thấp, test loss cao.
- Good fit không phải train loss thấp nhất — mà là khoảng cách nhỏ giữa train và test loss.
- Early stopping: dừng khi val loss bắt đầu tăng. Cách đơn giản, miễn phí, cực kỳ hiệu quả.
- Quy trình: ban đầu overfit nhẹ, rồi dùng regularization / thêm dữ liệu để thu hẹp gap. Không bao giờ bắt đầu với mô hình quá nhỏ.
Kiểm tra hiểu biết
Train loss = 0.01, Validation loss = 2.5. Mô hình đang gặp vấn đề gì?