Wann sollte ich genetische Algorithmen im Gegensatz zu neuronalen Netzen verwenden? [geschlossen]

139

Gibt es eine Faustregel (oder eine Reihe von Beispielen), um zu bestimmen, wann genetische Algorithmen im Gegensatz zu neuronalen Netzen (und umgekehrt) zur Lösung eines Problems verwendet werden sollen?

Ich weiß, dass es Fälle gibt, in denen beide Methoden gemischt werden können, aber ich suche einen umfassenden Vergleich zwischen den beiden Methoden.

Neil N.
quelle
3
Es ist erwähnenswert, dass es zwei Arten von neuronalen Netzen gibt - überwacht und unbeaufsichtigt. Supervised erhalten Trainingsdaten von einem menschlichen, unbeaufsichtigten Feedback in sich selbst und sind in dieser Hinsicht eher GAs.
Chris S
3
Ich denke nicht, dass es überhaupt "list-y" ist. In den Antworten werden zwei Methoden verglichen und klargestellt, wann eine gegen die andere angewendet werden muss.
Neil N
Kurze Antwort: Verwenden Sie GA, wenn die zu modellierende Funktion nicht kontinuierlich / diskret ist oder wenn der Datensatz astronomisch hochdimensional ist. Verwenden Sie für den Rest neuronale Netze oder GA (oder ein anderes Modell), je nachdem, was Ihnen die besten Ergebnisse liefert. Weitere Informationen finden Sie in meiner Antwort hier: stackoverflow.com/a/49684833/1121352
gaborous

Antworten:

129

Aus Wikipedia:

Ein genetischer Algorithmus (GA) ist eine Suchtechnik, die beim Rechnen verwendet wird, um genaue oder ungefähre Lösungen für Optimierungs- und Suchprobleme zu finden.

und:

Neuronale Netze sind nichtlineare statistische Datenmodellierungswerkzeuge. Sie können verwendet werden, um komplexe Beziehungen zwischen Ein- und Ausgängen zu modellieren oder Muster in Daten zu finden .

Wenn Sie ein Problem haben, bei dem Sie den Wert einer Lösung quantifizieren können, kann ein genetischer Algorithmus eine gezielte Suche im Lösungsraum durchführen. (Finden Sie zB den kürzesten Weg zwischen zwei Punkten)

Wenn Sie mehrere Elemente in verschiedenen Klassen haben, kann ein neuronales Netzwerk "lernen" , Elemente zu klassifizieren , die es zuvor noch nicht "gesehen" hat. (ZB Gesichtserkennung, Spracherkennung)

Ausführungszeiten müssen ebenfalls berücksichtigt werden. Ein genetischer Algorithmus braucht lange, um eine akzeptable Lösung zu finden. Das "Lernen" eines neuronalen Netzwerks dauert lange, kann dann aber neue Eingaben fast sofort klassifizieren.

Dawie Strauss
quelle
13
Ich möchte nur ein bisschen zur GA-Definition hinzufügen. Manchmal denken die Leute an den Lösungsraum eines GA-Problems als eine Reihe von Zuständen oder Werten. Beispiel: "Finden Sie alle Möglichkeiten, wie ein Satz von vier Schachfiguren auf einem Schachbrett angeordnet werden kann, um ein Schachmatt zu erstellen." Der Lösungsraum kann jedoch auch eine Reihe von Algorithmen sein. Hier kommt die wahre Kraft genetischer Algorithmen ins Spiel. Sie helfen Ihnen bei der Beantwortung einer Frage wie "Finden Sie eine Abfolge von Zügen mit einem bestimmten Satz Schachfiguren, die zu einem Schachmatt führen."
lfalin
44

Ein genetischer Algorithmus (trotz seines sexy Namens) ist für die meisten Zwecke eine Optimierungstechnik . Es läuft hauptsächlich darauf hinaus, dass Sie eine Reihe von Variablen haben und die beste Wertekombination für diese Variablen finden möchten. Es leiht sich nur Techniken aus der natürlichen Evolution aus, um dorthin zu gelangen.

Neuronale Netze sind nützlich zum Erkennen von Mustern . Sie folgen einem vereinfachten Modell des Gehirns und versuchen durch Ändern einer Reihe von Gewichten zwischen ihnen, Ausgaben basierend auf Eingaben vorherzusagen.

Sie sind zwei grundlegend unterschiedliche Einheiten, aber manchmal überschneiden sich die Probleme, die sie lösen können.

Zenna
quelle
22
Neuronale Netze sind eigentlich nur eine Interpolationstechnik. :)
Don Reba
3
+1 für genetische Algorithmen (Optimierung) und neuronale Netze (überwachtes Lernen) haben fast nichts gemeinsam.
Alfa
2
Das einzige gemeinsame Element ist, dass sie sich dynamisch neu ordnen, wenn sie sich einem Ziel nähern.
lfalin
1
Ich bin mir nicht sicher, ob es wirklich Überschneidungen gibt. Neuronale Netze sind ein Modell mit einer Kostenfunktion, GA sind eine Optimierungstechnik, die verwendet werden kann, um diese Kostenfunktion zu minimieren, wie @zenna sagte.
Matthieu Brucher
37

GAs generieren neue Muster in einer von Ihnen definierten Struktur.

NNs klassifizieren (oder erkennen) vorhandene Muster basierend auf den von Ihnen bereitgestellten Trainingsdaten.

GAs sind gut darin, einen großen Zustandsraum von Lösungen effizient zu durchsuchen und auf eine oder mehrere gute Lösungen zu konvergieren, aber nicht unbedingt die "beste" Lösung.

NNs können lernen, Muster zu erkennen (durch Training), aber es ist bekanntermaßen schwierig, herauszufinden, was sie gelernt haben, dh das Wissen aus ihnen herauszuholen, sobald sie trainiert wurden, und das Wissen in einem anderen (Nicht-NN) wiederzuverwenden.

Steven A. Lowe
quelle
26

Sie vergleichen hier zwei völlig verschiedene Dinge.

Neuronale Netze werden für die Regression / Klassifizierung verwendet. Bei einer Reihe von (x, y) Beispielen möchten Sie das unbekannte y für ein bestimmtes x zurückführen.

Genetische Algorithmen sind eine Optimierungstechnik. Bei einer gegebenen Funktion f (x) möchten Sie das x bestimmen, das f (x) minimiert / maximiert.

Bayer
quelle
10
Tatsächlich. Sie sind wirklich "orthogonale" Techniken. Sie können eine GA verwenden, um neuronale Nettogewichte und / oder Architektur zu finden.
Redcalx
23

Es gibt viele Ähnlichkeiten zwischen ihnen, daher werde ich nur versuchen, ihre Unterschiede zu skizzieren .

Neuronale Netze

Sind in der Lage, Online-Muster zu analysieren (solche, die sich im Laufe der Zeit ändern). Im Allgemeinen handelt es sich um eine zeitlich variierende Stichprobe, die angepasst und vorhergesagt werden muss.

Beispiele :

  • Diagrammextrapolation
  • Gesichtserkennung

Genetische Algorythmen

Wird verwendet, wenn Sie Attribute codieren können, von denen Sie glauben, dass sie zu einem bestimmten, sich nicht ändernden Problem beitragen können. Der Schwerpunkt liegt darauf, diese Attribute codieren zu können (manchmal wissen Sie, was sie sind) und dass das Problem weitgehend unverändert bleibt (andernfalls konvergieren die Entwicklungen nicht).

Beispiele :

  • Planen von Flugzeugen / Versand
  • Fahrpläne.
  • Finden der besten Eigenschaften für ein einfaches Mittel in einer künstlichen Umgebung
  • Rendern einer Annäherung eines Bildes mit zufälligen Polygonen
Unbekannt
quelle
14

Sie können genetische Algorithmen als Alternative zum Backpropagation-Algorithmus verwenden , um Gewichte in neuronalen Netzen zu aktualisieren. Ein Beispiel hierfür finden Sie unter: http://www.ai-junkie.com/ann/evolved/nnt1.html .

Amro
quelle
1
Und auch NEAT ( cs.ucf.edu/~kstanley/neat.html ). Mit einer C # -Implementierung unter ( sharneat.sourceforge.net )
redcalx
Javascript finden Sie unter github.com/wagenaartje/neataptic . Es implementiert auch NEAT.
Thomas W
8

Genetische Algorithmen arbeiten (normalerweise) mit diskreten Daten (Aufzählungen, ganzzahlige Bereiche usw.). Eine typische Anwendung für GAs ist die Suche in einem diskreten Raum nach einer "gut genug" -Lösung, wenn die einzige verfügbare Alternative eine Brute-Force-Suche ist (Auswertung aller Kombinationen).

Neuronale Netze hingegen arbeiten (normalerweise) mit kontinuierlichen Daten (Floats usw.). Eine typische Anwendung für NNs ist die Funktionsnäherung, bei der Sie eine Menge X von Eingaben und eine Menge Y verwandter Ausgaben haben, aber die analytische Funktion f: X → Y.

Natürlich gibt es Tausende von Varianten von beiden, so dass die Grenze zwischen ihnen etwas verschwommen ist.

nbro
quelle
5

Es gibt keine Faustregel. In vielen Fällen können Sie Ihr Problem formulieren, um eines von beiden zu verwenden. Maschinelles Lernen ist nach wie vor ein aktives Forschungsgebiet, und es kann umstritten sein, welches Lernmodell verwendet werden soll.

GAs nehmen sexy Sprachen aus der Evolution, aber Sie warten darauf, dass Ihr Computer durch einen zufälligen Prozess auf eine Lösung stößt. Studieren Sie Ihre Daten, machen Sie gute Annahmen, versuchen Sie zu wissen, was Sie wollen, und wählen Sie einen Ansatz, der diese gut nutzen kann. Wenn Ihre erste Wahl schlechte Ergebnisse liefert, wissen Sie, warum dies so war, und verbessern Sie den Algorithmus selbst oder wählen Sie einen besseren aus.

tilish
quelle