Adam, kurz für Adaptive Moment Estimation, ist ein iterativer Optimierungsalgorithmus, der häufig zum Training von neuronalen Netzen und anderen Machine learning-Modellen verwendet wird. Er wurde von Diederik P. Kingma und Jimmy Ba in einem 2014 veröffentlichten Paper mit dem Titel „Adam: A Method for Stochastic Optimization“ eingeführt. Adam vereint die Vorteile zweier anderer Erweiterungen des stochastischen Gradientenabstiegs: adaptive Lernraten (wie bei AdaGrad) und Momentum (wie bei RMSProp). Er berechnet für jeden Parameter individuelle adaptive Lernraten aus Schätzungen der ersten und zweiten Momente der Gradienten, was ihn für Probleme mit großen Datensätzen und hochdimensionalen Parameterräumen gut geeignet macht.
Der Algorithmus ist eine Variante des stochastischen Gradientenabstiegs (SGD), der selbst ein iteratives Verfahren zur Minimierung einer Zielfunktion ist, indem der wahre Gradient durch eine Schätzung aus einer zufällig ausgewählten Teilmenge der Daten ersetzt wird. Adam ist zum Standard-Optimierer in Deep learning-Frameworks geworden und wird umfassend beim Training von Transformer (architecture)-Modellen eingesetzt, einschließlich großer Sprachmodelle.
Algorithmus
Adam verwaltet zwei gleitende Durchschnitte pro Parameter: das erste Moment (Mittelwert) der Gradienten und das zweite Moment (nicht zentrierte Varianz) der Gradienten. Bei jeder Iteration \(t\), gegeben den Gradienten \(g_t\) der Verlustfunktion bezüglich der Parameter, werden die Aktualisierungen wie folgt berechnet:
- Aktualisierung der verzerrten Schätzung des ersten Moments: \(m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t\)
- Aktualisierung der verzerrten Schätzung des zweiten Moments: \(v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2\)
- Berechnung der verzerrungskorrigierten Schätzungen: \(\hat{m}_t = m_t / (1 - \beta_1^t)\) und \(\hat{v}_t = v_t / (1 - \beta_2^t)\)
- Aktualisierung der Parameter: \(\theta_t = \theta_{t-1} - \alpha \hat{m}_t / (\sqrt{\hat{v}_t} + \epsilon)\)
Hierbei ist \(\alpha\) die Lernrate (Schrittweite), \(\beta_1\) und \(\beta_2\) sind exponentielle Abklingraten für die Momentschätzungen (typischerweise 0,9 und 0,999), und \(\epsilon\) ist eine kleine Konstante (z. B. \(10^{-8}\)), um eine Division durch Null zu verhindern. Der Schritt der Verzerrungskorrektur ist in den frühen Iterationen entscheidend, wenn die Momentschätzungen auf Null initialisiert sind, da er die Verzerrung in Richtung Null ausgleicht.
Verzerrungskorrektur
Da sowohl \(m_t\) als auch \(v_t\) als Nullvektoren initialisiert werden, erzeugen die ersten Iterationen Schätzungen, die in Richtung Null verzerrt sind. Adam behebt dies, indem die Momentschätzungen durch \((1 - \beta_1^t)\) bzw. \((1 - \beta_2^t)\) dividiert werden. Diese Korrektur wird mit wachsendem \(t\) weniger bedeutsam, da sich die Nenner 1 annähern. Die Verzerrungskorrektur ist ein Schlüsselmerkmal, das Adam von früheren adaptiven Methoden unterscheidet und zu seinem stabilen Konvergenzverhalten beiträgt.
Hyperparameter
Adam führt über die Lernrate hinaus mehrere Hyperparameter ein:
- Lernrate (\(\alpha\)): Steuert die Schrittweite. Üblicher Standardwert ist 0,001.
- \(\beta_1\): Exponentielle Abklingrate für die Schätzung des ersten Moments. Standardwert 0,9.
- \(\beta_2\): Exponentielle Abklingrate für die Schätzung des zweiten Moments. Standardwert 0,999.
- \(\epsilon\): Kleine Konstante für numerische Stabilität. Standardwert \(10^{-8}\).
In der Praxis funktionieren die Standardwerte für viele Aufgaben gut, aber das Abstimmen der Lernrate ist oft notwendig. Einige Implementierungen unterstützen auch Lernratenpläne, wie Warmup und Abklingen, die beim Training von Transformer (architecture)-Modellen üblich sind.
Varianten und Erweiterungen
Es wurden mehrere Varianten von Adam vorgeschlagen, um spezifische Einschränkungen zu adressieren:
- AdamW: Entkoppelt den Gewichtsabfall von der Gradientenaktualisierung und wendet ihn direkt auf die Parameter an. Dies verbessert die Generalisierung und ist heute in vielen Deep learning-Bibliotheken Standard.
- Nadam: Kombiniert Adam mit Nesterov-Momentum, was die Konvergenz beschleunigen kann.
- AMSGrad: Modifiziert die Schätzung des zweiten Moments, um sicherzustellen, dass die Lernrate nicht ansteigt, und adressiert Konvergenzprobleme in bestimmten Einstellungen.
- Adamax: Verwendet die Unendlich-Norm für das zweite Moment, was es robuster gegenüber großen Gradienten macht.
- RAdam: Korrigiert die Varianz der adaptiven Lernrate und reduziert die Notwendigkeit eines Warmups.
Diese Varianten werden in spezifischen Kontexten verwendet, aber das ursprüngliche Adam bleibt weit verbreitet.
Anwendungen
Adam wird in vielen Bereichen der Artificial intelligence und des Machine learning eingesetzt. Es ist der Standard-Optimierer in vielen Frameworks, einschließlich TensorFlow und PyTorch. Es wurde zum Training von neuronalen Netzen für Bildklassifikation, natürliche Sprachverarbeitung, Spracherkennung und bestärkendes Lernen angewendet. Insbesondere ist Adam der Optimierer der Wahl für das Training von Transformer (architecture)-basierten Modellen, wie großen Sprachmodellen, die von Organisationen wie OpenAI, Anthropic und Google DeepMind entwickelt wurden.
Adams Beliebtheit beruht auf seiner Robustheit gegenüber Hyperparametereinstellungen und seiner Fähigkeit, mit spärlichen Gradienten und verrauschten Daten umzugehen. Er ist auch speichereffizient, da nur zwei zusätzliche Variablen pro Parameter benötigt werden.
Theoretische Eigenschaften
Adam konvergiert nicht immer zu einem globalen Minimum, insbesondere bei nicht-konvexen Zielfunktionen, aber es wurde gezeigt, dass er unter bestimmten Bedingungen zu einem kritischen Punkt konvergiert. Die Konvergenzanalyse von Adam ist komplexer als die von einfachem SGD aufgrund der adaptiven Lernraten. Einige Studien haben gezeigt, dass Adam in bestimmten konvexen Einstellungen nicht konvergieren kann, was die Entwicklung von AMSGrad und anderen Korrekturen motivierte.
Empirisch erreicht Adam oft eine schnellere Konvergenz als SGD in den frühen Trainingsphasen, kann aber bei einigen Aufgaben etwas schlechter generalisieren als SGD mit Momentum. Dies hat zu hybriden Ansätzen geführt, wie dem Wechsel von Adam zu SGD während des Trainings.
Vergleich mit stochastischem Gradientenabstieg
Der stochastische Gradientenabstieg (SGD) aktualisiert Parameter unter Verwendung einer einzelnen Stichprobe oder eines Mini-Batches mit einer festen oder abklingenden Lernrate. Adam passt die Lernrate pro Parameter basierend auf der Historie der Gradienten an. Dies macht Adam weniger empfindlich gegenüber der Wahl der Lernrate und erfordert oft weniger Abstimmung. Allerdings kann SGD mit Momentum manchmal eine bessere Endleistung erreichen, insbesondere mit sorgfältigen Lernratenplänen.
Adam unterscheidet sich auch von SGD darin, dass er den Gradienten durch die Quadratwurzel des zweiten Moments normalisiert, was zu stabileren Aktualisierungen bei großen oder kleinen Gradienten führen kann.
Praktische Überlegungen
Bei der Verwendung von Adam ist es üblich, die Lernrate auf 0,001 und die Betas auf ihre Standardwerte zu setzen. Für groß angelegtes Training, wie bei großen Sprachmodellen, werden oft Lernratenpläne mit Warmup eingesetzt. Gewichtsabfall, wie in AdamW, wird zur Regularisierung empfohlen.
Der Speicherverbrauch ist eine Überlegung: Adam speichert zwei zusätzliche Werte pro Parameter, was bei Modellen mit Milliarden von Parametern erheblich sein kann. Dies hat Forschung zu speichereffizienten Optimierern motiviert, wie Adafactor, der das zweite Moment mit Faktoren niedrigeren Rangs approximiert.
Siehe auch
- stochastic-gradient-descent
- Deep learning
- Neural network
- Transformer (architecture)
Referenzen
- Kingma, D. P., & Ba, J. (2014). Adam: A Method for Stochastic Optimization. arXiv:1412.6980.
- Loshchilov, I., & Hutter, F. (2017). Decoupled Weight Decay Regularization. arXiv:1711.05101.
- Reddi, S. J., Kale, S., & Kumar, S. (2018). On the Convergence of Adam and Beyond. ICLR.