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.
  • Có hai nấc màn hình đứng im, và đó không phải núm hỏng. Trên cả 44 nấc bậc của bốn bộ nhiễu, đúng 2 nấc không đổi được gì mắt thấy: bộ nhiễu thứ ba ở bậc 7 lên 8, và bộ thứ tư ở bậc 8 lên 9. Ở hai nấc ấy đường khớp dịch nhiều nhất 0,00110,0020 đơn vị, tức chưa tới một phần ba điểm ảnh, và cả hai ô số cũng đọc y nguyên. 42 nấc còn lại thì đổi rõ ràng. Câu giải thích dễ nghĩ tới nhất là "hệ số của bậc mới gần bằng 0", và nó sai: hệ số mới ở hai nấc im là -0,0747-0,2077, trong khi một nấc đổi rất rõ như bộ nhiễu thứ nhất đi từ bậc 3 lên 4 có hệ số mới còn nhỏ hơn, -0,0438. Thêm một bậc thì mọi hệ số được khớp lại từ đầu, nên cái quyết định là tổng các thay đổi bù trừ nhau chứ không phải riêng số hạng mớ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?