Chuyển tới nội dung chính

Overfitting và bias-variance

Trượt bậcTính lại thậtTrain vs test

Overfitting và bias-variance

Cùng một dữ liệu, chỉnh độ phức tạp của mô hình rồi xem nó khớp quá lỏng hay quá khít.

Khi khớp một mô hình vào dữ liệu, ta luôn muốn nó bám sát các điểm quan sát. Nhưng dữ liệu thật không sạch: mỗi điểm đã cộng thêm một chút nhiễu ngẫu nhiên. Một mô hình đủ mạnh có thể luồn qua đúng từng điểm train, kể cả phần nhiễu, và khi đó nó không còn học hình dạng thật nữa mà học thuộc lòng cả những sai lệch tình cờ.

Cách kiểm tra là giữ riêng một tập điểm không dùng để khớp, gọi là tập test. Mô hình quá đơn giản thì sai trên cả train lẫn test vì nó bỏ sót cấu trúc; mô hình quá phức tạp thì gần như không sai trên train nhưng lại lệch xa trên test. Chỗ tốt nhất nằm ở giữa, nơi lỗi test chạm đáy.

Thử ngay

Overfitting · trượt bậc đa thức, xem train vs test
lỗi train0.0469
lỗi test0.0300
thiếu khớp (underfit)
hàm đúngđa thức khớptraintest

Thử điều này:

  • Kéo bậc về 1: đường khớp thành một đoạn thẳng, cả lỗi train và lỗi test đều cao. Đây là thiếu khớp.
  • Trượt dần lên 3 tới 5: đường khớp bám theo đường mờ (hàm đúng), cả hai lỗi cùng tụt xuống thấp.
  • Đẩy bậc lên 11 hoặc 12: đường khớp luồn qua từng chấm train, lỗi train gần 0, nhưng nó vặn vẹo dữ dội và lỗi test vọt lên.
  • Bấm Đổi nhiễu vài lần: bộ điểm đổi nhưng câu chuyện thì không, đáy lỗi test vẫn nằm ở bậc vừa phải.

Bias và variance

Bias cao nghĩa là mô hình có định kiến quá cứng, đơn giản tới mức không thể uốn theo hình dạng thật, nên nó thiếu khớp và sai một cách hệ thống. Variance cao thì ngược lại: mô hình quá linh hoạt nên mỗi lần đổi bộ dữ liệu là đường khớp lại đổi hình dạng hẳn, vì nó đang bám theo nhiễu chứ không phải tín hiệu, và đó là quá khớp. Lỗi train chỉ giảm khi bậc tăng, nhưng lỗi test đi xuống rồi lại đi lên; đáy của đường lỗi test chính là chỗ bias và variance cân bằng.

Điều rút ra

Lỗi train thấp không có nghĩa là mô hình tốt; chỉ lỗi trên dữ liệu chưa từng thấy mới cho biết nó có thực sự học được quy luật hay chỉ học thuộc nhiễu.

Câu hỏi tự kiểm0/3 đúngchưa trả lời
  1. 1Ở bậc 12, lỗi train gần như bằng 0 nhưng lỗi test rất cao. Vì sao?
  2. 2Đường khớp là một đoạn thẳng ở bậc 1 làm sai trên cả train lẫn test. Đây là biểu hiện của gì?
  3. 3Nên chọn bậc đa thức dựa vào đâu để mô hình khái quát tốt?