Thư viện hỗ trợ lập trình và các hướng phát triển

Một phần của tài liệu Báo cáo môn máy học support vectors machine (Trang 35 - 39)

Thư viện hỗ trợ lập trình và các hướng phát triển

3.1. Các thư viện hỗ trợ lập trình SVM

 Hai thư viện phổ biến cài đặt thuật toán SVM là LibSVM và SVMlight.

 Trong đó LibSVM hỗ trợ nhiều nền tảng hệ điều hành khác nhau, cũng như nhiều ngôn ngữ lập trình khác nhau (C++, Java…) dễ dàng cải tiến và ứng dụng. Đặc biệt LibSVM cho phép tinh chỉnh nhiều tham số hơn một số phần mềm hoặc thư viên khác và hỗ trợ những bộ tham số mặc định hỗ trợ giải quyết nhiều vấn đề thực tế một cách hiệu quả.

Hình 3-1 Phân lớp bằng LibSVM

 SVMlight là một bản cài đặt khác của SVM bằng ngôn ngữ C. SVMlight thông qua kỹ thuật chọn lựa hiệu quả và khả thi nhất và hai phương pháp tính toán hiệu quả là “nén” và “cache” của đánh giá kernel. SVMlight gồm hai chương trình C chính: SVM_learn sử dùng để huấn luyện bộ phân lớp và SVM_classify để kiểm chứng.

 Ngoài ra còn một số bộ công cụ có giao diện đồ hoạc trực quan hỗ trợ thuật toán SVM như Torch (C++), Spider (MATLAB) hay Weka (Java).

3.2. Một số hướng nghiên cứu

Trong một thập kỷ qua SVM đã phát triển rất nhanh về cả lý thuyết lẫn ứng dụng nhưng vẫn còn rất nhiều hướng nghiên cứu triển vọng. Sau đây là một số hướng chính.

a. Hiệu quả tính toán

Một trong những nhược điểm từ đầu của SVM là chi phí tính toán cho bước huấn luyện lớn, dẫn đến khó áp dụng cho những bộ dữ liệu lớn. Tuy nhiên, vấn đề này đã được giải quyết thành công. Một cách tiếp cận là chia nhỏ bài toàn tối ưu hóa thành những bài toán nhỏ hơn mà mỗi bài toán này chỉ liên quan đến một số biến được chọn lọc vì thế tối ưu hóa được giải quyết một cách hiệu quá. Tiến trình lặp lại cho đến khi những bài toán nhỏ được giải quyết hoàn tất.

Một vấn đề gần đây hơn của máy học SVM là tìm một mặt cầu tối tiểu bao quanh các thực thể. Những thực thể khi ánh xạ vào không gian N- chiều thể hiện một lõi có thể dùng để xây dựng một mặt cầu tối tiểu bao quanh. Giải quyết bài toán SVM trên những tập lõi sẽ cho giải pháp tốt gần đúng với tốc độ rất nhanh.

b. Lựa chọn hàm kernel

Khi sử dụng hàm kernel trong SVM, việc lựa chọn hàm kernel một cách tổng quát phải thỏa định lý Mercer. Do đó, những hàm kernel phổ biến thường thuộc về một trong ba loại: hàm sigmoid, hàm đa thức và hàm bán kính cơ sở. Gần đây Pekalska và các cộng sự đã đưa ra quan điểm mới về việc thiết kế hàm kernel dựa trên ánh xạ mối liên quan gần. Những hàm kernel mới này không thỏa điều kiện Mercer đưa ra cũng như không giới hạn trong một không gian đặc trưng và thực nghiệm ban đầu cho thấy

hiệu qua tốt hơn những hàm kernel Mercer. Tuy nhiên, nền tảng lý thuyết của thế hệ hàm kernel mới này cần được nghiên cứu sâu hơn nữa.

Ngoài ra, một cách tiếp cận khác là sử dụng nhiều kernel hơn là chỉ một.

Thông qua đó sự kết hợp có thể đạt được kết quả tốt hơn. Bằng việc xác lập đúng hàm mục tiêu, việc lựa chọn các tham số cho kernel có thể hiện thực cho phép sử dụng nhiều kernel.

c. Học SVM có cấu trúc

Cực đại hóa biên giữa các lớp là động lực ban đầu của SVM. Điều này dẫn đến SVM tập trung vào việc phân tách các lớp của mẫu học nhưng không quan tâm đến sự phân bố của dữ liệu trong từng lớp. Định lý

“Không có bữa ăn trưa miễn phí” phát biểu rằng không tồn tại phương pháp phân lớp mẫu nào tuyệt đối ưu thế hơn những phương pháp khác hoặc thậm chí là so với việc đoán mò một cách ngẫu nhiên. Thực tế cho thấy, tùy vào từng bài toán, mỗi lớp khác nhau có thể có cấu trúc khác nhau. Bộ phân lớp phải cân chỉnh đường biên sao cho khớp với cấu trúc của chúng, đặc biệt cho vấn đề tổng quát hoát của bộ phân lớp. Tuy nhiên, SVM ban đầu không quan tâm đến cấu trúc, dẫn đến việc xác định siêu phẳng phân cách một cách cứng nhắc ngay giữa những support vector, dẫn đến bộ phân lớp không tối ưu hóa cho các vấn đề thực tế.

Gần đây, một số thuật toán đã được phát triển quan tâm đến cấu trúc của thông tin hơn SVM ban đầu. Chúng mang lại một quan điểm mới về bộ phân lớp, khi mà nó có thể “cảm” được cấu trước của sự phân bố dữ liệu.

Những thuật toán này được chia thành hai cách tiếp cận. Cách tiếp cận thứ như là manifold learning. Giả thiết rằng dữ liệu thực tế nằm trong những submanifold trong không gian đầu vào, và thông thường các thuật toán liên quan đến Laplacian Support Vector Machine (LapSVM). Xây dựng LapSVM đầu tiên thông qua đồ thì Laplacian trong mỗi lớp. Sau đó,

tạo ra cấu trúc manifold của dữ liệu tương ứng với ma trận Laplacian trong SVM truyền thống.

Cách tiếp cận thứ hai là khai thác các thuật toán phân cụm với giả định dữ liệu có chưa nhiều cụm với thông tin phân phối. Giả định này dường như tổng quát hơn giả định manifold. Một cách tiếp cận gần đây được biết đến là Structureed Large Margin Machine (SLMM). SLMM ứng dụng kỹ thuật gom cụm để lấy được thông tin về cấu trúc vào trong các ràng buộc.

Một số Large Margin Machines phổ biến là Minimax Probibility Machine (MPM), và Maxi-min Margin Machine (M4) có thể xem như một dạng đặc biệt của SLMM. Thực nghiệm đã cho thấy SLMM có khả năng phân lớp tốt hơn. Tuy nhiên bài toán tối ưu hóa của SLMM là Second Order Cone Programming (SOCP) thay vì SP của SVM, SLMM có chi phí tính toán cao hơn ở bước huân luyện khi so sánh với SVM truyền thống. Hơn nữa không đơn giản để tổng quát hóa hay bài toán nhiều lớp. Từ đó, một SVM có cấu trúc mới (SSVM) đã được phát triển. Kết quả là bài toán tối ưu hóa có thể được giả với QP như SVM, và dễ dàng mở rộng. Hơn nữa, SSVM đã cho thấy về mặt lý thuyết và thực nghiệm tốt hơn SVM và SLMM trong vấn đề tổng quát hóa.

Một phần của tài liệu Báo cáo môn máy học support vectors machine (Trang 35 - 39)

Tải bản đầy đủ (PDF)

(39 trang)