Sollten wir den Lernratenabfall für Adam Optimizer durchführen?

74

Ich trainiere ein Netzwerk für die Bildlokalisierung mit dem Adam-Optimierer, und jemand schlägt mir vor, den exponentiellen Zerfall zu verwenden. Ich möchte das nicht versuchen, weil der Adam-Optimierer selbst die Lernrate verringert. Aber dieser Typ besteht darauf und er sagte, dass er das schon einmal getan hat. Soll ich das tun und gibt es eine Theorie hinter Ihrem Vorschlag?

meng lin
quelle

Antworten:

84

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 (die anfängliche Lernrate) berechnet wird als Obergrenze. Dies bedeutet, dass jede einzelne Lernrate von 0 (keine Aktualisierung) bis Lambda (maximale Aktualisierung) variieren kann.

Die Lernraten passen sich zwar während der Zugschritte an, aber wenn Sie sicher sein möchten, dass jeder Aktualisierungsschritt das Lambda nicht überschreitet, können Sie das Lambda durch exponentiellen Zerfall oder was auch immer senken. Dies kann dazu beitragen, den Verlust während des letzten Trainingsschritts zu verringern, wenn der berechnete Verlust mit dem zuvor zugeordneten Lambda-Parameter aufgehört hat, abzunehmen.

Nessuno
quelle
37

Nach meiner Erfahrung ist es normalerweise nicht erforderlich, die Lernrate mit dem Adam-Optimierer zu verringern.

Die Theorie besagt, dass Adam bereits die Optimierung der Lernrate übernimmt ( siehe Referenz ):

"Wir schlagen Adam vor, eine Methode zur effizienten stochastischen Optimierung, die nur Gradienten erster Ordnung mit geringem Speicherbedarf erfordert. Die Methode berechnet individuelle adaptive Lernraten für verschiedene Parameter aus Schätzungen des ersten und zweiten Moments der Gradienten; der Name Adam leitet sich von ab adaptive Momentschätzung. "

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

j314erre
quelle
16

Ja absolut. Aus eigener Erfahrung ist es für Adam sehr nützlich, wenn die Lernrate abnimmt. Ohne Zerfall müssen Sie eine sehr kleine Lernrate einstellen, damit der Verlust nach einer Abnahme auf einen Punkt nicht mehr auseinander geht. Hier poste ich den Code zur Verwendung von Adam mit Lernratenabfall unter Verwendung von TensorFlow. Hoffe es ist hilfreich für jemanden.

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

Adam hat eine einzelne Lernrate, aber es ist eine maximale Rate, die anpassungsfähig ist, daher denke ich nicht, dass viele Leute die Planung der Lernrate damit verwenden.

Aufgrund des adaptiven Charakters ist die Standardrate ziemlich robust, aber es kann vorkommen, dass Sie sie optimieren möchten. Was Sie tun können, ist, vorher eine optimale Ausfallrate zu finden, indem Sie mit einer sehr kleinen Rate beginnen und diese erhöhen, bis der Verlust nicht mehr abnimmt. Schauen Sie sich dann die Steigung der Verlustkurve an und wählen Sie die Lernrate aus, die mit der schnellsten Abnahme des Verlusts 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 Artikel Cyclical Learning Rates.

Bearbeiten: Die Leute haben vor relativ kurzer Zeit begonnen, in Zusammenarbeit mit Adam Richtlinien für die Lernrate in einem Zyklus zu verwenden, mit großartigen Ergebnissen.

Austin
quelle
Haben Sie eine Referenz für die von Ihnen erwähnten Richtlinien für die Lernrate in einem Zyklus?
Thomas Johnson
netter relevanter Blogbeitrag über zyklische lr mit Visualisierung der Verlustlandschaft durch einen anderen Jeremy. jeremyjordan.me/nn-learning-rate
pangyuteng