Tải bản đầy đủ
Chương 2. MÔ HÌNH SVM VÀ ỨNG DỤNG TRONG NHẬN DẠNG CHỮ

Chương 2. MÔ HÌNH SVM VÀ ỨNG DỤNG TRONG NHẬN DẠNG CHỮ

Tải bản đầy đủ

30

thước Vapnik-Chervonenkis (kích thước VC). Kích thước VC là một khái niệm quan
trọng đối với một họ hàm phân tách (hay là bộ phân lớp). Đại lượng này được xác định
bằng số điểm cực đại mà họ hàm có thể phân tách hoàn toàn trong không gian đối
tượng. Một bộ phân loại tốt là bộ phân loại đơn giản nhất và đảm bảo sai số huấn
luyện nhỏ [16].
2.2. Lý thuyết chiều VC (Vapnik Chervonenkis dimension)
Xét các hàm f (x): R→{+1,-1}, có 2l cách để gán nhãn cho l điểm. Nếu với mỗi
một cách gán nhãn ta đều có thể tìm thấy một thành phần của tập hợp {f(x)} mà nhận
dạng chính xác cách gán nhãn này. Khi đó tập hợp của l điểm được nói là bị phá vỡ
bởi tập hợp các hàm {f(x)}. Chiều VC của {f(x)} là số lớn nhất của các điểm dữ liệu
mà có thể bị phá vỡ bởi nó. Chiều VC của các siêu phẳng trong không gian R n thường
là n+1. VC của các đường thẳng có hướng trong không gian 2 chiều (R 2) là 3 (hình
2.1) [18].

Hình 2.1. Với 3 điểm không thẳng hàng trong R2 thì luôn tách được bởi đường thẳng

Giả sử tập không gian giả thiết là tập các siêu phẳng có dạng f s(x)= w.x+b. Nếu
tất cả các véc tơ mẫu xi được bao trong hình cầu có bán kính R, và thỏa |wxi+b|≥1.
Đặt ║x║=A, khi đó chiều VC h của tập các siêu phẳng {fs} được giới hạn bởi:
h ≤ min([R2 A2], n) + 1

31

2.3. Hàm phân lớp
SVM là một phương pháp trong việc phân lớp dữ liệu tuyến tính và không tuyến
tính. Khoảng từ những năm 1990, các thuật toán phân lớp có độ chính xác cao, tốc độ
học và bảo đảm toán học mạnh nhất chính là các thuật toán sử dụng hàm phân lớp
tuyến tính. Hàm phân lớp tuyến tính có ranh giới phân lớp là một siêu phẳng, vì vậy nó
chỉ phân tách được hai lớp. Tất nhiên, ta có thể kết hợp nhiều hàm phân lớp lại để tách
được nhiều lớp hơn. Xét hàm tuyến tính phân tách R n thành hai nửa không gian, ta gán

ω1 = +1, ω 2 = −1 , luật phân lớp khi sử dụng hàm phân lớp tuyến tính là:
f ( x) = θ ((ω , x) − b)

+ 1
θ (t ) = 
− 1

t≥0
t<0

Trong đó, f (x) là hàm phân lớp, θ (x) là hàm ngưỡng, ( ω , x ) là tích vô
hướng của ω , x , ω là trọng số trên các tọa độ đặc trưng của x , b là ngưỡng.

Hình 2.2. Phân lớp bằng siêu phẳng
Như vậy, nửa không gian R+ = { x | ( ω , x ) ≥ b} được phân vào lớp ω1 = +1 ,
nửa không gian còn lại R− = { x | ( ω , x ) ≥ b} được phân vào lớp ω1 = −1 .

32

2.4. Siêu phẳng phân cách
Cho trước tập dữ liệu D gồm (x1, y1), (x2, y2), ..., (x|D|, y|D|).
Trong đó Xi là một tập các bộ huấn luyện tương ứng với nhãn lớp yi. Mỗi yi sẽ
nhận một trong hai giá trị hoặc là +1 hoặc là -1 (yi ∈ {+1, -1}).
Phương pháp phân lớp SVM sẽ tìm ra đường phân lớp “tốt nhất” để phân chia tập
dữ liệu này thành từng lớp tách biệt ra với nhau. Phương trình tổng quát của một
đường phân chia như vậy được biểu diễn dưới dạng sau:

ω.x + b = 0
Trong đó:
w: Vector trọng số, w = {w1, w2,…,wn).
x: Số thuộc tính (hay còn gọi là số chiều của dữ liệu).
b: Một đại lượng vô hướng, thường được xem như là một độ nghiêng .
Đối với trường hợp dữ liệu hai chiều (hai thuộc tính) thì phương trình trên
biểu diễn của đường thẳng phân chia. Nếu dữ liệu của chúng ta là ba chiều thì
đường phân chia giữa hai tập sẽ là một mặt phẳng phân cách. Tổng quát cho dữ liệu
n chiều thì sẽ được phân cách bởi một siêu phẳng. Chúng ta sẽ sử dụng thuật ngữ
“siêu phẳng” (hyperplane) để chỉ đến ranh giới quyết định mà chúng ta muốn tìm
kiếm bất chấp số lượng thuộc tính.

Hình 2.3. Đường phân chia đối với tập dữ liệu gồm hai thuộc tính

33

Tuy nhiên trong thực tế ta có thể tìm được vô số những siêu phẳng phân chia trên
cùng một tập dữ liệu. Và chúng ta muốn tìm đường thẳng phân chia sao cho tốt nhất,
có nghĩa là có sai sót phân loại bé nhất trên bộ dữ liệu.

Hình 2.4. Một bộ dữ liệu hai chiều được phân chia tuyến tính.
Do đó mục tiêu của phương pháp phân lớp SVM là tìm một siêu phẳng phân
cách giữa hai lớp sao cho khoảng cách lề (margin) giữa hai lớp đạt cực đại.
Siêu phẳng có biên độ lớn nhất (maximum marginal hyperplane) sẽ được chọn
như là siêu phẳng phân chia tập dữ liệu một cách tốt nhất. Trong hình bên dưới, ta thấy
có hai siêu phẳng có thể phân chia được và những biên độ của nó. Trước khi đi vào
định nghĩa của biên độ (margin), hãy nhìn vào hình trên một cách trực quan. Cả hai
siêu phẳng đều phân tách tất cả những bộ dữ liệu cho trước. Một cách trực quan, siêu
phẳng với biên độ lớn hơn sẽ chính xác hơn trong việc phân loại các bộ dữ liệu trong
tương lai so với siêu phẳng có biên độ nhỏ hơn. Điều này là lý do tại sao (trong suốt
giai đoạn học hay huấn luyện), SVM tìm những siêu phẳng có biên độ lớn nhất, gọi là
MMH (maximum marginal hyperlane). Siêu phẳng có biên độ lớn nhất là siêu phẳng
có khoảng cách từ nó tới hai mặt bên của nó thì bằng nhau (mặt bên song song với siêu
phẳng). Khoảng cách đó thật ra là khoảng cách ngắn nhất từ MMH tới bộ dữ liệu huấn
luyện gần nhất của mỗi lớp. Siêu phẳng có biên độ lớn nhất này cho chúng ta một sự
phân loại tốt nhất giữa các lớp.

34

Hình 2.5. Hai siêu phẳng phân chia tuyến tính cùng với biên độ của nó.
Siêu phẳng phân cách có vai trò quan trọng trong việc phân lớp, nó quyết định
xem một bộ dữ liệu sẽ thuộc về lớp nào. Để thực hiện việc phân lớp, SVM chỉ cần xác
định xem một bộ dữ liệu nằm về phía nào của siêu phẳng phân cách.

D( x ) = sign ( ω.x + b )
Với:
-

D(x) < 0: bộ dữ liệu sẽ nằm phía dưới siêu phẳng phân cách

-

D(x) = 0: bộ dữ liệu sẽ nằm trên siêu phẳng phân cách

-

D(x) > 0: bộ dữ liệu sẽ nằm phía trên siêu phẳng phân cách
2.5. Support vector
Ta có phương trình tổng quát của siêu phẳng

ω. x + b = 0
Ta xét trên ví dụ sau:
Với bộ dữ liệu huấn luyện có hai thuộc tính A1 và A2: X={x1, x2}, với x1, x2 là giá
trị của thuộc tính A1, A2. W = {w1, w2}. Phương trình siêu phẳng có thể viết lại:

ω 0 + ω1 x1 + ω 2 x 2 = 0
Trong đó:
-

w0 tương đương với hằng số b trong phương trình tổng quát của siêu phẳng.
Vì vậy mỗi điểm nằm trên siêu phẳng phân cách thỏa mãn:

ω 0 + ω1 x1 + ω 2 x 2 > 0
Tương tự, những điểm nằm dưới siêu phẳng phân cách phải thỏa mãn:

35

ω 0 + ω1 x1 + ω 2 x 2 < 0
Bằng cách điều chỉnh trọng số w0 ta có:

H 1 : ω 0 + ω1 x1 + ω 2 x 2 ≥ 1,
H 2 : ω 0 + ω1 x1 + ω 2 x 2 ≤ −1,

y i = +1
y i = −1

Hình 2.6. Đường biểu diễn H1 và H2. Đường màu đỏ là khoảng cách Euclidean
của hai điểm 1 và 2, đường màu xanh là khoảng cách Euclidean nhỏ nhất.
Điều này có nghĩa là nếu bất kì bộ nào nằm tại hoặc trên H 1 đều thuộc về lớp +1,
và bất kì bộ nào nằm tại hoặc dưới H2 đều thuộc về lớp -1. Kết hợp 2 bất đẳng thức
trên ta có:

y i ( ω 0 + ω1ω 2 + ω 2ω 2 ) ≥ 1, ∀i

.

Mỗi bộ huấn luyện nằm tại các mặt biên H1 hay H2 thỏa mãn phương trình trên
được gọi là support vectors. Support vectors là những bộ gần với siêu phẳng phân chia
tuyến tính (MMH) nhất.
Trong hình bên dưới, support vectors là hình tròn có viền dày hơn. Ta thấy rằng
các support vectors là những bộ khó phân lớp nhất và cung cấp nhiều thông tin nhất
cho việc phân lớp.

36

Hình 2.7. Các support vector trong SVM.
2.6. SVM với dữ liệu không nhiễu
Xét tập dữ liệu huấn luyện
D={(x1, y1), …, (xl, yl)}, x∈Rn, y∈{-1,1},
Và siêu phẳng: wx+b=0
Với các ràng buộc: |wxi+b| ≥1
Vấn đề đặt ra bây giờ là xác định các hệ số w và b như thế nào để siêu phẳng tìm
được là tốt nhất? Khoảng cách từ một điểm dữ liệu xi đến siêu phẳng là

d ( w, b; xi ) =

w.xi + b
w

Trong đó:

ω.x i + b

ω

: là giá trị tuyệt đối của biểu thức

ω. x i + b

: là độ dài Ơcơlit của vector w

Giả sử h(w,b) là tổng của khoảng cách từ điểm dữ liệu gần nhất của lớp một đến
siêu phẳng và khoảng cách từ điểm dữ liệu gần nhất của lớp -1 đến siêu phẳng. Ta có:

h( w, b) = min d ( w, b; xi ) + min d ( w, b; xi )
xi , yi = −1

= min

xi , yi = −1

xi , yi =1

w.xi + b
w

+ min

xi , yi =1

w.xi + b
w

37

1 
w.xi + b + min w.xi + b 
 xmin
xi , yi =1

w  i , yi = −1

=

2
w

=

⇒ Siêu phẳng tối ưu là siêu phẳng có

ω

nhỏ nhất. Bài toán tìm siêu phẳng tối ưu

tương đương với bài toán (OP1):

Min Φ ( w) =
w

1 2
w
2
Với: yi[wxi+b]≥1, i=1,2,…l

OP1 tương đương với bài toán tối ưu sau:

1 l l
max LD (α ) = − ∑∑ α iα j yi y j xi x j
α
2 i =1 j =1
Với ràng buộc:

αi ≥ 0

i = 1,...l

l

∑α y = 0
i =1

i

i

Giả sử α∗ là nghiệm của bài toán, khi đó
l

w* = ∑ α i* yi xi
i =1

1
b * = − w * ( xr + x s )
2
Hàm quyết định:

(

f ( x) = sgn w* x + b

)

xr, xs tương ứng là các svm thuộc lớp 1, -1
2.7. SVM với dữ liệu có nhiễu
Tập dữ liệu huấn luyện Tr có thể phân chia được tuyến tính nhưng có nhiễu
Bài toán tìm siêu phẳng tối ưu tương đương với bài toán (OP2):

38

l
1 2
Min Φ ( w, ξ ) = w + C ∑ ξ i
w,ξ
2
i =1

Với:

y i [ w.xi + b] ≥ 1 − ξ i ,

i = 1, ..., l

ξi ≥ 0
OP2 tương đương với bài toán tối ưu sau:

1 l l
max LD (α ) = − ∑∑ α iα j yi y j xi x j
α
2 i =1 j =1
Với ràng buộc:

0 ≤ αi ≤ C
l

∑α
j =1

j

i = 1, ..., l

yj = 0

Giả sử α* là nghiệm của bài toán, khi đó
l

w = ∑ α i* yi xi
*

i =1

1
b * = − w * ( xr + xs )
2
Hàm quyết định:

(

f ( x) = sgn w* x + b

)

xr, xs tương ứng là các svm thuộc lớp 1, -1.
2.8. Biên độ (Margin)
Từ các điều trên chúng ta có thể đưa ra một công thức cho việc tính biên độ lớn

1
ω

nhất. Khoảng cách từ siêu phẳng phân chia đến mọi điểm tại H1 là
Trong đó:
-

là khoảng cách Euclidean chuẩn của W là

.

39

ω × ω = ω1 + ω 2
2

-

Với W = {w1, w2} khi đó

.

2

Theo định nghĩa, khoảng cách từ siêu phẳng đến H1 bằng với khoảng cách từ mọi

điểm tại H2 đến siêu phẳng. Vì vậy, kích thước của biên độ cực đại là

2
ω

.

2.9. Phân lớp dữ liệu tuyến tính và không tuyến tính
a. Trường hợp dữ liệu có thể phân chia tuyến tính được.
Việc huấn luyện SVM với mục đích là để tìm ra các support vectors và MMH.
MMH là ranh giới phân chia tuyến tính giữa các lớp và vì thế SVM tương ứng có thể
được sử dụng để phân lớp dữ liệu mà dữ liệu đó có thể phân chia tuyến tính. Chúng ta
xem SVM được huấn luyện là SVM tuyến tính.
Sau khi huấn luyện SVM, chúng ta sẽ phân loại các bộ mới. Theo Jiawei Han and
Micheline Kamber, ta dựa trên công thức Lagrangian như sau:

Trong đó:
- yi là nhãn lớp của support vector Xi
- XT là một bộ test
- α (nhân tử Lagrangian)
- b0 là biến số được xác định bởi sự tối ưu hóa hay các thuật toán SVM
- l là số lượng các support vectors.
MMH có thể được xem như “ranh giới quyết định” trong việc quyết định xem
một bộ test bất kỳ sẽ thuộc vào lớp nào. Cho một bộ test XT, chúng ta gắn nó vào
phương trình trên, và sau đó kiểm tra dấu của kết quả. Từ đó ta sẽ biết được bộ test sẽ
rơi vào mặt nào của siêu phẳng. Nếu dấu là dương, thì XT rơi vào phía trên của MMH,
và SVM đoán rằng XT thuộc về lớp +1. Nếu dấu là âm, thì XT nằm tại hoặc dưới MMH
và nhãn lớp được đoán là -1.
b. Trường hợp dữ liệu không thể phân chia tuyến tính được.

40

Trong phần trên chúng ta đề cập đến trường hợp SVM phân lớp những dữ liệu có
thế phân chia tuyến tính, nhưng nếu dữ liệu không thể phân chia tuyến tính thì trong
trường hợp này không có đường thẳng nào có thể vẽ được để phân chia các lớp này.
SVM tuyến tính mà chúng ta đã học thì không đem lại lời giải khả thi trong trường
hợp này.

Hình 2.8. Trường hợp trên không gian 2 chiều không thể vẽ một đường
thẳng phân chia 2 lớp.
Tuy nhiên hướng tiếp cận của SVM tuyến tính có thể được mở rộng để tạo ra
SVM không tuyến tính cho việc phân lớp các dữ liệu không thể phân chia tuyến tính
(hay gọi tắt là dữ liệu không tuyến tính). Những SVM như vậy có khả năng tìm những
ranh giới quyết định không tuyến tính (những mặt không tuyến tính) trong không gian
đầu vào.
Chúng ta thu được SVM phi tuyến bằng cách mở rộng SVM tuyến tính như sau.
Có hai bước chính:
- Bước 1: Ta chuyển dữ liệu nguồn lên một không gian nhiều chiều hơn bằng
cách sử dụng ánh xạ phi tuyến. Một vài ánh xạ phi tuyến thông thường có thể được sử
dụng để thực hiện bước này.
- Bước 2: Tìm những siêu phẳng trong không gian mới này. Cuối cùng chúng ta
lại quay lại vấn đề tối ưu bình phương đã được giải quyết sử dụng công thức SVM
tuyến tính. Siêu phẳng có biên độ lớn nhất được tìm thấy trong không gian mới tương
ứng với siêu bề mặt phân chia không tuyến tính trong không gian ban đầu.