Chương 2: MÔ HÌNH SVM VÀ MÔ HÌNH THỐNG KÊ HỌC SÂU
2.1. Tổng quan về mô hình SVM (Support Vector Machine)
2.1.2. Các thuật toán huấn luyện SVM
Thuật toán chặt khúc (Chunking) bắt đầu với một tập con bất kì (chunk) của tập dữ liệu huấn luyện, sau đó huấn luyện SVM theo một phương án tối ưu trên chunk dữ liệu vừa chọn. Tiếp đến, thuật toán giữ lại vector hỗ trợ (các mẫu có
i 0
) từ chunk sau khi đã loại bỏ các phần tử khác (tương ứng với i 0) và dùng các vector hỗ trợ này để kiểm tra các phần tử còn lại của tập dữ liệu. Phần tử nào vi phạm điều kiện KKT thì được bổ sung vào các tập các vector hỗ trợ để tạo ra chunk mới. Công việc này được lặp đi lặp lại, việc khởi tạo lại cho mỗi bài toán con mới phụ thuộc vào các giá trị đầu ra của trạng thái trước đó và tiếp tục tối ưu bài toán con mới với các tham số tối ưu đã được chọn. Thuật toán sẽ dừng lại khi thỏa mãn điều kiện tối ưu. Chunk của dữ liệu tại thời điểm đang xét thường được hiểu như tập làm việc (working set). Kích thước của tập làm việc luôn thay đổi, nhưng cuối cùng nó bằng số lượng i khác không (bằng số lượng vector hỗ trợ). Phương pháp này được sử dụng với giả thiết rằng ma trận Gram dùng để lưu tích vô hướng của từng cặp các vector hỗ trợ phù hợp với kích thước bộ nhớ (chúng ta có th ể tính lại ma trận Gram bất cứ lúc nào khi thấy cần thiết, nhưng điều này sẽ làm giảm tốc độ huấn luyện). Trong thực nghiệm, có thể xẩy ra trường hợp số lượng vector hỗ trợ quá lớn, làm cho ma trận Gram vượt quá khả năng lưu trữ của máy tính.
2.1.2.2. Thuật toán phân rã
Thuật toán phân rã (Decomposition) khắc phục được khó khăn của thuật toán Chunking bằng cách cố định kích thước của bài toán con (kích thước của ma trận Gram). Vì vậy tại mọi thời điểm, một phần tử mới được bổ sung vào tập làm việc thì một phần tử khác bị loại ra. Điều này cho phép SVM có khả năng huấn luyện với tập dữ liệu lớn. Tuy nhiên, thực nghiệm cho thấy phương pháp này hội tụ rất chậm. [4]
Trong thực nghiệm, ta có thể chọn vài mẫu để bổ sung và loại bỏ từ bài toán
con để tăng tốc độ hội tụ. Thuật toán này được trình bày tóm tắt như sau:
Input
- Tập S gồm N mẫu huấn luyện {( ,x yi i)}i 1, ,N - Kích thước của Working Set là M
Output
Tập { }i i 1, ,N 1. Khởi tạo
Đặt các i 0;
Chọn các Working Set B với kích thước M;
2. Tìm nghiệm tối ưu Repeat
Giải bài toán tối ưu cục bộ trên B;
Cập nhật lại B;
Until <thỏa mãn điều kiện tối ưu toàn cục>
2.1.2.3. Thuật toán cực tiểu tuần tự
Thuật toán cực tiểu tuần tự (SMO -Sequential Minimal Optimization) [9] là một thuật toán đơn giản để giải bài toán quy hoạch lồi SVM một cách nhanh chóng mà không cần lưu trữ ma trận Gram. SMO phân tích bài toán quy hoạch lồi tổng quát thành các bài toán quy hoạch lồi con, sử dụng định lý Osuma để đảm bảo sự hội tụ.
Thuật toán này là trường hợp đặc biệt của thuật toán Decomposition, tức là nó giải bài toán quy hoạch lồi với kích thước tập làm việc là 2 trong mỗi bước lặp.
Ưu điểm của thuật toán này là có thể giải bài toán tối ưu bằng phương pháp giải tích.
a. Tối ưu hai i
Thuật toán SMO thực hiện hai công việc chính: Giải bài toán tối ưu cho hai nhân tử Lagrange bằng phương pháp giải tích và một phương pháp Heuristic để
chọn hai nhân tử cho việc tối ưu.
Thuật toán SMO tìm kiếm thông qua miền xác định của bài toán đối ngẫu để cực đại hàm mục tiêu:
1 ,
1 2
N
D i i j i j i j
i i j
L y y x x
0i C,i
Nó hoạt động bằng cách tối ưu hai i tại một thời điểm (với các i khác được giữ cố định). Nó dùng các phương pháp Heuristic để chọn hai i cho bài toán tối ưu. Bản chất của nó là thuật toán leo đồi.
b. Cập nhật tham số mỗi bước tối ưu thành công
Khi 1, 2bị thay đổi bởi 1,2, ta có thể cập nhật E F wi, ,i (đối với hàm nhân tuyến tính) và b. Cho E x y( , )là lỗi đánh giá trên ( , )x y :
1
( , )
N
T i i i i
E x y y x x b y
Ta thay đổi E với:
1 1 1 2 2 2
( , ) T T
E x y y x x y x x b
(7)
Sự thay dổi trên ngưỡng này có thể được tính bằng cách ép E1new 0 nếu 01newC (hoặc E2new 0 nếu 01new C). Từ
0E x y( , )new
( , )old ( , )
E x y E x y
1 1 1 2 2 2
( , )old T T
E x y y x x y x x b
Ta có:
1 1 1 2 2 2
( , )old T T
b E x y y x x y x x
(8)
Nếu 10, ta chỉ cần nói y E1 1new0; tương tự 1C, ta có y E1 2new 0. Nếu cả
1và 2 có giá trị 0 hoặc C thì thuật toán SMO ban đầu sẽ tính hai giá trị của b mới ứng với 1 và 2
Tương tự, từ
1
( , )
N T i i i i
F x y y x x y
Ta có
1 1 1 2 2 2
( , ) T T
F x y y x x y x x
(9) Đối với vector trọng số của hàm nhân tuyến tính,
1 N
i i i i
w y x
1 1 1 2 2 2
w y x y x
(10) c. Chọn hai icho việc tối ưu
Giải thuật Heuristic đối với việc chọn hai i cho vài toán tối ưu trong thuật toán SMO gốc như sau:
Vòng lặp ngoài, ta chọn i thứ nhất; vòng lặp trong, ta chọn i thứ hai sao cho |E2 -E1| cực đại.
Vòng lặp ngoài, ta luân phiên giữa duyệt qua tập tất cả cá mẫu và tập các vector hỗ trợ (có 0i C) (ưu tiên duyệt qua tập các vector hỗ trợ, nếu không có mới duyệt toàn bộ mẫu), chọn ra mẫu vi phậm điều kiện KKT.
Có ithứ nhất, vong lặp trong tìm kiếm một vector hỗ trợ sao cho
2 - 1
|E E |cực đại. Đầu tiên nó duyệt qua các vector hỗ trợ, bắt đầu tại một vị trí ngẫu nhieeun; Nếu công việc này cũng bị lỗi, nó bắt đầu duyệt qua toàn bộ mẫu, cũng bắt đầu tại một vị trí ngẫu nhiên.
Bởi vì thuật toán này sử dụng hầu hết thời hian để điều chỉnh các mẫu không xác định, nên Eicủa cá mẫu này phải được lưu trữ lại.