Điều chuẩn L2
Điều chuẩn L2
Trượt lambda để phạt trọng số lớn và xem đường khớp mượt dần.
Một mô hình có đủ tự do, ví dụ đa thức bậc chín, có thể luồn đúng qua từng điểm huấn luyện. Nhưng để làm được vậy nó phải dùng những hệ số rất lớn, dấu dương âm xen kẽ, kéo đường khớp lên xuống dữ dội giữa các điểm. Đường đó nhớ vẹt nhiễu của tập train chứ không nắm được xu thế chung, nên khi gặp điểm mới nó đoán trật xa.
Điều chuẩn L2, còn gọi là weight decay hay ridge, sửa chuyện này bằng cách cộng
thêm vào hàm mất mát một khoản phạt tỉ lệ với tổng bình phương trọng số:
loss = lỗi_khớp + lambda * tổng(w_j^2). Bây giờ mô hình không được phép dùng hệ
số lớn một cách thoải mái nữa: mỗi đơn vị độ lớn trọng số đều tốn thêm chi phí.
Hệ số lambda quyết định phạt nặng hay nhẹ. Đặt lambda bằng 0 là quay lại khớp
bình phương tối thiểu thuần túy; tăng lambda lên thì mọi trọng số bị kéo về gần
0, đường khớp buộc phải phẳng và mượt hơn.
Thử ngay
|w_j| theo bậc (thang loga)x, x² … x⁹.Thử điều này:
- Để
lambdaở mức 0 và nhìn kỹ: đường khớp uốn éo qua từng chấm đặc, các thanh trọng số cao ngất,lỗi traingần như bằng 0 nhưnglỗi testlại cao. - Trượt
lambdalên từ từ và theo dõi các thanh trọng số cùng co lại một lúc, đồng thời đường khớp dịu dần thành một đường cong trơn. - Tìm điểm ngọt: có một khoảng
lambdanhỏ ở đólỗi testchạm đáy trong khilỗi trainchỉ mới tăng nhẹ. Đó là vùng tổng quát tốt nhất. - Kéo
lambdalên tận 1000: đường khớp gần như phẳng,Σ trọng số²teo lại còn li ti, và lúc này cảlỗi trainlẫnlỗi testđều cao vì mô hình quá đơn giản.
Đánh đổi
Không có mức lambda nào miễn phí. Khi lambda bằng 0 mô hình khớp train hoàn
hảo nhưng tổng quát tệ, đó là overfit. Khi lambda quá lớn mô hình trở nên quá
phẳng nên khớp cả train lẫn test đều kém, đó là underfit. Giữa hai thái cực có
một điểm ngọt nơi lỗi test nhỏ nhất, và ta thường tìm nó bằng tập kiểm định chứ
không phải bằng tập train.
Điều chuẩn L2 cố tình hy sinh một chút độ khớp trên tập train để đổi lấy đường khớp mượt hơn và khả năng tổng quát tốt hơn trên dữ liệu chưa từng thấy.
- 1Đặt lambda bằng 0 rồi quan sát, dấu hiệu nào cho thấy mô hình đang overfit?
- 2Khi bạn tăng lambda, các thanh độ lớn trọng số thay đổi thế nào và vì sao?
- 3Vì sao đẩy lambda lên rất lớn, ví dụ 1000, lại không phải lựa chọn tốt?