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ể 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

Đ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 dữ dội quanh các chấm đặc, các thanh trọng số cao ngất, lỗi train xuống mức thấp nhất mà mô hình này với tới được là 0.0165, còn lỗi test0.0471, cao gần gấp ba. Để ý 0.0165 không phải 0 và 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 lambda lê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 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 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 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?