Chuẩn hoá cho độ giãn cơ: Chính quy L1

Vectơ thưa thường chứa nhiều phương diện. Tạo kết quả nhiều tính năng trong nhiều phương diện hơn nữa. Với các vectơ tính năng có kích thước cao như vậy, kích thước mô hình có thể trở nên lớn và đòi hỏi dung lượng RAM rất lớn.

Trong một vectơ thưa có chiều cao, bạn nên khuyến khích giảm trọng số xuống chính xác 0 nếu có thể. Trọng số chính xác là 0 về cơ bản sẽ xoá tính năng tương ứng khỏi mô hình. Việc loại bỏ các tính năng sẽ giúp tiết kiệm RAM và có thể giảm nhiễu trong mô hình.

Ví dụ: hãy xem xét một tập dữ liệu nhà ở không chỉ bao gồm California mà còn trên toàn cầu. Việc nhóm vĩ độ toàn cầu ở cấp phút (60 phút mỗi độ) cung cấp khoảng 10.000 chiều trong mã hoá thưa thớt; kinh độ toàn cầu ở cấp phút cung cấp khoảng 20.000 chiều. Một tính năng kết hợp của hai tính năng này sẽ tạo ra khoảng 200.000.000 kích thước. Nhiều kích thước trong số 200.000.000 kích thước đó đại diện cho các khu vực cư trú hạn chế như vậy (ví dụ: giữa đại dương) nên rất khó để sử dụng dữ liệu đó để khái quát hoá một cách hiệu quả. Sẽ thật ngớ ngẩn khi phải trả chi phí RAM cho việc lưu trữ các kích thước không cần thiết này. Do đó, bạn nên khuyến khích trọng số cho các nhóm vô nghĩa giảm xuống chính xác bằng 0, giúp chúng ta tránh phải trả chi phí lưu trữ cho các hệ số mô hình này tại thời điểm dự đoán.

Chúng ta có thể mã hoá ý tưởng này vào vấn đề tối ưu hoá thực hiện tại thời điểm huấn luyện, bằng cách thêm thuật ngữ chính quy đã chọn thích hợp.

Việc điều chỉnh L2 có hoàn thành được nhiệm vụ này không? Rất tiếc là không. Việc chính quy L2 khuyến khích các trọng số phải nhỏ, nhưng không buộc chúng phải chính xác bằng 0.0.

Một ý tưởng khác là thử và tạo một thuật ngữ chính quy để phạt số lượng giá trị hệ số khác 0 trong một mô hình. Việc tăng số lượng này sẽ chỉ là hợp lý nếu mô hình đạt được đủ khả năng điều chỉnh dữ liệu. Thật không may, mặc dù phương pháp dựa trên số lượng này hấp dẫn về mặt trực quan, nhưng nó sẽ biến vấn đề tối ưu hoá lồi của chúng ta thành vấn đề tối ưu hoá không lồi. Vì vậy, ý tưởng này (còn gọi là quy chuẩn hoá L0) không phải là ý tưởng mà chúng ta có thể sử dụng hiệu quả trong thực tế.

Tuy nhiên, có một thuật ngữ chính quy gọi là chuẩn hoá L1. Thuật ngữ này đóng vai trò là giá trị gần đúng cho L0, nhưng có ưu điểm là độ lồi và do đó giúp tính toán hiệu quả. Vì vậy, chúng ta có thể sử dụng việc điều chỉnh L1 để khuyến khích nhiều hệ số không thông tin trong mô hình là 0 và do đó tiết kiệm RAM tại thời điểm dự đoán.

Điều chỉnh L1 so với chính quy L2.

L2 và L1 phạt các trọng số theo cách khác nhau:

  • L2 phạt trọng lượng2.
  • L1 phạt |trọng lượng|.

Do đó, L2 và L1 có các đạo hàm khác nhau:

  • Đạo hàm của L2 là 2 * trọng số.
  • Đạo hàm của L1k (một hằng số có giá trị không phụ thuộc vào trọng số).

Bạn có thể xem đạo hàm của L2 là một lực giúp loại bỏ x% trọng lượng mỗi lần. Như Zeno đã biết, ngay cả khi bạn xoá x phần trăm của một số hàng tỷ lần, số giảm đi vẫn sẽ không bao giờ đạt đến số 0. (Zeno ít quen thuộc với các giới hạn về độ chính xác của dấu phẩy động, có thể tạo ra giá trị 0 chính xác.) Ở mọi mức độ, L2 thường không đưa trọng số về 0.

Bạn có thể xem đạo hàm của L1 là một lực mỗi lần trừ đi một hằng số nào đó khỏi trọng lượng. Tuy nhiên, nhờ các giá trị tuyệt đối, L1 có gián đoạn tại 0, điều này khiến kết quả phép trừ 0 bị chuyển thành 0. Ví dụ: nếu phép trừ buộc có trọng số từ +0,1 đến -0,2, thì L1 sẽ đặt trọng số thành 0 chính xác. Eureka, L1 đã giảm cân.

Việc điều chỉnh L1 – phạt giá trị tuyệt đối của mọi trọng số – hoá ra khá hiệu quả đối với các mô hình rộng.

Lưu ý rằng mô tả này đúng đối với mô hình một chiều.

Nhấp vào nút Phát () dưới đây để so sánh hiệu ứng chính quy L1 và L2 có trên một mạng lưới trọng số.