Backpropagation vs. genetischer Algorithmus für das Training des neuronalen Netzwerks


34

Ich habe ein paar Artikel gelesen, in denen die Vor- und Nachteile der einzelnen Methoden erörtert wurden. Einige argumentieren, dass GA keine Verbesserung bei der Suche nach der optimalen Lösung bringt, während andere zeigen, dass sie effektiver ist. Es scheint, dass GA in der Literatur im Allgemeinen bevorzugt wird (obwohl die meisten Leute es in irgendeiner Weise modifizieren, um die gewünschten Ergebnisse zu erzielen). Warum scheinen die meisten Softwarelösungen dann nur Backpropagation zu verwenden?

Gibt es eine allgemeine Faustregel, wenn Sie die eine oder andere verwenden? Vielleicht hängt es von der Art des NN ab, oder es gibt eine Lösung auf dem neuesten Stand der Technik, die im Allgemeinen besser ist als andere?

Wenn möglich, suche ich nach allgemeinen Antworten: zB "Wenn der NN groß ist, ist GA besser" oder "GA ist immer besser, hat aber Rechenleistungsprobleme" usw.

Antworten:


23

Wenn Sie sich die wissenschaftliche Literatur genau ansehen, finden Sie kontrastierende Ergebnisse. In einigen Fällen kann Ihnen GA (und allgemein Evolutionary Algorithms) zwar dabei helfen, ein optimales NN-Design zu finden, aber normalerweise weisen sie so viele Nachteile auf (Optimierung der Algorithmusparameter, Komplexität der Berechnungen usw.), dass ihre Verwendung für die Realität nicht möglich ist. Weltanwendungen. Natürlich gibt es eine Reihe von Problemen, bei denen GA / EAs immer vorkommenbesser als Backpropagation. Angesichts der Tatsache, dass das Finden eines optimalen NN-Designs ein komplexes multimodales Optimierungsproblem darstellt, können GA / EAs (als Metaheuristik) dazu beitragen, die mit "traditionellen" Algorithmen erzielten Ergebnisse zu verbessern, z. B. indem GA / EAs verwendet werden, um nur die anfängliche Gewichtungskonfiguration zu finden, oder um traditionellen Algorithmen zu helfen Flucht vor lokalen Minima (bei Interesse habe ich einen Artikel zu diesem Thema geschrieben).

Ich habe viel auf diesem Gebiet gearbeitet und kann Ihnen sagen, dass es viele wissenschaftliche Arbeiten zu GA / EAs gibt, die auf NNs angewendet werden, weil sie ein aufstrebendes Forschungsgebiet sind (oder besser waren).


2
Dies ist etwas, das ich mir kürzlich auch ausgedacht habe - erst eine "gute" Lösung finden und dann mit GA weiter verbessern. Nicht nur für NNs, sondern auch für die Optimierung im Allgemeinen ...
sashkello

1
Ich bin verwirrt, warum sie sich gegenseitig ausschließen. Ich dachte, GA soll die Struktur lernen; Backpropagation kann nur die Gewichte lernen
Pete

8

Eines der Hauptprobleme bei neuronalen Netzwerken ist die Überanpassung. Dies bedeutet, dass Algorithmen, die sich sehr bemühen, ein Netzwerk zu finden, das bestimmte Kriterien basierend auf einer begrenzten Datenmenge minimiert, zu einem Netzwerk führen, das für diese bestimmte Stichprobe sehr gut funktioniert von Daten, die aber eine schlechte Verallgemeinerung haben. Aus diesem Grund bin ich eher vorsichtig, GAs zum Entwerfen neuronaler Netze zu verwenden, insbesondere wenn sie gleichzeitig mit der Optimierung der Gewichte eine Architekturoptimierung durchführen. Ich habe allgemein festgestellt, dass Trainingsnetzwerke (mit Regularisierung) aus einer Anzahl (z. B. 20) zufälliger anfänglicher Gewichtungsvektoren und anschließender Bildung eines Ensembles aller resultierenden Netzwerke im Allgemeinen ein ebenso guter Ansatz sind wie jeder andere.

Im Wesentlichen ist Optimierung die Wurzel allen Übels im maschinellen Lernen. Je mehr davon Sie tun, desto wahrscheinlicher ist es, dass Sie die Daten überschneiden.


Dikran, obwohl GA eine natürliche Selektion vornimmt, aber die von Ihnen erwähnten Informationen nicht ignoriert, stellt es nur sicher, dass die ausgewählte Lösung ihr Problem löst, wenn nicht, findet es heraus, warum und verbessert den Agorithmus, der die Grundlage seiner Dynamik bis zum Netzwerk bildet Konvergieren Sie zu einer oder zwei der besten Lösungen. Hoffen Sie, dass Sie dieses Rignt bekommen?

Die Konvergenz mit der besten Lösung, die anhand einer endlichen Stichprobe von Daten bewertet wird , ist genau das , was zu einer Überanpassung führt. Um eine Überanpassung zu vermeiden, möchten Sie sich auf eine Lösung konzentrieren, die nicht die beste ist (z. B. frühzeitiges Anhalten beim Trainieren neuronaler Netze). GAs sind nicht besser als jede andere Form der Optimierung bei der Anpassung neuronaler Netze. Sie müssen eine Überoptimierung des Trainingskriteriums vermeiden.
Dikran Beuteltier

5

Wenn Sie mit großen Datenmengen arbeiten und eine überwachte Lernaufgabe mit einem vorwärtsgerichteten neuronalen Netzwerk lösen möchten, sind Lösungen auf der Basis von Backpropagation viel praktikabler. Der Grund dafür ist, dass für ein komplexes neuronales Netzwerk die Anzahl der freien Parameter sehr hoch ist. Ein Industrieprojekt, an dem ich gerade arbeite, umfasst ein neuronales Feed-Forward-Netzwerk mit etwa 1000 Eingängen, zwei verborgenen Schichten mit jeweils 384 Neuronen und 60 Ausgängen. Dies führt zu 1000 * 384 + 384 * 384 + 384 * 60 = 554496 Gewichtsparametern, die optimiert werden sollen. Die Verwendung eines GA-Ansatzes wäre hier furchtbar langsam.


Meines Wissens ist GA darauf ausgelegt, Probleme anzugehen, die mit Standardansätzen schwerer zu lösen sind. Sollte es in einer von Ihnen beschriebenen Situation nicht besser funktionieren?
Sashkello

2
Ich dachte, GA soll verwendet werden, um herauszufinden, welche Struktur es ist, z. B. wie viele versteckte Ebenen und wie sie verbunden sind. Backpropagation kann nur die Gewichte herausfinden
Pete

2

Die zweite Antwort ist falsch. Überanpassung wird nicht durch Optimierung verursacht. Überanpassung tritt auf, wenn Ihr Modell überkompliziert ist und alle Datenpunkte anpassen kann, ohne die eigentliche Regel zu kennen, nach der sie erstellt wurden (dh im Extremfall werden sie nur gespeichert). Dropconnect, Gewichtsabnahme und einfach mehr Daten verwenden. Das Ziel sollte darin bestehen, Ihr Netzwerk unter Berücksichtigung dieser Einschränkungen zu optimieren und so genau wie möglich zu gestalten.

Um die Frage zu beantworten, ist Backprop angeblich viel schneller als stochastische Optimierung (genetische Algorithmen und dergleichen.) Meine Vermutung ist , das ist , weil es von Vorteil, nimmt , was die tatsächliche Leistung wurde angenommen werden, passt sich die Gewichte in die richtige Richtung auf der Grundlage dieser Bei der stochastischen Optimierung werden völlig zufällige Änderungen versucht und diese Informationen ignoriert.

Wenn Sie jedoch ein größeres Gebiet erkunden, werden GAs wahrscheinlich auf lange Sicht besser abschneiden, indem Sie lokale Optimas vermeiden. Es wird nur länger dauern, bis Sie trainieren.

Ich bin gespannt, wie viel langsamer GAs sind als Backprop, und wenn jemand hybride Algorithmen kennt (Scatter Search scheint dafür ideal zu sein).


1
Stimme deinem ersten Absatz nicht zu. Überanpassung wird hauptsächlich durch Regularisierungsansätze im Trainingsproblem verhindert . Wenn Sie mit der Metaoptimierung beginnen - das löst viele Trainingsprobleme (zum Beispiel das Optimieren von Kernelparametern, Netzwerkarchitekturen, ...) -, wird die Überanpassung viel schwieriger und ist sicherlich nicht mehr implizit garantiert.
Marc Claesen

Wenn Überanpassung nicht durch Optimierung verursacht würde, wäre ein frühzeitiges Stoppen kein wirksames Mittel gegen Überanpassung.
Dikran Marsupial

1

Der Unterschied zwischen GA und Backpropagation besteht darin, dass GA auf Zufallszahlen und Backpropagation auf einem statischen Algorithmus wie dem stochastischen Gradientenabstieg basiert. GA basiert auf Zufallszahlen und fügt dieser Mutation hinzu, was bedeutet, dass es wahrscheinlich vermeiden würde, in einer lokalen Minima gefangen zu werden. Wenn GA jedoch auf Zufallszahlen basiert, bedeutet dies, dass es ziemlich wahrscheinlich ist, dass das Lernen zu zwei verschiedenen Zeitpunkten im selben Netzwerk ausgeführt wird. Dies kann zu einer anderen Schlussfolgerung führen, dh zu einem anderen Satz von Gewichten


Nur kommentieren, verwenden wir auch zufällige Init. für die Gewichte in Gegenstütze. Wenn wir beim Initialisieren den gleichen Startwert verwenden, führt dies zur gleichen Lösung, aber wenn Sie dies nicht tun, wird dies wahrscheinlich nicht der Fall sein. Back-Prop hängt also auch von einer zufälligen Eingabe ab. Wenn Sie den Samen fixieren, erhalten Sie auch das gleiche Ergebnis im genetischen Algorithmus, da er die gleiche Sequenz verwendet. von Zahlen wieder.
gunes
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.