Gradient Descent hat das Problem, in Local Minima hängen zu bleiben. Wir müssen Exponentialzeiten des Gradientenabfalls ausführen, um globale Minima zu finden.
Kann mir jemand Alternativen zum Gradientenabstieg, wie sie beim Lernen neuronaler Netze angewendet werden, zusammen mit ihren Vor- und Nachteilen nennen?
Dies ist eher ein Problem im Zusammenhang mit der Minimierung der Funktion als mit der verwendeten Methode. Wenn das Auffinden des wahren globalen Minimums wichtig ist, verwenden Sie eine Methode wie das simulierte Tempern . Dies wird in der Lage sein, das globale Minimum zu finden, kann jedoch sehr lange dauern.
Bei neuronalen Netzen sind lokale Minima nicht unbedingt so ein Problem. Einige der lokalen Minima beruhen auf der Tatsache, dass Sie ein funktionsidentisches Modell erhalten können, indem Sie die verborgenen Ebeneneinheiten permutieren oder die Eingabe- und Ausgabegewichte des Netzwerks usw. negieren. Auch wenn die lokalen Minima nur geringfügig nicht optimal sind Der Leistungsunterschied wird minimal sein und es wird daher nicht wirklich wichtig sein. Schließlich, und dies ist ein wichtiger Punkt, besteht das Hauptproblem beim Anpassen eines neuronalen Netzwerks in einer Überanpassung. Wenn Sie also aggressiv nach den globalen Minima der Kostenfunktion suchen, führt dies wahrscheinlich zu einer Überanpassung und einem Modell mit schlechter Leistung.
Das Hinzufügen eines Regularisierungsterms, z. B. Gewichtsabnahme, kann dazu beitragen, die Kostenfunktion zu glätten, wodurch das Problem der lokalen Minima ein wenig verringert wird. Dies würde ich ohnehin empfehlen, um eine Überanpassung zu vermeiden.
Die beste Methode zur Vermeidung lokaler Minima in neuronalen Netzen ist jedoch die Verwendung eines Gaußschen Prozessmodells (oder eines neuronalen Radialbasisfunktionsnetzwerks), bei dem die Probleme mit lokalen Minima geringer sind.
Sehr richtig. Das Problem, das globale Minimum nicht zu finden, wird überbewertet.
Bayerj
2
Eine Überanpassung tritt auf, wenn Sie viele Parameter in einem Modell verwenden (typischer NN-Anwendungsfall). Sie hängt nicht mit lokalen Minima zusammen - zumindest nicht auf offensichtliche Weise. Sie können auch mit einer kleinen NN, dh mit sehr wenigen freien Parametern, in einem schlechten lokalen Minimum stecken bleiben.
Carlosayam
1
L(ω)=(x(1)−ω)2+(x(2)−ω)2x(1),x(2)ω. Es ist leicht zu erkennen, dass zwischen zwei aufeinander folgenden Punkten ein lokales Minimum liegt, dh je mehr Daten, desto mehr lokale Minima! Der globale Wert wird zwischen den nächstgelegenen Punkten im Datensatz erreicht. Ich weiß, dass dies extrem ist, aber ich habe ein ähnliches Verhalten bei der Lösung von Änderungspunktproblemen gesehen.
Carlosayam
1
@DikranMarsupial - Ich hatte nicht genug Zeichen, um meinen Satz zu beenden :) Ich habe ein ähnliches Verhalten bei der Lösung von Änderungspunktproblemen gesehen ... mit neuronalen Netzen. Bei solchen Problemen ist ein lokales Minimum normalerweise schlecht. Daher bin ich nicht der Meinung, dass dieses Problem überbewertet ist.
Carlosayam
1
@carlosayam "überbewertet" bedeutet nicht "unwichtig", nur dass es ein Problem mit neuronalen Netzen ist, das im Allgemeinen überbewertet ist. Es wird immer Probleme mit allen Lernmethoden geben, es gibt kein Allheilmittel für alles und Sie müssen immer die Probleme mit jedem Modell diagnostizieren.
Dikran Beuteltier
24
Gradient Descent ist ein Optimierungsalgorithmus .
Es gibt viele Optimierungsalgorithmen, die mit einer festen Anzahl von Realwerten arbeiten , die korreliert sind ( nicht trennbar ). Wir können sie grob in zwei Kategorien einteilen: gradientenbasierte Optimierer und ableitungsfreie Optimierer. Normalerweise möchten Sie den Gradienten verwenden, um neuronale Netze in einer überwachten Umgebung zu optimieren, da dies erheblich schneller ist als die ableitungsfreie Optimierung. Es gibt zahlreiche gradientenbasierte Optimierungsalgorithmen, die zur Optimierung neuronaler Netze verwendet wurden:
Stochastic Gradient Descent (SGD) , Minibatch-SGD, ...: Sie müssen den Gradienten nicht für das gesamte Trainingsset auswerten, sondern nur für eine Probe oder ein Minibatch von Proben. Dies ist in der Regel viel schneller als der Batch-Gradienten-Abstieg. Minibatches wurden verwendet, um den Farbverlauf zu glätten und die Vorwärts- und Rückwärtsausbreitung zu parallelisieren. Der Vorteil gegenüber vielen anderen Algorithmen besteht darin, dass sich jede Iteration in O (n) befindet (n ist die Anzahl der Gewichte in Ihrem NN). SGD bleibt normalerweise nicht in lokalen Minima (!) Stecken, weil es stochastisch ist.
Nichtlinearer Konjugatgradient : Scheint bei der Regression sehr erfolgreich zu sein, O (n) erfordert den Batch-Gradienten (daher möglicherweise nicht die beste Wahl für große Datensätze)
L-BFGS : scheint in der Klassifikation sehr erfolgreich zu sein, verwendet die hessische Approximation, erfordert den Chargengradienten
Levenberg-Marquardt-Algorithmus (LMA) : Dies ist der beste Optimierungsalgorithmus, den ich kenne. Es hat den Nachteil, dass seine Komplexität in etwa O (n ^ 3) beträgt. Verwenden Sie es nicht für große Netzwerke!
Und es wurden viele andere Algorithmen zur Optimierung neuronaler Netze vorgeschlagen. Sie könnten auch hessische Optimierung oder v-SGD (es gibt viele SGD-Typen mit adaptiven Lernraten, siehe z . B. hier ) suchen .
Die Optimierung für NNs ist kein gelöstes Problem! Nach meinen Erfahrungen besteht die größte Herausforderung darin, kein gutes lokales Minimum zu finden. Die Herausforderung besteht jedoch darin, aus sehr flachen Regionen herauszukommen, sich mit schlecht konditionierten Fehlerfunktionen usw. zu befassen. Dies ist der Grund, warum LMA und andere Algorithmen, die Approximationen des Hessischen verwenden, in der Praxis normalerweise so gut funktionieren und Menschen versuchen, stochastische Versionen zu entwickeln die Informationen zweiter Ordnung mit geringer Komplexität verwenden. Ein sehr gut abgestimmter Parametersatz für Minibatch-SGD ist jedoch häufig besser als jeder komplexe Optimierungsalgorithmus.
Normalerweise möchten Sie kein globales Optimum finden. Denn das erfordert in der Regel eine Überanpassung der Trainingsdaten.
Eine interessante Alternative zum Gradientenabstieg sind populationsbasierte Trainingsalgorithmen wie die evolutionären Algorithmen (EA) und die Partikelschwarmoptimierung (PSO). Die Grundidee hinter populationsbasierten Ansätzen besteht darin, dass eine Population von Kandidatenlösungen (NN-Gewichtungsvektoren) erstellt wird und die Kandidatenlösungen den Suchraum iterativ durchsuchen, Informationen austauschen und schließlich auf ein Minimum konvergieren. Da viele Ansatzpunkte (Lösungskandidaten) verwendet werden, erhöhen sich die Chancen, sich den globalen Minima anzunähern, erheblich. Es hat sich gezeigt, dass PSO und EA bei komplexen NN-Trainingsproblemen eine sehr wettbewerbsfähige Leistung erbringen, die häufig (wenn auch nicht immer) über dem Gefälle liegt.
+1 Es ist zu berücksichtigen, dass eine aggressive Optimierung des Trainingskriteriums wahrscheinlich zu einer Überanpassung führt, sofern keine Maßnahmen ergriffen werden, um dies zu verhindern. Daher würde ich PSO und EA vermeiden, sofern das Trainingskriterium keine Form der Regularisierung oder andere auf Komplexität basierende Faktoren enthält Strafe.
Dikran Beuteltier
5
@ anna-earwen, könnten Sie bitte einige Referenzen angeben, bei denen PSO im Vergleich zu SGD wettbewerbsfähig ist?
Emrea
8
Ich weiß, dass dieser Thread ziemlich alt ist, und andere haben großartige Arbeit geleistet, um Konzepte wie lokale Minima, Überanpassung usw. zu erklären. Da OP jedoch nach einer alternativen Lösung suchte, werde ich versuchen, eine beizutragen, und hoffe, dass dies weitere interessante Ideen inspiriert.
Die Idee ist, jedes Gewicht w zu w + t zu ersetzen, wobei t eine Zufallszahl ist, die der Gaußschen Verteilung folgt. Die endgültige Ausgabe des Netzwerks ist dann die durchschnittliche Ausgabe über alle möglichen Werte von t. Dies kann analytisch erfolgen. Sie können das Problem dann entweder mit Gradientenabstieg oder LMA oder anderen Optimierungsmethoden optimieren. Sobald die Optimierung abgeschlossen ist, haben Sie zwei Möglichkeiten. Eine Möglichkeit besteht darin, das Sigma in der Gaußschen Verteilung zu reduzieren und die Optimierung immer wieder durchzuführen, bis das Sigma 0 erreicht, dann haben Sie ein besseres lokales Minimum (aber möglicherweise kann dies zu einer Überanpassung führen). Eine andere Option ist die Verwendung der Option mit der Zufallszahl in ihren Gewichten, da diese normalerweise eine bessere Generalisierungseigenschaft aufweist.
Der erste Ansatz ist ein Optimierungstrick (ich nenne ihn Faltungs-Tunneling, da er die Faltung über die Parameter verwendet, um die Zielfunktion zu ändern), um die Oberfläche der Kostenfunktionslandschaft zu glätten und einige der lokalen Minima zu beseitigen Erleichtert das Auffinden eines globalen Minimums (oder eines besseren lokalen Minimums).
Der zweite Ansatz bezieht sich auf die Geräuschinjektion (bei Gewichten). Beachten Sie, dass dies analytisch erfolgt, was bedeutet, dass das Endergebnis ein einzelnes Netzwerk anstelle mehrerer Netzwerke ist.
Das Folgende sind Beispielausgaben für das Zwei-Spiralen-Problem. Die Netzwerkarchitektur ist für alle drei gleich: Es gibt nur eine verborgene Schicht mit 30 Knoten, und die Ausgabeschicht ist linear. Der verwendete Optimierungsalgorithmus ist LMA. Das linke Bild zeigt die Vanilleeinstellung. die Mitte verwendet den ersten Ansatz (nämlich wiederholt das Sigma gegen 0 zu reduzieren); der dritte verwendet Sigma = 2.
Sie können sehen, dass die Vanille-Lösung die schlechteste ist, das Faltungstunneln eine bessere Arbeit leistet und die Rauschinjektion (mit Faltungstunneln) die beste ist (in Bezug auf die Verallgemeinerungseigenschaft).
Sowohl das Faltungstunneln als auch die analytische Art der Rauschinjektion sind meine ursprünglichen Ideen. Vielleicht sind sie die Alternative, die jemanden interessieren könnte. Die Details finden Sie in meinem Artikel Kombinieren einer unendlichen Anzahl neuronaler Netze zu einem . Warnung: Ich bin kein professioneller akademischer Autor und die Arbeit wird nicht von Fachleuten begutachtet. Wenn Sie Fragen zu den von mir genannten Ansätzen haben, hinterlassen Sie bitte einen Kommentar.
Extreme Lernmaschinen Im Wesentlichen handelt es sich um ein neuronales Netzwerk, bei dem die Gewichte, die die Eingaben mit den verborgenen Knoten verbinden, zufällig zugewiesen und nie aktualisiert werden. Die Gewichte zwischen den versteckten Knoten und den Ausgängen werden in einem einzigen Schritt durch Lösen einer linearen Gleichung (Inverse Matrix) gelernt.
Gradient Descent ist ein Optimierungsalgorithmus .
Es gibt viele Optimierungsalgorithmen, die mit einer festen Anzahl von Realwerten arbeiten , die korreliert sind ( nicht trennbar ). Wir können sie grob in zwei Kategorien einteilen: gradientenbasierte Optimierer und ableitungsfreie Optimierer. Normalerweise möchten Sie den Gradienten verwenden, um neuronale Netze in einer überwachten Umgebung zu optimieren, da dies erheblich schneller ist als die ableitungsfreie Optimierung. Es gibt zahlreiche gradientenbasierte Optimierungsalgorithmen, die zur Optimierung neuronaler Netze verwendet wurden:
Und es wurden viele andere Algorithmen zur Optimierung neuronaler Netze vorgeschlagen. Sie könnten auch hessische Optimierung oder v-SGD (es gibt viele SGD-Typen mit adaptiven Lernraten, siehe z . B. hier ) suchen .
Die Optimierung für NNs ist kein gelöstes Problem! Nach meinen Erfahrungen besteht die größte Herausforderung darin, kein gutes lokales Minimum zu finden. Die Herausforderung besteht jedoch darin, aus sehr flachen Regionen herauszukommen, sich mit schlecht konditionierten Fehlerfunktionen usw. zu befassen. Dies ist der Grund, warum LMA und andere Algorithmen, die Approximationen des Hessischen verwenden, in der Praxis normalerweise so gut funktionieren und Menschen versuchen, stochastische Versionen zu entwickeln die Informationen zweiter Ordnung mit geringer Komplexität verwenden. Ein sehr gut abgestimmter Parametersatz für Minibatch-SGD ist jedoch häufig besser als jeder komplexe Optimierungsalgorithmus.
Normalerweise möchten Sie kein globales Optimum finden. Denn das erfordert in der Regel eine Überanpassung der Trainingsdaten.
quelle
Eine interessante Alternative zum Gradientenabstieg sind populationsbasierte Trainingsalgorithmen wie die evolutionären Algorithmen (EA) und die Partikelschwarmoptimierung (PSO). Die Grundidee hinter populationsbasierten Ansätzen besteht darin, dass eine Population von Kandidatenlösungen (NN-Gewichtungsvektoren) erstellt wird und die Kandidatenlösungen den Suchraum iterativ durchsuchen, Informationen austauschen und schließlich auf ein Minimum konvergieren. Da viele Ansatzpunkte (Lösungskandidaten) verwendet werden, erhöhen sich die Chancen, sich den globalen Minima anzunähern, erheblich. Es hat sich gezeigt, dass PSO und EA bei komplexen NN-Trainingsproblemen eine sehr wettbewerbsfähige Leistung erbringen, die häufig (wenn auch nicht immer) über dem Gefälle liegt.
quelle
Ich weiß, dass dieser Thread ziemlich alt ist, und andere haben großartige Arbeit geleistet, um Konzepte wie lokale Minima, Überanpassung usw. zu erklären. Da OP jedoch nach einer alternativen Lösung suchte, werde ich versuchen, eine beizutragen, und hoffe, dass dies weitere interessante Ideen inspiriert.
Die Idee ist, jedes Gewicht w zu w + t zu ersetzen, wobei t eine Zufallszahl ist, die der Gaußschen Verteilung folgt. Die endgültige Ausgabe des Netzwerks ist dann die durchschnittliche Ausgabe über alle möglichen Werte von t. Dies kann analytisch erfolgen. Sie können das Problem dann entweder mit Gradientenabstieg oder LMA oder anderen Optimierungsmethoden optimieren. Sobald die Optimierung abgeschlossen ist, haben Sie zwei Möglichkeiten. Eine Möglichkeit besteht darin, das Sigma in der Gaußschen Verteilung zu reduzieren und die Optimierung immer wieder durchzuführen, bis das Sigma 0 erreicht, dann haben Sie ein besseres lokales Minimum (aber möglicherweise kann dies zu einer Überanpassung führen). Eine andere Option ist die Verwendung der Option mit der Zufallszahl in ihren Gewichten, da diese normalerweise eine bessere Generalisierungseigenschaft aufweist.
Der erste Ansatz ist ein Optimierungstrick (ich nenne ihn Faltungs-Tunneling, da er die Faltung über die Parameter verwendet, um die Zielfunktion zu ändern), um die Oberfläche der Kostenfunktionslandschaft zu glätten und einige der lokalen Minima zu beseitigen Erleichtert das Auffinden eines globalen Minimums (oder eines besseren lokalen Minimums).
Der zweite Ansatz bezieht sich auf die Geräuschinjektion (bei Gewichten). Beachten Sie, dass dies analytisch erfolgt, was bedeutet, dass das Endergebnis ein einzelnes Netzwerk anstelle mehrerer Netzwerke ist.
Das Folgende sind Beispielausgaben für das Zwei-Spiralen-Problem. Die Netzwerkarchitektur ist für alle drei gleich: Es gibt nur eine verborgene Schicht mit 30 Knoten, und die Ausgabeschicht ist linear. Der verwendete Optimierungsalgorithmus ist LMA. Das linke Bild zeigt die Vanilleeinstellung. die Mitte verwendet den ersten Ansatz (nämlich wiederholt das Sigma gegen 0 zu reduzieren); der dritte verwendet Sigma = 2.
Sie können sehen, dass die Vanille-Lösung die schlechteste ist, das Faltungstunneln eine bessere Arbeit leistet und die Rauschinjektion (mit Faltungstunneln) die beste ist (in Bezug auf die Verallgemeinerungseigenschaft).
Sowohl das Faltungstunneln als auch die analytische Art der Rauschinjektion sind meine ursprünglichen Ideen. Vielleicht sind sie die Alternative, die jemanden interessieren könnte. Die Details finden Sie in meinem Artikel Kombinieren einer unendlichen Anzahl neuronaler Netze zu einem . Warnung: Ich bin kein professioneller akademischer Autor und die Arbeit wird nicht von Fachleuten begutachtet. Wenn Sie Fragen zu den von mir genannten Ansätzen haben, hinterlassen Sie bitte einen Kommentar.
quelle
Extreme Lernmaschinen Im Wesentlichen handelt es sich um ein neuronales Netzwerk, bei dem die Gewichte, die die Eingaben mit den verborgenen Knoten verbinden, zufällig zugewiesen und nie aktualisiert werden. Die Gewichte zwischen den versteckten Knoten und den Ausgängen werden in einem einzigen Schritt durch Lösen einer linearen Gleichung (Inverse Matrix) gelernt.
quelle