12 Stimmen

Benötigt eine gute Möglichkeit, eine "Lernrate" zu wählen und anzupassen

In der Abbildung unten sehen Sie einen Lernalgorithmus, der versucht zu lernen, um eine gewünschte Ausgabe zu erzeugen (die rote Linie). Der Lernalgorithmus ähnelt einem neuronalen Netz mit Rückwärtsfehlerfortpflanzung.

Die "Lernrate" ist ein Wert, der die Größe der Anpassungen steuert, die während des Trainingsprozesses vorgenommen werden. Ist die Lernrate zu hoch, lernt der Algorithmus schnell, aber seine Vorhersagen springen während des Trainingsprozesses stark hin und her (grüne Linie - Lernrate von 0,001), ist sie niedriger, springen die Vorhersagen weniger hin und her, aber der Algorithmus braucht viel länger zum Lernen (blaue Linie - Lernrate von 0,0001).

Die schwarzen Linien sind gleitende Durchschnitte.

Wie kann ich die Lernrate so anpassen, dass sie anfangs nahe an die gewünschte Ausgabe herankommt, dann aber langsamer wird, um den richtigen Wert zu finden?

Lernkurve http://img.skitch.com/20090605-pqpkse1yr1e5r869y6eehmpsym.png

19voto

Nate Kohl Punkte 34194

Manchmal wird der Prozess der Verringerung der Lernrate im Laufe der Zeit als "Ausglühen" der Lernrate bezeichnet.

Es gibt viele mögliche "Glühzeitpläne", z. B. dass die Lernrate eine lineare Funktion der Zeit ist:

u(t) = c / t

...wo c ist eine Konstante. Oder es gibt den "Suchen-dann-konvergieren"-Schema:

u(t) = A * (1 + (c/A)*(t/T)) / 
           (1 + (c/A)*(t/T) + T*(t^2)/(T^2))

...was die Lernrate in etwa hält A cuando t ist klein im Vergleich zu T (die "Suchphase") und verringert dann die Lernrate, wenn t ist groß im Vergleich zu T (die "Konvergenzphase"). Natürlich müssen Sie bei beiden Ansätzen die Parameter einstellen (z. B. c , A , oder T ), aber hoffentlich wird ihre Einführung mehr helfen als schaden :)

Einige Referenzen:

  • Lernratenschemata für eine schnellere stochastische Gradientensuche , Christian Darken, Joseph Chang und John Moody, Neural Networks for Signal Processing 2 --- Proceedings of the 1992 IEEE Workshop, IEEE Press, Piscataway, NJ, 1992.
  • Eine stochastische Approximationsmethode Herbert Robbins und Sutton Monro, Annals of Mathematical Statistics 22, #3 (September 1951), S. 400-407.
  • Neuronale Netze und lernende Maschinen (insbesondere Abschnitt 3.13), Simon S. Haykin, 3. Auflage (2008), ISBN 0131471392, 9780131471399
  • Hier ist ein Seite, die kurz auf die Anpassung der Lernrate eingeht .

7voto

Welbog Punkte 57431

Sie haben Ihre eigene Frage beantwortet, als Sie sagten, dass sich Ihre Lernrate ändern muss, wenn das Netz lernt. Es gibt viele verschiedene Möglichkeiten, wie man das machen kann.

Der einfachste Weg ist, die Lernrate linear mit der Anzahl der Iterationen zu reduzieren. Ziehen Sie alle 25 (oder eine andere beliebige Zahl) einen Teil der Rate ab, bis sie ein gutes Minimum erreicht.

Sie können dies auch nichtlinear mit der Anzahl der Iterationen tun. Multiplizieren Sie z. B. die Lernrate bei jeder Iteration mit 0,99, bis sie ein gutes Minimum erreicht.

Oder Sie können sich etwas mehr Mühe geben. Verwenden Sie die Ergebnisse des Netzes, um die nächste Lernrate des Netzes zu bestimmen. Je besser es nach seiner Fitness-Metrik abschneidet, desto kleiner wird seine Lernrate. Auf diese Weise konvergiert es so lange wie nötig schnell und dann langsam. Dies ist wahrscheinlich der beste Weg, aber er ist kostspieliger als die einfachen Ansätze mit der Anzahl der Wiederholungen.

4voto

Zaid Punkte 35800

Haben Sie andere Trainingsmethoden in Betracht gezogen, die unabhängig von einer Lernrate sind?

Es gibt Trainingsmethoden, die die Notwendigkeit einer Lernrate umgehen und die Hessian-Matrix berechnen (wie z.B. Levenberg-Marquardt), während ich auf Algorithmen mit direkter Suche gestoßen bin (wie die von Norio Baba entwickelten).

1voto

Josh E Punkte 7309

Vielleicht sollten Sie eine negative Rückkopplungsschleife in den Lernalgorithmus einbauen, die auf die Lernrate abgestimmt ist. Lernratenwerte, die zu weit ausschlagen, treffen auf den mäßigenden Teil der Rückkopplungsschleife und bewirken, dass sie in die andere Richtung ausschlagen, woraufhin die entgegengesetzte mäßigende Kraft einsetzt.

Der Zustandsvektor wird sich schließlich in einem Gleichgewicht einpendeln, das ein Gleichgewicht zwischen "zu viel" und "zu wenig" herstellt. So funktionieren viele Systeme in der Biologie

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