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'utilise les notations suivantes:
- est le poids caractéristique du modèle et est son paramètre de biais.
- est levecteur d' entités de la formation.
- est la classe cible (-1 ou 1) pour la instance.
- est le nombre d'instances de formation.
- est l'hyperparamètre de régularisation.
J'ai dérivé un vecteur (sub) gradient (en ce qui concerne et ) 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 , v 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?
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?