Je suis un peu confus avec la différence entre un SVM et un perceptron. Permettez-moi d'essayer de résumer ma compréhension ici, et n'hésitez pas à corriger où je me trompe et à compléter ce que j'ai manqué.
Le Perceptron n'essaie pas d'optimiser la "distance" de séparation. Tant qu'il trouve un hyperplan qui sépare les deux ensembles, c'est bien. SVM d'autre part essaie de maximiser le "vecteur de support", c'est-à-dire la distance entre deux points d'échantillonnage opposés les plus proches.
Le SVM essaie généralement d'utiliser une "fonction noyau" pour projeter les points d'échantillonnage dans un espace de grande dimension pour les rendre séparables linéairement, tandis que le perceptron suppose que les points d'échantillonnage sont séparables linéairement.
la source
Réponses:
Cela me semble juste. Les gens utilisent parfois aussi le mot "Perceptron" pour faire référence à l'algorithme de formation avec le classificateur. Par exemple, quelqu'un m'a expliqué cela dans la réponse à cette question . De plus, rien ne vous empêche d'utiliser un noyau avec le perceptron, et c'est souvent un meilleur classificateur. Voir ici pour quelques diapositives (pdf) sur la façon d'implémenter le perceptron du noyau.
La principale différence pratique entre un perceptron (noyau) et SVM est que les perceptrons peuvent être entraînés en ligne (c'est-à-dire que leurs poids peuvent être mis à jour à mesure que de nouveaux exemples arrivent un par un) alors que les SVM ne peuvent pas l'être. Consultez cette question pour savoir si les SVM peuvent être formés en ligne. Ainsi, même si un SVM est généralement un meilleur classificateur, les perceptrons peuvent toujours être utiles car ils sont bon marché et faciles à recycler dans une situation dans laquelle de nouvelles données d'entraînement arrivent constamment.
la source
Nous pouvons voir que SVM a presque le même objectif que le perceptron régularisé en L2.
Étant donné que l'objectif est différent, nous avons également différents schémas d'optimisation pour ces deux algorithmes, à partir du , nous voyons que c'est la principale raison d'utiliser la programmation quadratique pour optimiser SVM.∥ w ∥2
Pourquoi perceptron autorise-t-il la mise à jour en ligne? Si vous voyez la règle de mise à jour de la descente de gradient pour la perte de charnière (la perte de charnière est utilisée à la fois par SVM et perceptron),
Étant donné que tous les algorithmes d'apprentissage automatique peuvent être considérés comme la combinaison de la fonction de perte et de l'algorithme d'optimisation.
Le perceptron n'est rien d'autre qu'une perte de charnière (fonction de perte) + descente de gradient stochastique (optimisation)
Et SVM peut être considéré comme une perte de charnière + une régularisation l2 (perte + régularisation) + une programmation quadratique ou d'autres algorithmes d'optimisation plus sophistiqués comme SMO (optimisation).
la source
Perceptron est la généralisation de SVM où SVM est le perceptron avec une stabilité optimale. Vous avez donc raison lorsque vous dites que le perceptron n'essaie pas d'optimiser la distance de séparation.
la source