Đ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ể uốn theo gần như mọi gợn của tập 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 dữ dội quanh các chấm đặc, các thanh trọng số cao ngất,lỗi trainxuống mức thấp nhất mà mô hình này với tới được là0.0165, cònlỗi testlà0.0471, cao gần gấp ba. Để ý0.0165không phải0và nó không thể là0: đa thức bậc chín chỉ có mười hệ số, ít hơn mười hai điểm train, nên nó không đủ chỗ để luồn qua đúng từng điểm. - Trượt
lambdalên từ từ và theo dõi các thanh trọng số cùng thấp dần, đồng thời đường khớp dịu dần thành một đường cong trơn. Cái giảm đều tay là ôΣ trọng số²; từng thanh riêng lẻ thì vẫn nhấp nhô lên xuống trên đường đi, vì mỗi hệ số còn phải bù cho các hệ số khác đang co lại. - 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 sát
nhất trong khả năng của nó 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?