Professional Documents
Culture Documents
Baocao 5
Baocao 5
w ,b , 2
n 1
n 1 yn (wT xn b)
Nếu (w, b, ) là nghiệm của bài toán tối ưu đã dẫn ở trên, ứng với giá trị nhỏ nhất
của hàm mục tiêu, ta có: n max(1 yn (wT xn b), 0), n 1, 2,..., N
Giả sử ngược lại, tồn tại n sao cho n max(1 yn (wT xn b), 0) , ta chọn một giá trị
n ' max(1 yn (wT xn b), 0) ta sẽ thu được một giá trị thấp hơn của hàm mục tiêu,
trong khi tất cả các ràng buộc đều được thỏa mãn,nhưng lại mâu thuẫn với điều
N
1
kiện (w, b, ) arg min w C n
2
w ,b , 2 n 1
Khi đó, ta thay toàn bôn các giá trị n vào bài toán (4), với điều kiện nghiệm tối
ưu:
N
1
(w, b, ) arg min w C (1 yn ( wT xn b)) ,
2
w ,b , 2 n 1
lúc này, biến số n không còn quan trọng trong bài toán này nữa, ta đưa về bài toán
N
1
dạng: (w, b) arg min w C max(0,1 yn (wT xn b)) tương đương với
2
w ,b 2
n 1
(w, b) arg min J(w, b) , với J ( w , b) được gọi là hàm mất mát, bài toán này được
w ,b
Trong đó zn được coi là score của xn ứng với cặp hệ số (w, b) , yn chính là đầu ra
mong muồn.
Hình dưới đây mô tả hàm số hinge loss f(ys)=max(0,1-ys) và so sánh với zero-one
loss. Hàm zero-one loss là hàm đếm các điểm bị missclassified.
Hinge loss (màu xanh) và zeros-one loss (màu đen). Với zero-one loss, những điểm nằm xa
margin (hoành độ bằng 1) và boundary (hoành độ bằng 0) được đối xử như nhau. Trong khi đó,
với hinge loss, những điểm ở xa gây ra mất mát nhiều hơn.
Trong hình trên, biến số là y là tích của đầu ra mong muốn (ground truth) và đầu
ra tính được (score). Những điểm ở phía phải của trục tung ứng với những điểm
được phân loại đúng, tức s tìm được cùng dấu với y. Những điểm ở phía trái của
trục tung ứng với các điểm bị phân loại sai. Ta có các nhận xét:
Với hàm zero-one loss, các điểm có score ngược dấu với đầu ra mong muốn sẽ
gây ra mất mát như nhau (bằng 1), bất kể chúng ở gần hay xa đường phân chia
(trục tung). Đây là một hàm rời rạc, rất khó tối ưu và ta cũng khó có thể đo đếm
được sự hy sinh như đã định nghĩa ở phần đầu.
Với hàm hinge loss, những điểm nằm trong vùng an toàn, ứng với ys≥1, sẽ không
gây ra mất mát gì. Những điểm nằm giữa margin của class tương ứng và đường
phân chia tương ứng với 0<y<1, những điểm này gây ra một mất mát nhỏ. Những
điểm bị misclassifed, tức y<0 sẽ gây ra mất mát lớn hơn, vì vậy, khi tối thiểu hàm
mất mát, ta sẽ tránh được những điểm bị misclassifed và lấn sang phần class còn
lại quá nhiều. Đây chính là một ưu điểm của hàm hinge loss.
Hàm hinge loss là một hàm liên tục, và có đạo hàm tại gần như mọi nơi (almost
everywhere differentiable) trừ điểm có hoành độ bằng 1. Ngoài ra, đạo hàm của
hàm này cũng rất dễ xác định: bằng -1 tại các điểm nhỏ hơn 1 và bằng 0 tại các
điểm lớn hơn 1. Tại 1, ta có thể coi như đạo hàm của nó bằng 0.
3) Xây dựng hàm loss
Bây giờ, nếu ta xem xét bài toán Soft Margin SVM dưới góc nhìn hinge loss:
Với mỗi cặp (w, b) , ta đặt:
Ln (w, b) max(1 yn (wT xn b), 0)
Ta lấy tổng của tất cả các Loss này theo n ta được:
N N
L(w, b) Li max(1 yn (wT xn b), 0)
i 1 i 1
Trong trường hợp dữ liệu trong hai class là linearly separable, ta sẽ có giá trị tối
ưu tìm được của L(w, b) bằng không. Điều này nghĩa là:
1 yn (wT xn b) 0, n 1, 2,..., N
Điều này nghĩa là (a w, a b) cũng là nghiệm của bài toán. Nếu không có điều kiện
gì thêm, bài toán có thể dẫn tới nghiệm không ổn định vì các hệ số của nghiệm có
thể lớn tuỳ ý.
Để tránh điều này, ta cần thêm một số hạng nữa vào hàm L(w, b) gọi là số
hạng regularization, giống như cách chúng ta đã làm để tránh overfitting trong
neural networks. Lúc này, ta sẽ có hàm mất mát tổng cộng là:
J (w, b) L(w, b) R(w, b)
Với là một số dương, gọi là regularization parameter, hàm R() sẽ giúp hạn chế
việc các hệ số (w,b) trở nên quá lớn. Có nhiều cách chọn hàm R(), nhưng cách phổ
biến nhất là l2, khi đó hàm mất mát của Soft Margin SVM sau khi được viết gọn:
N
J (w ) max(1 yn w x n , 0)
T 2
w2
1i 1 4 4 4 2 4 4 4 3 12 2 3
hinge loss regularization
a = -w[0] / w[1]
xx = np.linspace(0,12)
yy = a * xx - clf.intercept_[0] / w[1]
h0 = plt.plot(xx, yy, 'k-', label="non weighted div")
Ví dụ 2 : bài toán phân chia dữ liệu đầu vào tuyến tính, không nhiễu, với tập dữ liệu lớn :
Trong bài toán này, ta cũng xử lý giống như với bài toán trên, nhưng với tập dữ liệu lớn
hơn. Tọa độ của các điểm sẽ được lưu trong 2 file .txt ứng với 2 class 0 và 1. Dữ liệu đầu
vào sẽ được chia một cách ngẫu nhiên thành 80% dữ liệu train và 20% dữ liệu test.
Ta được kết quả như hình :
Sau đó ta tiến hành predict và test, cuối cùng ta được kết quả :
Accuracy=100%.