La descente de gradient est-elle possible pour les SVM noyés (si oui, pourquoi les gens utilisent-ils la programmation quadratique)?

21

Pourquoi les gens utilisent-ils des techniques de programmation quadratique (comme SMO) lorsqu'ils traitent avec des SVM noyés? Quel est le problème avec Gradient Descent? Est-il impossible de l'utiliser avec des noyaux ou est-ce simplement trop lent (et pourquoi?).

Voici un peu plus de contexte: en essayant de mieux comprendre les SVM, j'ai utilisé Gradient Descent pour former un classificateur SVM linéaire en utilisant la fonction de coût suivante:

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

J'utilise les notations suivantes:

  • w est le poids caractéristique du modèle etb est son paramètre de biais.
  • x(i) est levecteur d' entités de laith formation.
  • y(i) est la classe cible (-1 ou 1) pour laith instance.
  • m est le nombre d'instances de formation.
  • C est l'hyperparamètre de régularisation.

J'ai dérivé un vecteur (sub) gradient (en ce qui concerne w et b ) de cette équation, et Gradient Descent a très bien fonctionné.

J'aimerais maintenant aborder des problèmes non linéaires. Puis-je simplement remplacer tous les produits scalaires par K ( u , vutv dans la fonction de coût, où K est la fonction du noyau (par exemple le RBF gaussien, K ( u , v ) = e - γ u - v 2 ), puis utilisez le calcul pour dériver un vecteur de (sous-) gradient et continuer avec Gradient Descent?K(u,v)KK(u,v)=eγuv2

Si c'est trop lent, pourquoi? La fonction de coût n'est-elle pas convexe? Ou est-ce parce que le gradient change trop vite (ce n'est pas Lipschitz continu) donc l'algorithme continue de sauter à travers les vallées pendant la descente, donc il converge très lentement? Mais même alors, comment peut-elle être pire que la complexité temporelle de la programmation quadratique, qui est ? S'il s'agit de minima locaux, le GD stochastique avec recuit simulé ne peut-il pas les surmonter? O(nsamples2×nfeatures)

MiniQuark
la source

Réponses:

6

Fixons telle sorte que w t ϕ ( x ) = u tK et w t w = u t K u , avec K = ϕ ( x ) t ϕ ( x ) , où ϕ ( x ) est un mappage de la matrice d'entrée d'origine, xw=ϕ(x)uwtϕ(x)=utKwtw=utKuK=ϕ(x)tϕ(x)ϕ(x)x. Cela permet de résoudre le SVM à travers la formulation primale. En utilisant votre notation pour la perte:

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

est unematrice m × m , et u est unematrice m × 1 . Ni l'un ni l'autre n'est infini.Km×mum×1

En effet, le dual est généralement plus rapide à résoudre, mais le primal a aussi ses avantages, tels que les solutions approximatives (qui ne sont pas garanties dans la formulation dual).


Maintenant, pourquoi le double est-il tellement plus important n'est pas évident du tout: [1]

Les raisons historiques pour lesquelles la plupart des recherches de la dernière décennie ont porté sur la double optimisation ne sont pas claires . Nous pensons que c'est parce que les SVM ont été introduits pour la première fois dans leur formulation à marge dure [Boser et al., 1992], pour lesquels une double optimisation (en raison des contraintes) semble plus naturelle. En général, cependant, les SVM à marge souple devraient être préférés, même si les données de formation sont séparables: la frontière de décision est plus robuste car plus de points de formation sont pris en compte [Chapelle et al., 2000]


Chapelle (2007) soutient que la complexité temporelle de l'optimisation primaire et double est , le pire étant O ( n 3 ) , mais ils ont analysé les pertes quadratiques et approximatives des charnières, donc pas une bonne perte de charnière, car il n'est pas différenciable d'être utilisé avec la méthode de Newton.O(nnsv+nsv3)O(n3)


[1] Chapelle, O. (2007). Formation d'une machine à vecteurs de support dans le primal. Calcul neuronal, 19 (5), 1155-1178.

Pyromane
la source
1
+1 Pourriez-vous peut-être développer la complexité temporelle également
seanv507
@ seanv507 merci, en effet j'aurais dû y répondre, je mettrai bientôt à jour cette réponse.
Firebug
4

Si nous appliquons une transformation à tous les vecteurs de poids d'entrée ( x ( i ) ), nous obtenons la fonction de coût suivante:ϕx(i)

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

ϕ(u)tϕ(v)K(u,v)w n'est pas transformé, l'astuce du noyau ne peut pas être appliquée à la fonction de coût ci-dessus .

La fonction de coût ci-dessus correspond à la forme primitive de l'objectif SVM:

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

subject to y(i)(wtϕ(x(i))+b)1ζ(i)) and ζ(i)0 for i=1,,m

The dual form is:

minα12αtQα1tα

subject to ytα=0 and 0αiC for i=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
la source
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
la source