Ich habe ein recht einfaches ANN, das Tensorflow und AdamOptimizer für ein Regressionsproblem verwendet, und ich bin jetzt an dem Punkt, um alle Hyperparameter anzupassen.
Im Moment sah ich viele verschiedene Hyperparameter, die ich einstellen muss:
Ich habe 2 Fragen:
1) Sehen Sie andere Hyperparameter, die ich vielleicht vergessen hätte?
2) Im Moment ist meine Stimmung ziemlich "manuell" und ich bin nicht sicher, ob ich nicht alles richtig mache. Gibt es eine spezielle Reihenfolge zur Einstellung der Parameter? Zum Beispiel zuerst die Lernrate, dann die Batchgröße, dann ... ... Ich bin nicht sicher, dass alle diese Parameter unabhängig sind - ich bin mir ziemlich sicher, dass einige davon nicht sind. Welche sind eindeutig unabhängig und welche eindeutig nicht unabhängig? Sollten wir sie dann zusammen abstimmen? Gibt es ein Papier oder einen Artikel, in dem es darum geht, alle Parameter in einer bestimmten Reihenfolge richtig einzustellen?
BEARBEITEN: Hier sind die Grafiken, die ich für verschiedene Anfangslernraten, Stapelgrößen und Regularisierungsparameter erhalten habe. Die violette Kurve ist für mich völlig seltsam ... Weil die Kosten wie die anderen langsam sinken, aber bei einer niedrigeren Genauigkeitsrate steckengeblieben sind. Ist es möglich, dass das Modell in einem lokalen Minimum steckt?
Für die Lernrate habe ich den Zerfall verwendet: LR (t) = LRI/sqrt (Epoche)
Vielen Dank für Ihre Hilfe! Paul
Meine allgemeine Bestellung lautet:
Abhängigkeiten:
Ich würde davon ausgehen, dass die optimalen Werte von
stark voneinander abhängen. Ich bin jedoch kein Experte auf diesem Gebiet.
Wie für Ihre Hyperparameter:
Holen Sie sich Tensorboard zum Laufen. Schreiben Sie den Fehler dort auf. Sie müssen Unterverzeichnisse in dem Pfad erstellen, in dem TB nach den zu zeichnenden Daten sucht. Ich mache diese Unterverzeichnis-Erstellung im Skript. Also ändere ich einen Parameter im Skript, gebe der Testversion dort einen Namen, führe sie aus und zeichne alle Tests in derselben Grafik. Sie werden sehr bald ein Gefühl für die effektivsten Einstellungen für Ihre Grafik und Ihre Daten bekommen.
Bei weniger wichtigen Parametern können Sie wahrscheinlich nur einen vernünftigen Wert auswählen und dabei bleiben.
Wie Sie sagten, hängen die optimalen Werte dieser Parameter alle voneinander ab. Am einfachsten ist es, einen sinnvollen Wertebereich für jeden Hyperparameter zu definieren. Probiere dann zufällig einen Parameter aus jedem Bereich und trainiere ein Modell mit dieser Einstellung. Wiederholen Sie dies einige Male und wählen Sie dann das beste Modell aus. Wenn Sie Glück haben, können Sie analysieren, welche Hyperparameter-Einstellungen am besten funktionieren, und daraus einige Schlussfolgerungen ziehen.
Ich kenne kein Werkzeug, das für Tensorflow spezifisch ist, aber die beste Strategie besteht darin, zunächst mit den grundlegenden Hyperparametern zu beginnen, z. B. einer Lernrate von 0,01, 0,001, einem weight_decay von 0,005, 0,0005. Und stimmen Sie sie dann ab. Wenn Sie dies manuell tun, ist eine lange Zeit erforderlich. Wenn Sie caffe verwenden, ist das Folgen die beste Option, die die Hyperparameter aus einem Satz von Eingabewerten entnimmt und Ihnen den besten Satz gibt.
https://github.com/kuz/caffe-with-spearmint
für weitere Informationen können Sie auch diesem Tutorial folgen:
http://fastml.com/optimizing-hyperparams-with-hyperopt/
Was die Anzahl der Schichten angeht, schlage ich vor, zunächst ein kleineres Netzwerk zu erstellen und die Daten zu erhöhen. Wenn Sie genügend Daten haben, erhöhen Sie die Komplexität des Modells.