Overfitting và bias-variance
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
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
3tới5: đườ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
11hoặc12: đường khớp luồn qua từng chấm train, lỗi train gần0, nhưng nó vặn vẹo dữ dội và lỗi test vọt lên. - Bấm
Đổi nhiễuvà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ả
44nấc bậc của bốn bộ nhiễu, đúng2nấc không đổi được gì mắt thấy: bộ nhiễu thứ ba ở bậc7lên8, và bộ thứ tư ở bậc8lên9. Ở hai nấc ấy đường khớp dịch nhiều nhất0,0011và0,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.42nấ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ằng0", và nó sai: hệ số mới ở hai nấc im là-0,0747và-0,2077, trong khi một nấc đổi rất rõ như bộ nhiễu thứ nhất đi từ bậc3lên4có 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.
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.
- 1Ở bậc 12, lỗi train gần như bằng 0 nhưng lỗi test rất cao. Vì sao?
- 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ì?
- 3Nên chọn bậc đa thức dựa vào đâu để mô hình khái quát tốt?