Professional Documents
Culture Documents
SVM
SVM
SVM
1. Giới thiệu
Định nghĩa
Support vector machine (SVM) là một trong những thuật toán phân lớp phổ
biến và hiệu quả.
Lịch sử
Thuật toán SVM ban đầu được phát minh bởi Vladimir N. Vapnik và Alexey Ya.
Chervonenkis vào năm 1964. Năm 1992, Bernhard Boser, Isabelle Guyon và
Vladimir Vapnik đề xuất một cách tạo ra các bộ phân loại phi tuyến bằng cách
áp dụng kernel trick cho các siêu phẳng có margin tối đa. Phiên bản soft-
margin, thường được sử dụng trong các gói phần mềm, được Corinna Cortes và
Vapnik đề xuất vào năm 1993 và xuất bản năm 1995.
Cơ sở lý thuyết
Trong không gian hai chiều, khoảng cách từ một điểm có toạ độ
(x0 , y0 )tới đường thẳng có phương trình w1 x + w2 y + b = 0được xác
định bởi:
∣w1 x0 + w2 y0 + b∣
w12 + w22
SVM 1
Giả sử rằng có hai lớp dữ liệu được mô tả bởi các điểm (feature vector)
trong không gian nhiều chiều, hơn nữa, hai lớp dữ liệu này là linearly
separable, tức tồn tại một siêu phẳng phân chia chính xác hai lớp đó.
Hãy tìm một siêu phẳng phân chia hai lớp đó đó, tức tất cả các điểm thuộc
một lớp nằm về cùng một phía của siêu phẳng đó và ngược phía với toàn
bộ các điểm thuộc lớp còn lại
⇒ Có vô số siêu phẳng như vậy
Chúng ta cần một siêu phẳng phân chia sao cho khoảng cách từ điểm
gần nhất của mỗi lớp (các điểm được khoanh tròn) tới siêu phẳng phân
chia là như nhau, như thế thì mới công bằng. Khoảng cách như nhau
này được gọi là biên hoặc lề (margin).
Việc margin rộng hơn sẽ mang lại hiệu ứng phân lớp tốt hơn vì sự phân
chia giữa hai lớp là rạch ròi hơn. Bài toán tối ưu trong SVM chính là bài
toán đi tìm đường phân chia sao cho margin giữa hai lớp là lớn nhất.
Phân loại
SVM 2
Soft-margin SVM:Hai lớp là gần linearly separable
SVM 3
Kernel SVM:Bài toán phân lớp với biên không linearly separable
TH1: Bài toán phân chia tuyến tính không nhiễu(hard margin)
Giả sử rằng các cặp dữ liệu trong tập huấn luyện là:
(x1 , y1 ), (x2 , y2 ), ..., (xN , yN )với vector xi ∈ Rd thể hiện đầu vào
SVM 4
của một điểm dữ liệu và yi ∈ {−1, 1}là nhãn của điểm dữ liệu đó,
d là số chiều của dữ liệu và N là số điểm dữ liệu. Mặt phân chia có
phương trình là w T xn + b = 0
yi = 1⇒ điểm dữ liệu thuộc phía dương của mặt phân chia
⇒ Khi đó khoảng cách từ một điểm dữ liệu bất kỳ (xn , yn )tới mặt phân
chia là:
yn (w T xn +b)
∣∣w∣∣2
Với mặt phân chia này, margin được tính là khoảng cách gần nhất từ
một điểm (trong cả hai lớp, vì cuối cùng margin của cả hai lớp sẽ
như nhau) tới mặt đó, tức là:
Bài toán tối ưu của SVM chính là việc tìm w và b sao cho margin
này đạt giá trị lớn nhất:
SVM 5
Hàm mục tiêu là 1 norm ⇒ là 1 hàm lồi
Hàm bất đẳng thức ràng buộc là tuyến tính theo w,b ⇒ là 1 hàm lồi
⇒CVXOPT
SVM 6
Bài toán đối ngẫu Lagrange
Bài toán gốc có d + 1(số chiều của w công thêm 1 của b) với d
là số chiều của mỗi điểm dữ liệu
SVM 7
TH2: Bài toán phân chia tuyến tính có nhiễu(soft margin).
Đại lượng này nên tỉ lệ với khoảng cách từ điểm vi phạm tương ứng
tới biên giới an toàn.
0 < ξn < 1: Các điểm nằm trong vùng không an toàn, nhưng vẫn
đúng phía so với đường ranh giới.
Nhận thấy rằng nếu yi = ±1 là nhãn của xi trong vùng không an toàn
thì ξi có thể được định nghĩa là
ξi = ∣w T xi + b − yi∣
Trong đó:
SVM 8
xi là điểm dữ liệu cần phân loại
tại điểm dữ liệu xi . Khi giá trị này gần bằng nhãn thực tế yi , tức là
điểm dữ liệu được phân loại đúng, ξi sẽ gần bằng 0. Ngược lại, khi
giá trị này xa so với nhãn thực tế yi , ξi sẽ lớn, biểu thị cho mức độ
Với soft-margin SVM, hàm mục tiêu sẽ có thêm một số hạng nữa
giúp tối thiểu tổng sự hy sinh:
Trong đó:
Với mỗi cặp dữ liệu (xn , yn ), thay vì ràng buộc cứng
Tóm lại, ta sẽ có bài toán tối ưu primal cho soft-margin SVM như
sau đây.
Giải bài toán đối ngẫu: Bài toán đối ngẫu của soft margin SVM rất
giống với bài toán đối ngẫu của hard-margin SVM, chỉ khác ở ràng
buộc chặn trên của các nhân tử Laggrange.
SVM 9
Bài toán tối ưu không ràng buộc tương đương: Dựa trên một hàm
mới gọi là hinge loss. Với cách này, hàm mất mát thu được là một
hàm lồi và có thể giải được một cách hiệu quả bằng các phương
pháp gradient descent.
Giới thiệu
2. Bias trick
SVM 10
Xây dựng hàm mất mát
Trong multi-classs SVM, khi kiểm thử, nhãn của một điểm dữ
liệu mới được xác định bởi thành phần lớn nhất trong score
vector.
Multi-class SVM xây dựng hàm mất mát dựa trên định nghĩa
biên an toàn. Ép thành phần ứng với correct class của score
vrctor lớn hơn các phần tử khác một lượng Δ > 0gọi là biên an
toàn.
Những score nằm trong màu xanh lá sẽ không gây mất mát nào,
ngược lại thì sẽ bị phạt, vi phạm càng nhiều thì xử lý càng cao.
Đại lượng này là:
SVM 11
trong đó wj là cột thứ j của ma trận hệ số W .
2. Regularization
Chúng ta có thể dùng SGD để tìm nghiệm cho bài toán này.
TH4: Bài toán phân chia phi tuyến tính(Sử dụng phương pháp Kernel)
Trong một trường hợp rất tồi tệ (như hình dưới), bộ dữ liệu không những
không phân biệt tuyến tính, và ta cũng không thể tìm ra cách để giảm nhẹ
thiệt hại nhất có thể nếu cố gắng tìm cách phân chia bộ dữ liệu này thành
hai lớp trên mặt phẳng. Trong trường hợp này, các điểm dữ liệu có vị trí quá
sát nhau, thế nên ta cần tìm cách để các điểm dữ liệu này trở nên thưa hơn.
Một ý tưởng đơn giản cho việc này là tìm một đơn ánh từ không gian ban
đầu vào không gian có số chiều lớn hơn để tìm siêu phẳng phân chia các
điểm dữ liệu trên. Đây được gọi là phương pháp kernel.
SVM 12
Nói tóm lại, Ý tưởng của phương pháp kernel nói chung là tìm một phép
biến đổi sao cho dữ liệu ban đầu là không phân biệt tuyến tính được biến
sang không gian mới. Ở không gian mới này, dữ liệu trở nên phân biệt tuyến
tính
Để giải quyết bài toán trong trường hợp này chúng ra cần biểu diễn (ánh xạ
) dữ liệu từ không gian ban đầu X sang không gian F bằng một hàm ánh xạ
phi tuyến:
Trong không gian F tập dữ liệu có thể phân tách tuyến tính. Nhưng nãy sinh
một vẫn đề lớn đó là trong không gian mới này số chiều của giữ liệu tăng
lên rất nhiều so với không gian ban đầu làm cho chi phí tính toán vô cùng
tốn kém. Rất may trong bài toán SVM người ta đã tìm ra một cách không
cần phải tính ϕ(x),ϕ(z) và hàm ánh xạ ϕ mà vẫn tính được <
ϕ(x).ϕ(z) > Phương pháp này gọi là Kernel Trick
K(x, z) =< ϕ(x).ϕ(z) >K(x,z) là một hàm nhân (Kernel functions)
Giả sử bạn muốn thực hiện biến đổi bậc 2 một bộ dữ liệu có 2 đặc trưng, rồi
dùng bộ dữ liệu mới để huấn luyện mô hình SVM tuyến tính. Phương trình
dưới đây mô tả hàm ánh xạ ϕ để thực hiện biến đổi dữ liệu:
SVM 13
Hãy chú ý rằng kết quả của phép biến đổi là một ma trận 3 chiều. Giờ
chúng ta sẽ quan sát quá trình biến đổi 2 vectors, là w và b, và thực hiện
nhân các vector tạo thành.
Nhận định này vô cùng tài tình khi ta nhìn vào bài toán đối ngẫu của SVM:
nếu như ta áp dụng hàm biến đổi ϕ lên tất cả bản ghi trên tập dữ liệu, thì
bài toán đối ngẫu sẽ xuất hiện tích ϕ(a)T .ϕ(b) Nhưng nếu như phép biến
đổi ϕ cũng chính là hàm ánh xạ bậc 2 ở trên, thì ta có thể thay tích vô
T
hướng các vector đã biến đổi thành (x(i) .x(j) )2 Và giờ, chúng ta không
cần phải biến đổi các điểm dữ liệu rồi nhân, mà chỉ cần nhân rồi bình
phương tích. Kết quả của 2 phép toán đó là tương đồng hoàn toàn, nhưng
nhờ chứng minh sự tương đương, ta đã giảm thiểu khối lượng tính toán cho
SVM. Đây chính là bản chất của kernel trick
Hàm K(a, b) = (aT .b)2 được gọi là kernel đa thức bậc 2. Trong học máy,
một kernel là một hàm có khả năng tính được tích vô hướng ϕ(a)T .ϕ(b)
mà chỉ dựa vào duy nhất vector gốc, mà không cần tính (thậm chí không
cần quan tâm tới ánh xạ) ϕ của 2 vector a và b
Một số hàm nhân thường dùng:
SVM 14
Ứng dụng
Text and hypertext categorization (Phân loại văn bản và siêu văn bản)
Geo and Environmental Sciences (Khoa học địa chất và môi trường)
Ưu và Nhược điểm
Ưu điểm:
SVM hoạt động tương đối tốt khi có sự phân chia rõ ràng giữa các lớp
Nhược điểm:
1. Sử dụng các thuật toán tối ưu hóa tiên tiến như Sequential Minimal
Optimization (SMO) để tìm ra giải pháp tối ưu nhanh hơn và hiệu quả hơn
cho bài toán hard margin SVM. SMO chủ yếu được thiết kế cho SVM nhưng
hoạt động tốt với hard margin SVM.
2. Áp dụng các phương pháp tối ưu hóa lồi cải tiến như Limited-memory
Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) hoặc Conjugate Gradient
Descent (CGD) để cải thiện hiệu suất của thuật toán huấn luyện hard
margin SVM.
SVM 15
1. Sử dụng các phương pháp tối ưu hóa hiệu quả hơn cho bài toán tối ưu lồi,
chẳng hạn như stochastic gradient descent (SGD) để giảm thời gian huấn
luyện và tăng khả năng xử lý dữ liệu lớn.
2. Điều chỉnh hằng số C để kiểm soát độ quan trọng giữa margin lớn và lỗi
phân loại, có thể thực hiện thông qua các phương pháp tinh chỉnh siêu
tham số như cross-validation
5. Kết luận
1. SVM giúp tìm một siêu phẳng (mặt phân cách) để phân chia hai lớp dữ liệu
sao cho margin (khoảng cách từ các điểm dữ liệu gần nhất đến mặt phân
cách) là lớn nhất.
2. SVM được mô hình hóa như một bài toán tối ưu lồi, với hàm mục tiêu là một
hàm strictly convex.
1. Hard Margin SVM không hiệu quả khi dữ liệu có nhiễu gần biên hoặc không
gần linearly separable.
2. Soft Margin SVM cho phép tồn tại lỗi ở một vài điểm dữ liệu, được xác định
bằng slack variables, giúp khắc phục vấn đề của Hard Margin SVM.
Kernel Trick:
1. Kernel Trick cho phép ánh xạ dữ liệu sang không gian chiều cao hơn mà
không cần tính toán trực tiếp hàm ánh xạ.
2. Các kernel phổ biến bao gồm: linear, poly, rbf, sigmoid.
Multi-class SVM:
1. Multi-class SVM cung cấp một cách tiếp cận tương đương với Softmax
Regression trong việc giải quyết bài toán phân loại đa lớp.
2. Multi-class SVM có thể được tối ưu bằng Gradient Descent, phù hợp cho
các bài toán large-scale.
6. Demo
https://www.techtarget.com/whatis/definition/support-vector-machine-SVM
SVM 16
https://machinelearningcoban.com/2017/04/09/smv/
https://en.wikipedia.org/wiki/Support_vector_machine
https://www.slideshare.net/ThmTrn9/support-vector-machines-75854390
https://drive.google.com/file/d/155OXFg9qErNRQp2MvfMiQLG5laYYTi2v/view?
usp=sharing
SVM 17