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

Điều chuẩn L2

Kéo trượtTính lại thậtĐánh đổi train / test

Đ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

Điều chuẩn L2 · trượt lambda, xem đường mượt lại
lambda = 0lỗi train = 0.0165lỗi test = 0.0471Σ trọng số² = 1.2e+4quá khít (overfit)
x
Độ lớn trọng số |w_j| theo bậc (thang loga)
0
1
2
3
4
5
6
7
8
9
Cột 0 là hệ số chặn (không bị phạt). Các cột còn lại là hệ số của 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 train gần như bằng 0 nhưng lỗi test lại cao.
  • Trượt lambda lê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 lambda nhỏ ở đó lỗi test chạm đáy trong khi lỗi train chỉ mới tăng nhẹ. Đó là vùng tổng quát tốt nhất.
  • Kéo lambda lê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 train lẫn lỗ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 rút ra

Đ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.

Câu hỏi tự kiểm0/3 đúngchưa trả lời
  1. 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?
  2. 2Khi bạn tăng lambda, các thanh độ lớn trọng số thay đổi thế nào và vì sao?
  3. 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?