You are on page 1of 17

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

Khoảng cách từ một điểm tới một siêu mặt phẳng

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

​ ​ ​

Trong không gian ba chiều, khoảng cách từ một điểm có toạ độ


(x0 , y0 , z0 )tới một mặt phẳng có phương trình w1 x + w2 y + w3 z +
​ ​ ​ ​ ​ ​

b = 0được xác định bởi:


∣w1 x0 + w2 y0 + w3 z 0 + b∣

​ ​ ​ ​ ​ ​

w12 + w22 + w32


​ ​ ​ ​

Trong không gian d chiều, khoảng cách từ một điểm có toạ độ


(x10 , x20 , ..., xd0 )tới một siêu mặt phẳng có phương trình w1 x1
​ ​ ​ ​ ​ +
w2 x2 + ... + wd xd + b = 0được xác định bởi:
​ ​ ​ ​

∣w1 x10 + w2 x20 + ...+wd xd0 + b∣ ∣w T x0 + b∣


 = 
​ ​ ​ ​ ​ ​ ​

w12 + w22 + ...+wd2 ∣∣w∣∣2


​ ​

​ ​ ​ ​

với x0 ​ = [x10 , x20 , ..., xd0 ]T , w = [w1 , w2 , ...wd ]T .


​ ​ ​ ​ ​ ​

Ý tưởng từ bài toán phân loại hai lớp dữ liệu

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

Hard-margin SVM:Hai lớp là linearly separable

SVM 2
Soft-margin SVM:Hai lớp là gần linearly separable

Multi-class SVM:Nhiều lớp dữ liệu (ranh giới là các siêu phẳng)

SVM 3
Kernel SVM:Bài toán phân lớp với biên không linearly separable

2. Bài toán phân lớp với SVM

Các bài toán

TH1: Bài toán phân chia tuyến tính không nhiễu(hard margin)

Xây dựng bài toán tối ưu cho SVM

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 âm của mặt phân chia


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:

Có một nhận xét quan trọng là nếu ta thay vector hệ số w bởi kw và


b bởi kb trong đó k là một hằng số dương bất kỳ thì mặt phân chia
không thay đổi. Vì vậy, ta có thể giả sử:
yn (w T xn + b) = 1với những điểm nằm gần mặt phân chia nhất.
​ ​

Như vậy, với mọi n ta luôn có:yn (w T xn


​ ​ + b) ≥ 1
Vậy bài toán tối ưu có thể đưa về bài toán tối ưu có ràng buộc có
dạng:

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

⇒ Bài toán tối ưu trên là bài toán lồi

Hàm mục tiêu là 1 quadratic form vì ∣∣w∣∣22 ​ = w T Iw và I là 1 ma


trận xác định dương. ⇒ quadratic programming

⇒CVXOPT

Bài toán đối ngẫu của SVM

Kiểm tra tiêu chuẩn slater:


Tồn tại ít nhất 1 feasible làm cho 1 − yn (w T xn
​ ​ + b) < 0⇒
Tồn tại ít nhất 1 feasible là strictly feasible ⇒ Thỏa slater ⇒ strong
duality

Lagrangian của bài toán SVM

Hàm đối ngẫu Lagrange

SVM 6
Bài toán đối ngẫu Lagrange

⇒ Số tham số là N = số chiều của λ= số điểm dữ liệu

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

Điều kiện KKT

SVM 7
TH2: Bài toán phân chia tuyến tính có nhiễu(soft margin).

Phân tích toán học

Biến Slack: ξn được sử dụng để đo lường mức độ vi phạm của các


điểm dữ liệu so với ranh giới quyết định. Trong thuật toán Sort
Margin SVM, Slack đóng vai trò quan trọng trong việc xác định ranh
giới quyết định và phân loại dữ liệu.

Đạ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.

ξn = 0: Các điểm nằm ở khu vực an toàn → Không có sự hy


sinh mất mát nào
xảy ra.

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.

ξn > 1: Các điểm nằm ngược phía với class của


chúng so với đường boundary → Mất mát đã xảy ra.

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 đó:

w là vectơ trọng số của siêu phẳng phân loại

b là hệ số điều chỉnh độ dời (bias)

SVM 8
xi là điểm dữ liệu cần phân loại

→ Phần tử w T xi + blà giá trị của đường biên (decision boundary)


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 độ
​ ​

độ lệch (slack) của điểm dữ liệu xi . ​

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 đó:

C là một hằng số dương.

Với mỗi cặp dữ liệu (xn , yn ), thay vì ràng buộc cứng
​ ​

yn (w xn + b)≥ 1, ta sử dụng ràng buộc mềm:



T

Tóm lại, ta sẽ có bài toán tối ưu primal cho soft-margin SVM như
sau đây.

Giải quyết bài toán sort-margin

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.

TH3:Bài toán phân chia nhiều lớp(Multi-class SVM)

Giới thiệu

1. Từ Binary classification tới multi-class classification

Các phương pháp support vector machine đã đề cập (hard-


margin, soft-margin, kernel) đều được xây dựng nhằm giải
quyết bài toán phân loại binary classification (2 lớp dữ liệu). Để
mở rộng cho mô hình này áp dụng cho bài toán multi-class
classification (nhiều lớp dữ liệu) là ta sẽ sử dụng nhiều binary
classifier và các kỹ thuật như one-vs-one hoặc one-vs-rest.

Multi - class SVM: Tìm mà trận hệ số W và vector bias b sao


cho với một điểm dữ liệu x thì vector W T x + bcó thành phần
cao nhất tại chỉ số tương ứng với nhãn của x.

2. Bias trick

SVM 10
Xây dựng hàm mất mát

1. Hinge losss tổng quát cho multi-class SVM

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à:

⇒ Với một scorezj , j


​ =
 y, loss do nó gây ra có thể viết thành:

SVM 11
trong đó wj là cột thứ j của ma trận hệ số W .

Như vậy một với một điểm dữ liệu xn , n = 1, 2, 3, …N với nhãn


yn , tổng cộng loss nó gây ra là:


2. Regularization

3. Hàm mất mát của multi-class SVM

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:

3. Ứng dụng, Ưu và Nhược điểm

SVM 14
Ứng dụng

Face detection ( Nhận diện khuôn mặt)

Text and hypertext categorization (Phân loại văn bản và siêu văn bản)

Classification of images ( Phân loại hình ảnh)

Bioinformatics ( Tin sinh học)

Handwriting recognition (Nhận dạng chữ viết tay)

Geo and Environmental Sciences (Khoa học địa chất và môi trường)

Generalized predictive control(GPC) (Điều khiển dự đoán tổng quát (GPC)

Ư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

SVM hiệu quả hơn trong không gian nhiều chiều

Đa dạng về hàm kernel

SVM tương đối hiệu quả về bộ nhớ

Nhược điểm:

Độ phức tạp tính toán

Đòi hỏi lựa chọn đúng tham số

Dễ bị ảnh hưởng bởi nhiễu

4. Cải tiến SVM

Cải tiến Hard Margin

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.

Cải tiến Soft 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

Support Vector Machine (SVM):

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.

Hard Margin SVM và Soft Margin SVM:

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

6. Tài liệu tham khảo

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

You might also like