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:
Ich benutze die folgenden Notationen:
- b ist die Feature-Gewichtung des Modells und ist sein Bias-Parameter.
- ist der Merkmalsvektor der Trainingsinstanz.
- ist die Zielklasse (-1 oder 1) für die Instanz .
- ist die Anzahl der Trainingsinstanzen.
- ist der Regularisierungs-Hyperparameter.
Aus dieser Gleichung habe ich einen (Sub-) Gradientenvektor (in Bezug auf und ) abgeleitet, und Gradient Descent hat einwandfrei funktioniert. b
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 ≤ 2
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?