Ist Gradient Descent für kernelisierte SVMs möglich (wenn ja, warum wird quadratische Programmierung verwendet)?

21

Warum verwenden Leute Techniken der quadratischen Programmierung (wie SMO), wenn sie mit kernelisierten SVMs arbeiten? Was ist los mit Gradient Descent? Kann man es nicht mit Kerneln benutzen oder ist es einfach zu langsam (und warum?).

Hier ist ein wenig mehr Kontext: Um die SVMs ein bisschen besser zu verstehen, habe ich mit Gradient Descent einen linearen SVM-Klassifikator mit der folgenden Kostenfunktion trainiert:

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

Ich benutze die folgenden Notationen:

  • bw ist die Feature-Gewichtung des Modells und ist sein Bias-Parameter.b
  • x(i) ist der Merkmalsvektor der Trainingsinstanz.ith
  • y(i) ist die Zielklasse (-1 oder 1) für die Instanz .ith
  • m ist die Anzahl der Trainingsinstanzen.
  • C ist der Regularisierungs-Hyperparameter.

Aus dieser Gleichung habe ich einen (Sub-) Gradientenvektor (in Bezug auf und ) abgeleitet, und Gradient Descent hat einwandfrei funktioniert. bwb

Jetzt möchte ich nichtlineare Probleme angehen. Kann ich einfach alle Punktprodukte durch in der Kostenfunktion ersetzen , wobei die Kernelfunktion ist (zum Beispiel)? der Gaußsche RBF, ), dann verwende die Berechnung, um abzuleiten einen (Sub-) Gradientenvektor und mit Gradient Descent fortfahren? K( u , v )KK( u , v )= e - γ u - v 2utvK(u,v)KK(u,v)=eγuv2

Wenn es zu langsam ist, warum ist das so? Ist die Kostenfunktion nicht konvex? Oder liegt es daran, dass sich die Steigung zu schnell ändert (sie ist nicht Lipschitz-stetig), sodass der Algorithmus während des Abstiegs immer wieder über Täler springt und daher sehr langsam konvergiert? Aber selbst dann, wie kann es schlimmer sein als die zeitliche Komplexität von Quadratic Programming, die ? Wenn es um lokale Minima geht, kann Stochastic GD mit simuliertem Tempern diese nicht überwinden? O(nsamples2×nfeatures)

MiniQuark
quelle

Antworten:

6

Setze so dass w t ϕ ( x ) = u tK und w t w = u t K u , mit K = ϕ ( x ) t ϕ ( x ) , wobei ϕ ( x ) ist eine Abbildung der ursprünglichen Eingabematrix xw=ϕ(x)uwtϕ(x)=utKwtw=utKuK=ϕ(x)tϕ(x)ϕ(x)x. Dies ermöglicht es einem, die SVM durch die ursprüngliche Formulierung zu lösen. Verwenden Sie Ihre Notation für den Verlust:

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

ist eine m × m- Matrix und u ist eine m × 1- Matrix. Weder ist unendlich.Km×mum×1

In der Tat ist das Dual in der Regel schneller zu lösen, aber das Primäre hat auch seine Vorteile, z. B. ungefähre Lösungen (die in der Dual-Formulierung nicht garantiert sind).


Nun, warum das Dual so viel prominenter ist, ist überhaupt nicht offensichtlich: [1]

Die historischen Gründe, aus denen die meisten Untersuchungen im letzten Jahrzehnt die doppelte Optimierung betrafen, sind unklar . Wir glauben, dass dies daran liegt, dass SVMs zum ersten Mal in ihrer Hard-Margin-Formulierung eingeführt wurden [Boser et al., 1992], für die eine doppelte Optimierung (aufgrund der Einschränkungen) natürlicher erscheint. Im Allgemeinen sollten jedoch SVMs mit weichem Rand bevorzugt werden, auch wenn die Trainingsdaten trennbar sind: Die Entscheidungsgrenze ist robuster, da mehr Trainingspunkte berücksichtigt werden [Chapelle et al., 2000].


Chapelle (2007) argumentiert , die Zeitkomplexität der beiden Ur - und Dual - Optimierung ist , am schlechtesten Fall ist O ( n 3 ) , aber sie analysiert quadratische und ungefähre Scharnier Verluste, so keine richtige Scharnierverlust, da es nicht differenzierbar ist, mit Newtons Methode verwendet zu werden.O(nnsv+nsv3)O(n3)


[1] Chapelle, O. (2007). Trainieren einer Support-Vektor-Maschine im Urzustand. Neuronale Berechnung, 19 (5), 1155-1178.

Firebug
quelle
1
+1 Könnten Sie vielleicht auch die zeitliche Komplexität erweitern
seanv507
@ seanv507 danke, in der Tat hätte ich das ansprechen sollen, ich werde diese Antwort bald aktualisieren.
Firebug
4

Wenn wir eine Transformation auf alle Eingabegewichtsvektoren ( x ( i ) ) anwenden , erhalten wir die folgende Kostenfunktion:ϕx(i)

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

Der Kernel - Trick ersetzt von K ( u , v ) . Da der Wichtungsvektor w wird nicht transformiert, kann der Kernel Trick oben nicht auf die Kostenfunktion angewendet werden .ϕ(u)tϕ(v)K(u,v)w

Die obige Kostenfunktion entspricht der Urform des SVM-Ziels:

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

unterliegt und ζ ( i )0 für i = 1 , , my(i)(wtϕ(x(i))+b)1ζ(i))ζ(i)0i=1,,m

Die duale Form ist:

minα12αtQα1tα

ytα=00αiCi=1,2,,m

where 1 is a vector full of 1s and Q is an m×m matrix with elements Qij=y(i)y(j)ϕ(x(i))tϕ(x(j)).

Now we can use the kernel trick by computing Qij like so:

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).

MiniQuark
quelle
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.

dontloo
quelle