Das Adam-Paper sagt: "... viele objektive Funktionen setzen sich aus einer Summe von Teilfunktionen zusammen, die bei verschiedenen Teilproben von Daten ausgewertet werden. In diesem Fall kann die Optimierung effizienter gemacht werden, indem Gradientenschritte für einzelne Teilfunktionen vorgenommen werden ..." bedeutet, dass die Zielfunktion eine Summe von Fehlern über Trainingsbeispielen ist und das Training an einzelnen Beispielen oder Minibatches durchgeführt werden kann. Dies ist dasselbe wie beim stochastischen Gradientenabstieg (SGD), der bei großen Problemen effizienter ist als beim Batch-Training, da Parameteraktualisierungen häufiger sind.
Adam arbeitet mit ein paar Tricks.
Einer dieser Tricks ist der Schwung, der zu einer schnelleren Konvergenz führen kann. Stellen Sie sich eine objektive Funktion vor, die wie ein langer, schmaler Canyon geformt ist, der allmählich auf ein Minimum abfällt. Nehmen wir an, wir möchten diese Funktion mit Gradientenabstieg minimieren. Wenn wir irgendwann an der Wand des Canyons beginnen, zeigt das negative Gefälle in Richtung des steilsten Gefälles, dh hauptsächlich in Richtung des Canyon-Bodens. Dies liegt daran, dass die Wände des Canyons viel steiler sind als die allmähliche Neigung des Canyons zum Minimum. Wenn die Lernrate (dh die Schrittgröße) gering ist, können wir zum Boden des Canyons hinuntersteigen und dann dem Minimum folgen. Aber der Fortschritt würde langsam sein. Wir könnten die Lernrate erhöhen, aber dies würde die Richtung der Schritte nicht ändern. In diesem Fall würden wir den Boden der Schlucht überschießen und an der gegenüberliegenden Wand landen. Wir würden dann dieses Muster wiederholen und von Wand zu Wand oszillieren, während wir langsam in Richtung Minimum voranschreiten. Momentum kann in dieser Situation helfen.
Momentum bedeutet einfach, dass ein Teil des vorherigen Updates zum aktuellen Update hinzugefügt wird, so dass sich wiederholende Updates in eine bestimmte Richtung ergeben. Wir bauen Schwung auf und bewegen uns immer schneller in diese Richtung. Im Fall des Canyons würden wir eine Dynamik in Richtung des Minimums aufbauen, da alle Aktualisierungen eine Komponente in diese Richtung haben. Im Gegensatz dazu erfordert das Hin- und Herbewegen über die Wände des Canyons eine ständige Richtungsumkehr, sodass der Impuls dazu beitragen würde, die Schwingungen in diesen Richtungen zu dämpfen.
Ein weiterer Trick, den Adam verwendet, ist die adaptive Auswahl einer separaten Lernrate für jeden Parameter. Parameter, die normalerweise kleinere oder weniger häufige Aktualisierungen erhalten, erhalten größere Aktualisierungen mit Adam (das Gegenteil ist auch der Fall). Dies beschleunigt das Lernen in Fällen, in denen die entsprechenden Lernraten je nach Parameter variieren. Beispielsweise können in tiefen Netzwerken die Gradienten in frühen Schichten klein werden, und es ist sinnvoll, die Lernraten für die entsprechenden Parameter zu erhöhen. Ein weiterer Vorteil dieses Ansatzes besteht darin, dass die manuelle Abstimmung an Bedeutung verliert, da die Lernraten automatisch angepasst werden. Standard-SGD erfordert eine sorgfältige Abstimmung (und möglicherweise Online-Anpassung) der Lernraten, dies gilt jedoch weniger für Adam und verwandte Methoden. Es ist immer noch notwendig, Hyperparameter auszuwählen,
Verwandte Methoden :
Momentum wird häufig mit Standard-SGD verwendet. Eine verbesserte Version heißt Nesterov-Impuls oder Nesterov-beschleunigter Gradient. Andere Methoden, die automatisch eingestellte Lernraten für jeden Parameter verwenden, sind: Adagrad, RMSprop und Adadelta. RMSprop und Adadelta lösen ein Problem mit Adagrad, das dazu führen kann, dass das Lernen gestoppt wird. Adam ähnelt RMSprop mit Momentum. Nadam modifiziert Adam, um den Nesterov-Impuls anstelle des klassischen Impulses zu verwenden.
Referenzen :
Kingma und Ba (2014) . Adam: Eine Methode zur stochastischen Optimierung.
Goodfellow et al. (2016) . Tiefes Lernen, Kapitel 8.
Folien von Geoff Hinton Kurs
Dozat (2016) . Einbeziehung von Nesterov Momentum in Adam.