Viele Bücher und Tutorials zu neuronalen Netzen verbringen viel Zeit mit dem Backpropagation-Algorithmus, der im Wesentlichen ein Werkzeug zur Berechnung des Gradienten darstellt.
Nehmen wir an, wir bauen ein Modell mit ~ 10K Parametern / Gewichten. Ist es möglich, die Optimierung mit einigen gradientenfreien Optimierungsalgorithmen durchzuführen?
Ich denke, die Berechnung des numerischen Gradienten wäre zu langsam, aber wie wäre es mit anderen Methoden wie Nelder-Mead, Simulated Annealing oder einem genetischen Algorithmus?
Alle Algorithmen leiden unter lokalen Minima, warum mit Gradienten besessen?
Antworten:
Die ersten beiden von Ihnen genannten Algorithmen (Nelder-Mead und Simulated Annealing) gelten in Optimierungskreisen im Allgemeinen als ziemlich veraltet, da es viel bessere Alternativen gibt, die sowohl zuverlässiger als auch kostengünstiger sind. Genetische Algorithmen decken einen weiten Bereich ab, und einige davon können vernünftig sein.
In der breiteren Klasse der DFO-Algorithmen (Derivative-Free-Optimization) gibt es jedoch viele, die deutlich besser sind als diese "Klassiker", da dies in den letzten Jahrzehnten ein aktives Forschungsgebiet war. Könnten einige dieser neueren Ansätze für tiefes Lernen sinnvoll sein?
Ein relativ neuer Artikel, der den Stand der Technik vergleicht, ist der folgende:
Dies ist ein schönes Papier, das viele interessante Einblicke in die neuesten Techniken bietet. Die Ergebnisse zeigen zum Beispiel deutlich, dass die besten lokalen Optimierer alle "modellbasiert" sind und unterschiedliche Formen der sequentiellen quadratischen Programmierung (SQP) verwenden.
Wie jedoch in ihrer Zusammenfassung angemerkt, "stellen wir fest, dass die Fähigkeit all dieser Löser, gute Lösungen zu erhalten, mit zunehmender Problemgröße abnimmt." Um eine Vorstellung von den Zahlen zu bekommen, erhielten die Löser für alle Probleme ein Budget von 2500 Funktionsauswertungen, und für die Optimierung der Problemgrößen wurden maximal ~ 300 Parameter verwendet. Abgesehen von O [10] -Parametern zeigten nur sehr wenige dieser Optimierer eine sehr gute Leistung, und selbst die besten zeigten einen merklichen Leistungsabfall, da die Problemgröße zunahm.
Bei sehr hochdimensionalen Problemen sind DFO-Algorithmen einfach nicht mit Derivaten konkurrierend. Um eine Perspektive zu geben, ist die PDE-basierte Optimierung (partielle Differentialgleichung) ein weiterer Bereich mit sehr hohen Dimensionsproblemen (z. B. mehrere Parameter für jede Zelle eines großen 3D-Gitters mit finiten Elementen). In diesem Bereich ist die " adjungierte Methode " eine der am häufigsten verwendeten Methoden. Dies ist auch ein Gradientenabstiegsoptimierer, der auf der automatischen Unterscheidung eines Vorwärtsmodellcodes basiert.
Am nächsten an einem hochdimensionalen DFO-Optimierer liegt möglicherweise der Ensemble Kalman-Filter , mit dem Daten in komplexe PDE-Simulationen, z. B. Wettermodelle, integriert werden. Interessanterweise ist dies im Wesentlichen ein SQP-Ansatz, jedoch mit einer Bayesianisch-Gaußschen Interpretation (das quadratische Modell ist also eindeutig positiv, dh es gibt keine Sattelpunkte). Ich glaube jedoch nicht, dass die Anzahl der Parameter oder Beobachtungen in diesen Anwendungen vergleichbar ist mit dem, was man beim Deep Learning sieht.
Randbemerkung (lokale Minima): Ausgehend von dem, was ich über tiefes Lernen gelesen habe, glaube ich, dass es eher Sattelpunkte als lokale Minima sind, die für hochdimensionale NN-Parameterräume am problematischsten sind.
Die jüngste Übersicht in Nature besagt beispielsweise, dass "die jüngsten theoretischen und empirischen Ergebnisse stark darauf hindeuten, dass lokale Minima im Allgemeinen kein ernstes Problem darstellen. Stattdessen ist die Landschaft mit einer kombinatorisch großen Anzahl von Sattelpunkten gefüllt, bei denen der Gradient Null ist Oberfläche krümmt sich in den meisten Dimensionen nach oben und im Rest nach unten. "
Ein ähnliches Anliegen betrifft die lokale vs. globale Optimierung (zum Beispiel diese Frage, auf die in den Kommentaren hingewiesen wurde). Während ich nicht tief lerne, ist eine Überanpassung meiner Erfahrung nach definitiv ein berechtigtes Anliegen. Meiner Meinung nach sind globale Optimierungsmethoden am besten geeignet für das Engineering Design Probleme , die auf „natürliche“ Daten nicht stark hängen. In der Datenassimilation Problemen, alle aktuellen globalen Minima leicht bei Zugabe von neuen Daten ändern könnten (Einschränkung: Meine Erfahrung ist in geowissenschaftlichen Problemen konzentriert, wo die Daten im Allgemeinen „spärlich“ in Bezug auf Modellkapazität).
Eine interessante Perspektive ist vielleicht
Dies liefert semitheoretische Argumente dafür, warum und wann eine ungefähre Optimierung in der Praxis vorzuziehen ist.
Endnote (Meta-Optimierung): Während gradientenbasierte Techniken für Trainingsnetzwerke anscheinend dominant sind, kann DFO eine Rolle bei den zugehörigen Meta-Optimierungsaufgaben spielen.
Ein Beispiel wäre die Optimierung von Hyperparametern. (Interessanterweise können die erfolgreichen modellbasierten DFO-Optimierer von Rios & Sahinidis als wesentliche Lösung einer Folge von Design-of-Experiments / Response-Surface- Problemen angesehen werden.)
quelle
Es gibt alle möglichen lokalen Suchalgorithmen. Die Rückübertragung hat sich gerade für komplexere Aufgaben im Allgemeinen als am effizientesten erwiesen . Es gibt Umstände, unter denen andere lokale Suchanfragen besser sind.
Sie könnten das Bergsteigen mit zufälligem Start in einem neuronalen Netz verwenden, um schnell eine gute Lösung zu finden, aber es wäre nicht möglich, eine nahezu optimale Lösung zu finden.
Wikipedia (ich weiß, nicht die größte Quelle, aber immer noch) sagt
Quelle
Was genetische Algorithmen betrifft , würde ich Backpropagation vs Genetic Algorithm für das Training des neuronalen Netzwerks sehen
Der Hauptfall, den ich für Backprop machen würde, ist, dass es sehr weit verbreitet ist und viele großartige Verbesserungen erfahren hat . Diese Bilder zeigen wirklich einige der unglaublichen Fortschritte bei der Vanille-Rückausbreitung.
Ich würde Backprop nicht als einen Algorithmus betrachten, sondern als eine Klasse von Algorithmen.
Ich möchte auch hinzufügen, dass für neuronale Netze 10k-Parameter kleine Bohnen sind. Eine andere Suche würde gut funktionieren, aber in einem tiefen Netzwerk mit Millionen von Parametern ist dies kaum praktikabel.
quelle
Nun, die ursprünglichen neuronalen Netze wurden vor der Umwälzung der Ausbreitung in den 70er Jahren von Hand "trainiert". :)
Davon abgesehen:
Es gibt eine "Schule" des maschinellen Lernens, die als extreme Lernmaschine bezeichnet wird und keine Rückübertragung verwendet.
Was sie tun, ist, ein neuronales Netzwerk mit vielen, vielen, vielen Knoten zu erstellen - mit zufälligen Gewichten - und dann die letzte Schicht unter Verwendung von Mindestquadraten zu trainieren (wie eine lineare Regression). Anschließend beschneiden sie entweder das neuronale Netzwerk oder sie führen im letzten Schritt eine Regularisierung durch (wie beim Lasso), um eine Überanpassung zu vermeiden. Ich habe gesehen, dass dies nur für neuronale Netze mit einer einzigen verborgenen Schicht gilt. Es gibt kein Training, es ist also superschnell. Ich habe einige Tests durchgeführt und überraschenderweise sind diese auf diese Weise "trainierten" neuronalen Netze ziemlich genau.
Die meisten Leute, zumindest die, mit denen ich zusammenarbeite, behandeln diese "Schule" des maschinellen Lernens mit Spott und sie sind eine ausgestoßene Gruppe mit ihren eigenen Konferenzen und so weiter, aber ich denke tatsächlich, dass es ein bisschen genial ist.
Ein weiterer Punkt: Innerhalb der Backpropagation gibt es selten erwähnte Alternativen wie die elastische Backproagation , die in R im
neuralnet
Package implementiert sind und nur die Größe der Ableitung verwenden. Der Algorithmus besteht aus If-else-Bedingungen anstelle der linearen Algebra. Sie haben einige Vorteile gegenüber der herkömmlichen Backpropagation, dh Sie müssen Ihre Daten nicht normalisieren, da sie nicht unter dem Problem des verschwindenden Gradienten leiden .quelle
Sie können so ziemlich jeden numerischen Optimierungsalgorithmus verwenden, um die Gewichte eines neuronalen Netzwerks zu optimieren. Sie können auch gemischte kontinuierliche diskrete Optimierungsalgorithmen verwenden, um nicht nur die Gewichte, sondern auch das Layout selbst zu optimieren (Anzahl der Schichten, Anzahl der Neuronen in jeder Schicht, sogar Typ des Neurons). Es gibt jedoch keinen Optimierungsalgorithmus, der in keiner Weise unter "Fluch der Dimensionalität" und lokalen Optimierungen leidet
quelle
Sie können auch ein anderes Netzwerk verwenden, um zu beraten, wie die Parameter aktualisiert werden sollen.
Es gibt die Decoupled Neural Interfaces (DNI) von Google Deepmind. Anstatt Backpropagation zu verwenden, werden andere neuronale Netze verwendet, um die Aktualisierung der Parameter vorherzusagen. Dies ermöglicht eine parallele und asynchrone Aktualisierung der Parameter.
Die Arbeit zeigt, dass DNI die Trainingsgeschwindigkeit und die Modellkapazität von RNNs erhöht und vergleichbare Ergebnisse für RNNs und FFNNs bei verschiedenen Aufgaben liefert.
In dem Artikel wurden auch viele andere Nicht-Backpropagation-Methoden aufgelistet und verglichen
quelle
Solange dies eine Community-Frage ist, dachte ich, ich würde eine weitere Antwort hinzufügen. "Back Propagation" ist einfach der Gradientenabstiegsalgorithmus. Dabei wird nur die erste Ableitung der Funktion verwendet, für die versucht wird, die lokalen Minima oder Maxima zu finden. Es gibt eine andere Methode namens Newtons Methode oder Newton-Raphson, bei der der Hessische berechnet wird und daher zweite Ableitungen verwendet werden. Dies kann in Fällen erfolgreich sein, in denen der Gradientenabstieg fehlschlägt. Mir wird von anderen, die mehr wissen als ich, gesagt, und ja, dies ist ein Appell an die Behörde aus zweiter Hand, dass es in neuronalen Netzen nicht verwendet wird, weil die Berechnung aller zweiten Ableitungen im Hinblick auf die Berechnung zu kostspielig ist.
quelle