395 Stimmen

Was sind die Vorteile von künstlichen neuronalen Netzen gegenüber Support Vector Machines?

ANN (Artificial Neural Networks) und SVM (Support Vector Machines) sind zwei beliebte Strategien für überwachtes maschinelles Lernen und Klassifizierung. Es ist oft nicht klar, welche Methode für ein bestimmtes Projekt besser ist, und ich bin sicher, die Antwort lautet immer "es kommt darauf an". Oft wird eine Kombination aus beiden zusammen mit der Bayes'schen Klassifikation verwendet.

Diese Fragen wurden auf Stackoverflow bereits zu ANN vs. SVM gestellt:

ANN- und SVM-Klassifizierung

Was ist der Unterschied zwischen ANN, SVM und KNN in meiner Klassifizierungsfrage?

Support Vector Machine oder Artificial Neural Network für die Textverarbeitung?

In dieser Frage würde ich gerne wissen speziell Welche Aspekte eines ANN (insbesondere eines mehrschichtigen Perzeptrons) könnten seine Verwendung gegenüber einer SVM wünschenswert machen? Der Grund für meine Frage ist, dass es einfach ist, die Frage zu beantworten gegenüber Frage: Support Vector Machines sind ANNs oft überlegen, weil sie zwei große Schwächen von ANNs vermeiden:

(1) ANNs konvergieren oft auf lokale Minima eher als globale Minima, was bedeutet, dass sie im Wesentlichen "das große Ganze" manchmal übersehen (oder den Wald vor lauter Bäumen nicht sehen)

(2) ANNs sind oft Überarbeitung wenn das Training zu lange dauert, was bedeutet, dass ein ANN bei einem bestimmten Muster anfangen könnte, das Rauschen als Teil des Musters zu betrachten.

SVMs leiden nicht unter diesen beiden Problemen. Es ist jedoch nicht ohne weiteres ersichtlich, dass SVMs einen vollständigen Ersatz für ANNs darstellen sollen. Was also spezifisch Welche(r) Vorteil(e) hat ein ANN gegenüber einem SVM, der es für bestimmte Situationen geeignet machen könnte? Ich habe aufgelistet spezifisch Vorteile einer SVM gegenüber einem ANN, jetzt würde ich gerne eine Liste der Vorteile eines ANN sehen (falls vorhanden).

141voto

Fred Foo Punkte 341230

Nach den von Ihnen angeführten Beispielen zu urteilen, gehe ich davon aus, dass Sie mit ANNs mehrschichtige Feed-Forward-Netze (kurz FF-Netze) meinen, wie z. B. mehrschichtige Perceptrons, da diese in direktem Wettbewerb mit SVMs stehen.

Ein besonderer Vorteil dieser Modelle gegenüber SVMs ist, dass sie eine feste Größe haben: Sie sind parametrisch Modelle, während SVMs nicht parametrisch sind. Das heißt, in einem ANN haben Sie eine Reihe von versteckten Schichten mit Größen h 1 über h <em>n </em> abhängig von der Anzahl der Merkmale, plus Bias-Parameter, aus denen sich Ihr Modell zusammensetzt. Im Gegensatz dazu besteht ein SVM (zumindest ein kernelisiertes) aus einer Reihe von Support-Vektoren, die aus der Trainingsmenge ausgewählt werden, und einem Gewicht für jeden. Im ungünstigsten Fall entspricht die Anzahl der Stützvektoren genau der Anzahl der Trainingsmuster (was jedoch hauptsächlich bei kleinen Trainingssätzen oder in degenerierten Fällen vorkommt) und im Allgemeinen skaliert die Modellgröße linear. In der natürlichen Sprachverarbeitung sind SVM-Klassifikatoren mit Zehntausenden von Stützvektoren, die jeweils Hunderttausende von Merkmalen enthalten, keine Seltenheit.

Auch, Online-Schulung von FF-Netzen ist im Vergleich zur Online-SVM-Anpassung sehr einfach, und die Vorhersage kann um einiges schneller sein.

EDIT Alle obigen Ausführungen beziehen sich auf den allgemeinen Fall der kernelisierten SVMs. Lineare SVM sind ein Sonderfall, da sie sind parametrisch und ermöglichen Online-Lernen mit einfachen Algorithmen wie dem stochastischen Gradientenabstieg.

66voto

Alan Punkte 929

Ein offensichtlicher Vorteil künstlicher neuronaler Netze gegenüber Support-Vektor-Maschinen ist, dass künstliche neuronale Netze eine beliebige Anzahl von Ausgängen haben können, während Support-Vektor-Maschinen nur einen haben. Der direkteste Weg, einen n-ären Klassifikator mit Support-Vektor-Maschinen zu erstellen, besteht darin, n Support-Vektor-Maschinen zu erstellen und jede von ihnen einzeln zu trainieren. Dagegen kann ein n-ärer Klassifikator mit neuronalen Netzen in einem Durchgang trainiert werden. Außerdem ist das neuronale Netz sinnvoller, weil es ein Ganzes ist, während die Support-Vektor-Maschinen isolierte Systeme sind. Dies ist besonders nützlich, wenn die Ausgaben miteinander in Beziehung stehen.

Wenn es zum Beispiel darum ginge, handgeschriebene Ziffern zu klassifizieren, würden zehn Support-Vector-Maschinen ausreichen. Jede Support-Vektor-Maschine würde genau eine Ziffer erkennen und alle anderen nicht erkennen. Da jede handgeschriebene Ziffer nicht mehr Informationen enthalten kann als nur ihre Klasse, ist es sinnlos, dies mit einem künstlichen neuronalen Netz zu lösen.

Nehmen wir jedoch an, das Ziel sei die Modellierung des Hormonhaushalts einer Person (für mehrere Hormone) in Abhängigkeit von leicht messbaren physiologischen Faktoren wie der Zeit seit der letzten Mahlzeit, der Herzfrequenz usw. ... Da diese Faktoren alle miteinander verknüpft sind, ist die Regression mit künstlichen neuronalen Netzen sinnvoller als die Regression mit Support Vector Machines.

50voto

Bryce Punkte 2097

Dabei ist zu beachten, dass die beiden sehr eng miteinander verbunden sind. Lineare SVMs sind äquivalent zu einschichtigen NNs (d.h. Perceptrons), und mehrschichtige NNs können in Form von SVMs ausgedrückt werden. Siehe aquí für einige Details.

21voto

Wenn Sie eine Kernel-SVM verwenden wollen, müssen Sie den Kernel erraten. ANNs sind jedoch universelle Approximatoren, bei denen man nur die Breite (Approximationsgenauigkeit) und die Höhe (Approximationseffizienz) erraten muss. Wenn man das Optimierungsproblem richtig gestaltet, kommt es nicht zu einer Überanpassung (siehe Literaturverzeichnis). Es hängt auch von den Trainingsbeispielen ab, ob sie den Suchraum korrekt und gleichmäßig abtasten. Die Ermittlung von Breite und Tiefe ist Gegenstand der ganzzahligen Programmierung.

Angenommen, man hat beschränkte Funktionen f(.) und beschränkte universelle Approximatoren auf I=[0,1] mit einem Bereich von wiederum I=[0,1], die beispielsweise durch eine reelle Folge kompakter Unterstützung U(.,a) mit der Eigenschaft parametrisiert sind, dass es eine Folge von Folgen gibt mit

lim sup { |f(x) - U(x,a(k) ) | : x } =0

und Sie zeichnen Beispiele und Tests (x,y) mit einer Verteilung D auf IxI .

Für eine vorgeschriebene Unterstützung müssen Sie die beste Lösung finden, die

sum {  ( y(l) - U(x(l),a) )^{2} | : 1<=l<=N } is minimal

Diese a=aa die eine Zufallsvariable ist!, ist die Überanpassung dann

Durchschnitt über D and D^{N} of ( y - U(x,aa) )^{2}

Lassen Sie mich erklären, warum, wenn Sie wählen aa so, dass der Fehler minimiert wird, dann hat man für einen seltenen Satz von Werten eine perfekte Anpassung. Da sie jedoch selten sind, ist der Durchschnitt nie 0. Sie wollen den zweiten Fehler minimieren, obwohl Sie eine diskrete Annäherung an D haben. Und denken Sie daran, dass die Länge der Unterstützung frei ist.

16voto

dolbi Punkte 2130

Eine Antwort vermisse ich hier: Das mehrschichtige Perzeptron ist in der Lage, Beziehungen zwischen Merkmalen zu finden. Das ist zum Beispiel in der Computer Vision notwendig, wenn ein Rohbild dem Lernalgorithmus zur Verfügung gestellt wird und nun ausgefeilte Merkmale berechnet werden. Im Wesentlichen können die Zwischenstufen neue unbekannte Merkmale berechnen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X