1
Hàm lỗi phân nhiều lớp SVM (Multiclass SVM) hoạt động như thế nào?
0
Hồng Nhật0 đã đăng:

Hàm lỗi phân nhiều lớp SVM (Multiclass SVM) được định nghĩa như sau,

$$L = \frac{1}{N} \sum_i \sum_{j\neq y_i} \left[ \max(0, f(x_i; W)_j - f(x_i; W)_{y_i} + \Delta) \right]$$

Khi huấn luyện, chúng ta cố gắng cực tiểu hóa hàm lỗi này, cho mình hỏi cách thức hoạt động của hàm lỗi này là gì? Tại sao việc cực tiểu hóa trên hàm lỗi này giúp mô hình SVM có thể phân lớp đúng?

thêm bình luận...
4
HateBut LoveYou40 đã đăng:

Hàm lỗi Multiclass SVM bạn đưa ra chỉ thích hợp để áp dụng cho lập trình, nó mô tả chung cho tất cả các mẫu dữ liệu cho nên rất khó hình dung, để dễ hiểu hàm lỗi phân nhiều lớp SVM hơn bạn cần phải xem cách nó hoạt động cũng như công thức của nó ở từng mẫu dữ liệu cụ thể.

Cách thức hoạt động của hàm lỗi Multiclass SVM là gì?

Tưởng tượng như bạn là học sinh chuyên Toán, bạn sẽ chỉ muốn điểm môn Toán của mình cao hơn các môn khác ít nhất 2 điểm. Hàm chi phí Multiclass SVM cũng hoạt động tương tự như vậy, nó sẽ muốn bình chọn điểm cao nhất cho phân lớp đúng hơn các phân lớp sai ít nhất một giới hạn $\Delta$ nào đó được xác định sẵn.

Công thức trên tổng quát cho toàn bộ mẫu dữ liệu, giả sử chỉ có một mẫu dữ liệu $x_i$ và nhãn $y_i$ là chỉ số của mẫu đúng, ta sẽ có công thức hàm lỗi SVM như sau,

$$L_i = \sum_{j \neq y_i} \max(0, s_j - s_{y_i} + \Delta)$$

Trong đó:

  • $s_j$ là kết quả điểm của mô hình và $s_j$ sẽ bằng $x_i \cdot W$, với ($\cdot$) là tích vô hướng của mẫu dữ liệu $x_i$ và bộ trọng số học $W$.
  • $s_{y_i}$ là vị trí của phân lớp đúng.
  • $\Delta$ là giới hạn được xác định sẵn, được đề nghị hoạt động ổn trong đa số các trường hợp với $\Delta = 1.0$

Ví dụ sau khi tính tích vô hướng của mẫu dữ liệu $x_i$ có 4 lớp, chúng ta có kết quả $s = [10, -3, 6, 9]$ và chỉ số đúng $y_i = 0$, tức là lớp đầu tiên ($s_{y_i} = s_0 = 10$) là phân lớp đúng, các lớp còn lại là phân lớp sai, ví dụ cho $\Delta = 5$, hãy cùng kiểm chứng theo công thức mình vừa nêu,

$$L_i = \max(0, -3 - 10 + 5) + \max(0, 6 - 10 + 5) + \max(0, 9 - 10 + 5) \hspace{1cm} (1)$$

Chúng ta chỉ xét các trường hợp $j \neq y_i $ thôi, tức là chúng ta chỉ tính lỗi cho những phân lớp sai so với phân lớp đúng, còn bản thân phân lớp đúng với chính nó ($j = y_i$ hay $\max(0, 10 - 10 + 5)$) không cần xét, đó là lí do ở (1) mình chỉ tính lỗi cho 3 giá trị của 3 phân lớp sai.

  • $\max(0, -3 - 10 + 5) = \max(0, -8) = 0$
  • $\max(0, 6 - 10 + 5) = \max(0, 1) = 1$
  • $\max(0, 9 - 10 + 5) = \max(0, 4) = 4$

Bạn có thấy đúng như những gì hàm Multiclass SVM mong muốn không? Nếu kết quả giống như nó mong muốn, độ lỗi sẽ nhỏ, và ngược lại độ lỗi sẽ lớn.

  • Khi điểm của phân lớp sai $s_j = -3$, điểm của phân lớp đúng $s_{y_i} = 10$ sẽ lớn hơn nhiều so với điểm của phân lớp sai và lớn hơn một khoảng giới hạn $\Delta = 5$, đó là thứ Multiclass SVM mong muốn, cho nên nó trả về 0, tức là lỗi đã được tối ưu hóa.
  • Khi điểm của phân lớp sai $s_j = 6$, điểm của phân lớp đúng $s_{y_i} = 10$ mặc dù lớn hơn so với phân lớp sai nhưng nó không lớn hơn một khoảng giới hạn $\Delta = 5$ cho phép, cho nên Multiclass SVM "hơi phàn nàn" và trả về giá trị 1, tức là lỗi ít.
  • Khi điểm của phân lớp sai $s_j = 9$, tương tự, Multiclass SVM "rất phàn nàn" vì phân lớp sai mà có điểm gần bằng phân lớp đúng $s_{y_i} = 10$ cho nên nó trả về giá trị 4, tức là lỗi nhiều hơn.

Tổng lại chúng ta có độ lỗi đánh giá chung cho mẫu dữ liệu $x_i$ là:

$$L_i = 0 + 1 + 4 = 5$$

Đó là cách hàm lỗi phân nhiều lớp (Multiclass SVM) hoạt động.

Tại sao việc cực tiểu hóa trên hàm lỗi này giúp mô hình SVM có thể phân lớp đúng?

Đọc lại cách Multiclass SVM hoạt động bạn sẽ rõ, nếu khoảng cách giữa phân lớp đúng và phân lớp sai càng lớn, thì hàm lỗi SVM sẽ cho kết quả càng nhỏ, cực tiểu hóa hàm lỗi SVM là điều chúng ta mong muốn để tăng khoảng cách giữa phân lớp đúng và sai, khi tách biệt được hai phân lớp, bạn sẽ dễ dàng dự đoán một mẫu mới thuộc lớp nào.

đã bổ sung 5.8 năm trước bởi
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)