Ý tưởng đã có, vậy làm thế nào để giảm được giá trị của W mà độ chính xác của model vẫn ngon lành. Đây là lúc L2 Regularization có tác dụng. Ví dụ với hàm Linear Classifier, ta có hàm tổng quan là :
$f(x_{i},W)=Wx_{i}$
Giả sử ta có input x = [1,1,1,1], ta có 2 W lần lượt là W1 = [1,0,0,0] và W2 = [0.25,0.25,0.25,0.25]. Cả 2 đều cho ra cùng kết quả là 1. Và vì chung kết quả từ score function nên loss function SVM cũng tính ra chung 1 kết quả theo công thức:
$L_{i}=\sum_{j\neq y_{i}}max(0,s_{j}-s_{y_{i}}+\Delta )$
Nhưng các bạn thấy, rõ ràng ở W2, các giá trị gần 0 hơn, do đó sẽ giảm được overfitting. Vậy nên người ta đã nghĩ ra cách kết hợp hàm L2 Norm có công thức như sau:
$R(W)=\sum_{k}\sum_{l}W_{k,l}^{2}$
Nhìn công thức hầm hố vậy thôi, thực ra chỉ là tổng bình phương các giá trị của W. Kết hợp với SVM loss ta có:
$L_{i}=\sum_{j\neq y_{i}}max(0,s_{j}-s_{y_{i}}+\Delta )+\lambda \sum_{k}\sum_{l}W_{k,l}^{2}$
Ta có R(W1)=1, R(W2)=0.25. Vậy nên, L2 < L1. Do đó, với hàm loss này, ta sẽ chọn L2, chính là chọn W2. Và đó, đó chính là cách L2 Regularization được áp dụng để hạn chế overfitting. Với việc lập trình, mình thấy người ta hay dùng thuật ngữ Weight decay, và weight decay cũng chính là L2 Regularization.
0 nhận xét:
Đăng nhận xét