Gradient Descent có thể cho các SVM được nhân (nếu vậy, tại sao mọi người sử dụng Lập trình bậc hai)?


21

Tại sao mọi người sử dụng các kỹ thuật lập trình bậc hai (như SMO) khi xử lý các SVM được nhân? Điều gì sai với Gradient Descent? Có thể sử dụng với hạt nhân hay nó quá chậm (và tại sao?).

Đây là một bối cảnh nhỏ hơn: cố gắng hiểu các SVM tốt hơn một chút, tôi đã sử dụng Gradient Descent để huấn luyện một trình phân loại SVM tuyến tính bằng cách sử dụng hàm chi phí sau:

J(w,b)=Ci=1mmax(0,1y(i)(wtx(i)+b))+12wtw

Tôi đang sử dụng các ký hiệu sau:

  • w là trọng số tính năng của mô hình vàb là tham số sai lệch của nó.
  • x(i) làvectơ đặc trưng của trường hợp đào tạo thứ ith .
  • y(i) là lớp đích (-1 hoặc 1) cho thể hiện thứ ith .
  • m là số lượng các trường hợp đào tạo.
  • C là siêu tham số chính quy.

Tôi đã nhận được một vectơ gradient (phụ) (liên quan đến wb ) từ phương trình này và Gradient Descent hoạt động tốt.

Bây giờ tôi muốn giải quyết các vấn đề phi tuyến tính. Tôi chỉ có thể thay thế tất cả các sản phẩm chấm utv bằng K(u,v) trong hàm chi phí, trong đó K là hàm nhân (ví dụ: Gaussian RBF, K(u,v)=eγuv2 ), sau đó sử dụng tính toán để đưa ra một (sub) vector gradient và đi trước với Gradient Descent?

Nếu nó quá chậm, tại sao vậy? Là hàm chi phí không lồi? Hoặc là do độ dốc thay đổi quá nhanh (không phải là Lipchitz liên tục) nên thuật toán tiếp tục nhảy qua các thung lũng trong quá trình hạ xuống, vì vậy nó hội tụ rất chậm? Nhưng thậm chí sau đó, làm thế nào nó có thể tồi tệ hơn sự phức tạp thời gian Quadratic Programming, mà là ? Nếu đó là vấn đề của cực tiểu địa phương, Stochastic GD với mô phỏng ủ có thể vượt qua chúng không? O(nsamples2×nfeatures)

Câu trả lời:


6

Đặt sao cho w t ϕ ( x ) = u tKw t w = u t K u , với K = ϕ ( x ) t ϕ ( x ) , trong đó ϕ ( x ) là ánh xạ của ma trận đầu vào ban đầu, xw=ϕ(x)uwtϕ(x)=utKwtw=utKuK=ϕ(x)tϕ(x)ϕ(x)x. Điều này cho phép một người giải quyết SVM thông qua công thức nguyên thủy. Sử dụng ký hiệu của bạn cho sự mất mát:

J(w,b)=Ci=1mmax(0,1y(i)(utK(i)+b))+12utKu

là một m × m ma trận, và u m × 1 ma trận. Không phải là vô hạn.Km×mum×1

Thật vậy, kép thường nhanh hơn để giải quyết, nhưng nguyên tắc cũng có những ưu điểm của nó, chẳng hạn như các giải pháp gần đúng (không được đảm bảo trong công thức kép).


Bây giờ, tại sao kép lại nổi bật hơn nhiều không rõ ràng: [1]

Những lý do lịch sử mà hầu hết các nghiên cứu trong thập kỷ qua là về tối ưu hóa kép là không rõ ràng . Chúng tôi tin rằng đó là do các SVM được giới thiệu lần đầu tiên trong công thức biên độ cứng [Boser et al., 1992], do đó tối ưu hóa kép (vì các ràng buộc) có vẻ tự nhiên hơn. Tuy nhiên, nói chung, các SVM lề mềm nên được ưu tiên, ngay cả khi dữ liệu huấn luyện có thể tách rời: ranh giới quyết định mạnh mẽ hơn vì có nhiều điểm đào tạo được tính đến [Chapelle et al., 2000]


Chapelle (2007) cho rằng độ phức tạp thời gian của cả tối ưu hóa nguyên thủy và tối ưu kép là , trường hợp xấu nhất là O ( n 3 ) , nhưng họ đã phân tích tổn thất bản lề bậc hai và xấp xỉ mất bản lề, vì nó không khác biệt được sử dụng với phương pháp của Newton.O(nnsv+nsv3)O(n3)


[1] Chapelle, O. (2007). Đào tạo một máy vectơ hỗ trợ trong nguyên thủy. Tính toán thần kinh, 19 (5), 1155-1178.


1
+1 Bạn có thể mở rộng về độ phức tạp thời gian không
seanv507

@ seanv507 cảm ơn, thực sự tôi nên giải quyết điều đó, tôi sẽ sớm cập nhật câu trả lời này.
Firebug

4

Nếu chúng ta áp dụng các chuyển cho tất cả các vector trọng lượng đầu vào ( x ( i ) ), chúng tôi nhận được hàm chi phí sau đây:ϕx(i)

J(w,b)=Ci=1mmax(0,1y(i)(wtϕ(x(i))+b))+12wtw

Này thay thế hạt nhân lừa bởi K ( u , v ) . Kể từ khi vector trọng số wkhông biến đổi,ϕ(u)tϕ(v)K(u,v)w lừa hạt nhân không thể được áp dụng cho các hàm chi phí trên .

Hàm chi phí ở trên tương ứng với dạng nguyên thủy của mục tiêu SVM:

minw,b,ζCi=1mζ(i)+12wtw

tùy thuộc vào ζ ( i )0 với i = 1 , , my(i)(wtϕ(x(i))+b)1ζ(i))ζ(i)0i=1,,m

Các hình thức kép là:

minα12αtQα1tα

tùy thuộc vào 0 alpha iC cho i = 1 , 2 , , mytα=00αiCi=1,2,,m

1Qm×mQij=y(i)y(j)ϕ(x(i))tϕ(x(j)).

Qij

Qij=y(i)y(j)K(x(i),x(j))

So the kernel trick can only be used on the dual form of the SVM problem (plus some other algorithms such as logistic regression).

Now you can use off-the-shelf Quadratic Programming libraries to solve this problem, or use Lagrangian multipliers to get an unconstrained function (the dual cost function), then search for a minimum using Gradient Descent or any other optimization technique. One of the most efficient approach seems to be the SMO algorithm implemented by the libsvm library (for kernelized SVM).


1
I'm not sure why you marked your answer Community Wiki. This seems like a perfectly valid answer to your question.
Sycorax says Reinstate Monica

Thanks @GeneralAbrial. I marked my answer as Community Wiki to avoid any suspicion that I knew the answer before asking the question.
MiniQuark

1
You should always do what you think is right, but it's perfectly kosher to ask and answer your own question.
Sycorax says Reinstate Monica

Wait, couldn't you transform the weight vector to w=ϕ(x)u so that wtϕ(x)=uK and wtw=utKu, with K=ϕtϕ, and then optimize the sample weights u?
Firebug

2

I might be wrong, but I don't see how we can replace the dot products with kernels without turning it into the dual problem.

The kernels map the input implicitly to some feature space where x becomes ϕ(x), the loss function then becomes
J(w,b)=Ci=1mmax(0,1y(i)(wtϕ(x(i))+b))+12wtw
If Gaussian kernel is applied, ϕ(x(i)) will have ifinite dimensions, so will w.

It seems difficult to optimize a vector of infinite dimensions using gradient descent directly.

Update
Firebug's answer gives a way of replacing the dot products with kernels in the primal formulation.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.