Ein Außenseiter des ML / DL-Bereichs; hat den Udacity Deep Learning Kurs begonnen, der auf Tensorflow basiert; Aufgabe 3 erledigen Aufgabe 4; versuchen, die Lernrate mit der folgenden Konfiguration zu optimieren:
- Losgröße 128
- Anzahl der Schritte: genug, um 2 Epochen zu füllen
- Größen der versteckten Schichten: 1024, 305, 75
- Gewichtsinitialisierung: Normal mit Standard abgeschnitten. Abweichung von sqrt (2 / n) wobei n die Größe der vorherigen Ebene ist
- Ausfallwahrscheinlichkeit: 0,75
- Regularisierung: nicht angewendet
- Lernratenalgorithmus: exponentieller Abfall
mit Lernratenparametern herumgespielt; In den meisten Fällen scheinen sie keine Wirkung zu haben. Code hier ; Ergebnisse:
Accuracy learning_rate decay_steps decay_rate staircase
93.7 .1 3000 .96 True
94.0 .3 3000 .86 False
94.0 .3 3000 .96 False
94.0 .3 3000 .96 True
94.0 .5 3000 .96 True
- Wie soll ich die Lernrate systematisch einstellen?
- Wie hängt die Lernrate mit der Anzahl der Schritte zusammen?
Antworten:
Verwenden Sie einen Optimierer für den Gefälleverlauf. Dies ist eine sehr gute Übersicht.
Schauen Sie sich dieses Tutorial zum Code an . Dies und das sind einige Beispiele.
Persönlich empfehle ich entweder ADAM oder RMSprop. Es sind noch einige Hyperparameter zu setzen, aber es gibt einige "Standard" -Parameter, die 99% der Zeit funktionieren. Für ADAM können Sie sich das Papier und für RMSprop die Folien ansehen .
BEARBEITEN
Ok, Sie verwenden bereits einen Gradientenoptimierer. Anschließend können Sie einige Hyperparameter optimieren, um die beste Lernrate auszuwählen. Kürzlich wurde ein automatisierter Ansatz vorgeschlagen . Außerdem gibt es viele vielversprechende Arbeit von Frank Hutter in Bezug auf automatisierten Hyper Tuning.
Im Allgemeinen werfen Sie einen Blick auf die AutoML Challenge , wo Sie auch den Quellcode der Teams finden. Bei dieser Herausforderung besteht das Ziel darin, das maschinelle Lernen einschließlich der Optimierung von Hyperparametern zu automatisieren.
Schließlich geben dieses Papier von LeCun und dieses sehr aktuelle Tutorial von DeepMin ( siehe Kapitel 8) einige Erkenntnisse, die für Ihre Frage nützlich sein könnten.
Denken Sie jedoch daran, dass (insbesondere bei leichten Problemen) die Lernrate das Lernen bei Verwendung eines Optimierers für die Neigung nicht wesentlich beeinflusst. Normalerweise sind diese Optimierer sehr zuverlässig und arbeiten mit verschiedenen Parametern.
quelle
Sie können die Optimierung von Hyperparametern in vielen Algorithmen für maschinelles Lernen selbst automatisieren oder nur die Hyperparameter für Gradient Descent Optimizer, dh die Lernrate.
Eine dafür beliebte Bibliothek ist die grüne Minze.
https://github.com/JasperSnoek/spearmint
quelle
In Online Learning Rate Adaption mit Hypergradient Descent ist ein kürzlich veröffentlichter automatischer Lernratentuner enthalten
Diese Methode ist sehr einfach zu implementieren. Das Kernergebnis für SGD lautet:
quelle
Zum Einstellen von Hyperparametern (Lernrate, Abklingrate, Regularisierung usw.) müssen Sie einen gehaltenen Datensatz erstellen. Dieser Datensatz ist nicht mit Ihrem Trainingsdatensatz verknüpft. Nachdem Sie mehrere Modelle mit unterschiedlichen Konfigurationen optimiert haben (wobei eine Konfiguration eine bestimmte Auswahl jedes Hyperparameters ist), wählen Sie die Konfiguration aus, indem Sie diejenige auswählen, die die Genauigkeit der Messwerte maximiert.
quelle