Estimation adaptative du moment, communément appelée Adam, est un algorithme d'optimisation utilisé pour entraîner des modèles de apprentissage automatique. Il est conçu pour minimiser une fonction objectif, généralement une fonction de perte, en mettant à jour de manière itérative les paramètres du modèle. Adam combine les avantages de deux autres extensions de la descente de gradient stochastique (SGD) : l'élan (momentum), qui accélère la convergence en accumulant les gradients passés, et RMSprop, qui adapte le taux d'apprentissage par paramètre en fonction de l'ampleur des gradients récents. Ce mécanisme double permet à Adam de gérer efficacement les gradients creux et les données bruitées, ce qui en fait un choix populaire pour l'entraînement de réseaux de neurones profonds et de réseaux neuronaux.
Adam a été introduit dans un article de 2014 par Diederik P. Kingma et Jimmy Ba, intitulé « Adam: A Method for Stochastic Optimization ». Depuis, l'algorithme est devenu un optimiseur par défaut pour de nombreuses tâches de apprentissage automatique, particulièrement pour l'entraînement de grands modèles de langue et d'autres architectures complexes basées sur transformers. Sa popularité provient de son efficacité et de ses besoins en mémoire relativement faibles par rapport aux méthodes d'adaptation de matrices complètes.
Aperçu de l'algorithme
Adam maintient deux moyennes mobiles pour chaque paramètre : le premier moment (moyenne) et le second moment (variance non centrée) des gradients. Ces moyennes sont mises à jour à chaque itération, et la mise à jour des paramètres est calculée à l'aide d'estimations corrigées du biais. La méthode combine les avantages d'AdaGrad, qui fonctionne bien avec les gradients creux, et de RMSprop, qui gère les objectifs non stationnaires. L'algorithme utilise deux hyperparamètres, généralement notés beta1 et beta2, qui contrôlent les taux de décroissance exponentielle des estimations du moment. En pratique, des valeurs par défaut de 0,9 pour beta1 et 0,999 pour beta2, avec un petit epsilon pour la stabilité numérique, sont couramment utilisées.
La règle de mise à jour d'Adam implique le calcul des estimations biaisées des premier et second moments, puis la correction de leur biais d'initialisation avant d'effectuer la mise à jour des paramètres. La taille du pas pour chaque paramètre est mise à l'échelle par l'inverse de la racine carrée de l'estimation du second moment, ce qui permet aux paramètres avec de grands gradients de prendre des pas plus petits et à ceux avec de petits gradients de prendre des pas plus grands. Ce taux d'apprentissage adaptatif par paramètre conduit souvent à une convergence plus rapide et plus stable par rapport à la descente de gradient stochastique standard.
Relation avec la descente de gradient stochastique
Adam est une variante de la descente de gradient stochastique (SGD), une méthode d'optimisation fondamentale en apprentissage automatique. SGD met à jour les paramètres du modèle en les déplaçant dans la direction opposée au gradient de la fonction objectif, calculé sur un petit lot de données d'entraînement. Bien qu'efficace, SGD peut être sensible au choix du taux d'apprentissage et peut rencontrer des difficultés avec des gradients creux ou bruités. Adam répond à ces problèmes en maintenant deux estimations supplémentaires : le premier moment (la moyenne) et le second moment (la variance non centrée) des gradients. Ces estimations sont utilisées pour mettre à l'échelle les mises à jour des paramètres, fournissant des taux d'apprentissage adaptatifs par paramètre.
Aperçu de l'algorithme
Adam calcule des taux d'apprentissage adaptatifs pour chaque paramètre à partir des estimations des premier et second moments des gradients. À chaque itération, il maintient deux moyennes mobiles à décroissance exponentielle : une pour le gradient (premier moment) et une pour le gradient au carré (second moment). Ces moyennes sont souvent appelées m et v. Pour corriger un biais vers zéro dans les étapes initiales, l'algorithme inclut des termes de correction de biais.
Une étape de mise à jour typique se déroule comme suit : calculer le gradient de la perte par rapport aux paramètres, mettre à jour les estimations biaisées des premier et second moments, corriger le biais, puis mettre à jour les paramètres à l'aide de ces moments corrigés. L'algorithme possède trois hyperparamètres principaux : le taux d'apprentissage et deux taux de décroissance pour les estimations des moments (communément notés beta1 et beta2). L'article qui a introduit Adam recommandait des valeurs par défaut de 0,9 pour beta1, 0,999 pour beta2, et un petit epsilon pour éviter la division par zéro.
Applications en apprentissage profond
Adam est devenu un optimiseur standard dans le apprentissage profond en raison de sa robustesse et de sa facilité d'utilisation. Il est particulièrement efficace pour entraîner des modèles transformers, y compris ceux utilisés dans les grands modèles de langue et les systèmes de IA générative. De nombreux frameworks et plateformes, tels que TensorFlow et PyTorch, incluent des implémentations d'Adam, ce qui en fait un choix par défaut pour de nombreux praticiens. Sa capacité à gérer les gradients creux et sa convergence relativement rapide ont contribué à son adoption généralisée.
Variantes et extensions
Plusieurs variantes d'Adam ont été développées pour répondre à des limitations spécifiques. Par exemple, AdamW sépare la décroissance du poids des étapes d'optimisation, ce qui s'est avéré améliorer la convergence dans certaines tâches de apprentissage profond. AMSGrad modifie l'estimation du second moment pour garantir que le taux d'apprentissage n'augmente pas, ce qui peut se produire dans certains contextes. Ces variantes conservent le mécanisme de moment adaptatif central tout en ajustant des comportements spécifiques.
Applications et impact
Adam est largement utilisé pour entraîner des modèles basés sur transformers, y compris ceux alimentant les systèmes modernes de IA générative et de grands modèles de langue. Sa robustesse face au choix des hyperparamètres et sa capacité à gérer des problèmes à grande échelle en ont fait un choix par défaut dans de nombreux cadres de apprentissage profond. Son efficacité est particulièrement précieuse lors de l'entraînement sur du matériel tel que les GPU NVIDIA ou les puces AWS Trainium, où les ressources informatiques sont importantes mais finies. Des groupes de recherche comme le laboratoire d'IA de Stanford, le laboratoire d'IA de Berkeley et l'Université de Toronto ont contribué à ses raffinements pratiques et théoriques.