webentwicklung-frage-antwort-db.com.de

Wir stellen für den Adam Optimizer eine Abnahme der Lernrate fest?

Ich trainiere ein Netzwerk zur Bildlokalisierung mit dem Adam Optimizer, und jemand schlägt mir vor, exponentiellen Zerfall zu verwenden. Ich möchte das nicht versuchen, weil der Optimierer von Adam selbst die Lernrate abnimmt. Aber dieser Typ besteht darauf und er sagte, dass er das vorher getan hat. Also sollte ich das tun und gibt es eine Theorie hinter Ihrem Vorschlag?

32
meng lin

Es hängt davon ab, ob. ADAM aktualisiert jeden Parameter mit einer individuellen Lernrate. Dies bedeutet, dass jedem Parameter im Netzwerk eine bestimmte Lernrate zugeordnet ist.

Aber - Die einzelne Lernrate für den Parameter wird unter Verwendung von Lambda (der anfänglichen Lernrate) als Obergrenze berechnet. Dies bedeutet, dass jede einzelne Lernrate von 0 (kein Update) bis zu Lambda (maximales Update) variieren kann.

Die Lernraten passen sich während der Zugschritte an, es stimmt, aber wenn Sie sichergehen möchten, dass jeder Aktualisierungsschritt das Lambda nicht überschreitet, können Sie den Lambda-Wert unter Verwendung von exponentiellem Zerfall oder was auch immer senken Schritt des Trainings, wenn der berechnete Verlust mit dem zuvor zugeordneten Lambda-Parameter aufgehört hat abzunehmen.

41
nessuno

Nach meiner Erfahrung macht es keinen Sinn (und funktioniert nicht gut), mit Adam Optimizer eine Abnahme der Lernrate zu erreichen.

Die Theorie besagt, dass Adam die Lernratenoptimierung bereits ausführt ( Referenz überprüfen ):

"Wir schlagen Adam vor, eine Methode zur effizienten stochastischen Optimierung, die Erfordert nur Gradienten erster Ordnung mit geringem Speicherbedarf . Die Methode berechnet individuelle adaptive Lernraten für verschiedene Parameter aus Schätzungen von first und zweite Momente der _ Gradienten; der Name Adam wird von der adaptiven Momentschätzung abgeleitet. "

Wie bei jedem tiefen Lernproblem YMMV passt eine Größe nicht für alle. Sie sollten verschiedene Ansätze ausprobieren und sehen, was für Sie funktioniert usw. usw.

22
j314erre

Ja absolut. Aus meiner eigenen Erfahrung ist es sehr nützlich für Adam, dass die Lernrate abnimmt. Ohne Zerfall müssen Sie eine sehr kleine Lernrate einstellen, damit der Verlust nach dem Abnehmen nicht auf einen bestimmten Wert fällt. Hier poste ich den Code zur Verwendung von Adam mit Lernratenabfall unter Verwendung von TensorFlow. Hoffe, es ist jemandem hilfreich.

decayed_lr = tf.train.exponential_decay(learning_rate,
                                        global_step, 10000,
                                        0.95, staircase=True)
opt = tf.train.AdamOptimizer(decayed_lr, epsilon=adam_epsilon)
1
Wenmin-Wu

Adam hat eine einzige Lernrate, aber es ist eine maximale Rate, die anpassungsfähig ist, daher denke ich nicht, dass viele Leute die Lernratenplanung verwenden. 

Aufgrund des anpassungsfähigen Charakters ist die Ausfallrate ziemlich robust, aber es kann vorkommen, dass Sie sie optimieren möchten. Sie können vorab eine optimale Ausfallrate finden, indem Sie mit einer sehr kleinen Rate beginnen und diese erhöhen, bis der Verlust nicht mehr abnimmt. Sehen Sie sich dann die Steigung der Verlustkurve an und wählen Sie die Lernrate aus, die mit der schnellsten Verlustabnahme verbunden ist ( nicht der Punkt, an dem der Verlust tatsächlich am geringsten ist). Jeremy Howard erwähnt dies im fast.ai-Deep-Learning-Kurs und aus dem Papier für zyklische Lernpreise.

0
Austin