RAdam, abréviation de Rectified Adam, est un algorithme d'optimisation pour l'entraînement des réseaux de neurones. Il a été introduit en 2019 par Liyuan Liu, Haoming Jiang, Pengcheng He, Weizhu Chen, Xiaodong Liu, Jianfeng Gao et Jiawei Han dans l'article « On the Variance of the Adaptive Learning Rate and Beyond ». RAdam aborde un problème connu de l'optimiseur Adam, où le taux d'apprentissage adaptatif peut avoir une variance élevée au début de l'entraînement, entraînant une convergence médiocre ou des performances finales sous-optimales. En rectifiant cette variance, RAdam vise à combiner les avantages de la convergence rapide d'Adam avec la stabilité de la descente de gradient stochastique (SGD).
RAdam est largement utilisé en apprentissage profond, notamment pour l'entraînement des transformeurs et des grands modèles de langage, où il a montré des performances compétitives avec AdamW et d'autres variantes. Il est implémenté dans les principaux frameworks d'apprentissage profond, y compris PyTorch et TensorFlow, et est un choix par défaut dans certains pipelines d'entraînement.
Contexte : l'optimiseur Adam et ses limites
L'optimiseur Adam, introduit par Diederik Kingma et Jimmy Ba en 2014, est une méthode populaire de taux d'apprentissage adaptatif qui calcule des taux d'apprentissage individuels pour chaque paramètre en fonction des estimations des premier et deuxième moments des gradients. Adam a été très efficace pour entraîner des réseaux de neurones profonds, mais il présente des problèmes connus. L'un de ces problèmes est que le taux d'apprentissage adaptatif peut être trop élevé au début de l'entraînement, surtout lorsque l'estimation du deuxième moment est faible. Cela peut entraîner des mises à jour importantes qui poussent le modèle à converger vers des minima abrupts, qui généralisent souvent mal. De plus, Adam peut nécessiter un réglage minutieux du taux d'apprentissage et d'autres hyperparamètres.
Plusieurs variantes ont été proposées pour résoudre ces problèmes, comme AdamW, qui découple la décroissance du poids, et AMSGrad, qui utilise un maximum des gradients carrés passés. Cependant, celles-ci ne traitent pas directement la variance du taux d'apprentissage adaptatif.
Le problème de variance dans Adam
Dans Adam, le taux d'apprentissage adaptatif est calculé comme le rapport entre l'estimation du premier moment et la racine carrée de l'estimation du deuxième moment. Au début de l'entraînement, l'estimation du deuxième moment est initialisée à zéro et est mise à jour avec une correction de biais. Cependant, la correction de biais peut encore laisser l'estimation avec une variance élevée, surtout lorsque le taux de décroissance (beta2) est proche de 1. Cette variance provoque des fluctuations importantes du taux d'apprentissage, ce qui peut entraîner un entraînement instable et une convergence médiocre.
L'idée clé de RAdam est de quantifier cette variance et d'appliquer un terme de rectification qui réduit le taux d'apprentissage lorsque la variance est élevée, puis l'augmente progressivement à mesure que la variance diminue. Cela est analogue à l'activation par unité linéaire rectifiée (ReLU), qui limite les valeurs négatives à zéro.
Comment fonctionne RAdam
RAdam calcule le taux d'apprentissage adaptatif de manière similaire à Adam, mais avec un terme de rectification supplémentaire. L'algorithme maintient le premier moment (moyenne) et le deuxième moment (variance non centrée) des gradients, notés respectivement m_t et v_t. Il suit également le pas de temps t et le taux de décroissance beta2.
À chaque étape, RAdam calcule les estimations corrigées du biais : m_t_hat = m_t / (1 - beta1^t) et v_t_hat = v_t / (1 - beta2^t). Il calcule ensuite un paramètre rho_t = (1 - beta2^t) (2 / (1 - beta2) - 1) - t, qui mesure la longueur effective de la moyenne mobile. Si rho_t est supérieur à un seuil (généralement 4), RAdam utilise le terme de rectification : le taux d'apprentissage est mis à l'échelle par sqrt((rho_t - 4) (rho_t - 2) rho_t / ((rho_t - 4) (rho_t - 2) rho_t - 4 (rho_t - 2) * (rho_t - 2))). Si rho_t est inférieur ou égal à 4, la mise à jour est simplifiée pour utiliser directement le premier moment, similaire à SGD avec momentum.
Cette rectification garantit que le taux d'apprentissage n'est pas trop élevé au début, empêchant le modèle de prendre des pas trop importants qui pourraient conduire à des minima médiocres.
Avantages de RAdam
RAdam offre plusieurs avantages par rapport à Adam et à d'autres optimiseurs. Premièrement, il réduit le besoin d'un échauffement du taux d'apprentissage, souvent requis pour Adam afin d'éviter une instabilité précoce. Cela simplifie le réglage des hyperparamètres et peut économiser du temps d'entraînement. Deuxièmement, RAdam a montré une amélioration des performances de généralisation sur diverses tâches, y compris la classification d'images et la modélisation du langage, par rapport à Adam. Troisièmement, il est efficace en calcul, n'ajoutant qu'un faible surcoût à la mise à jour d'Adam.
Des études empiriques ont montré que RAdam fonctionne bien sur une gamme de modèles, y compris les réseaux de neurones convolutifs et les transformeurs. Il est particulièrement utile lors de l'entraînement avec de petites tailles de lots ou lorsque les données sont bruitées, car la variance des gradients est plus élevée dans ces scénarios.
RAdam en pratique
RAdam est implémenté dans les bibliothèques d'apprentissage profond populaires. Dans PyTorch, il est disponible sous la forme torch.optim.RAdam. Dans TensorFlow, il est disponible via l'API Keras sous la forme tf.keras.optimizers.RAdam. Il peut être utilisé comme remplacement direct d'Adam, avec les mêmes hyperparamètres (taux d'apprentissage, beta1, beta2, epsilon). Les valeurs par défaut sont généralement learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8.
En pratique, RAdam a été utilisé pour entraîner des modèles à grande échelle, y compris certains grands modèles de langage et transformeurs. Par exemple, il a été adopté dans certains pipelines d'entraînement pour des modèles comme GPT et les variantes de BERT, où il a montré des performances comparables ou supérieures à AdamW. Cependant, AdamW reste un choix populaire en raison de sa décroissance du poids découplée, qui peut être bénéfique pour la régularisation. Certains praticiens combinent RAdam avec une décroissance du poids ou l'utilisent avec un calendrier de taux d'apprentissage en cosinus.
Comparaison avec d'autres optimiseurs
RAdam est souvent comparé à Adam, AdamW et SGD avec momentum. Par rapport à Adam, RAdam offre un entraînement plus stable sans nécessiter d'échauffement, et conduit souvent à une meilleure généralisation. Par rapport à AdamW, RAdam ne découple pas la décroissance du poids, mais il peut être combiné avec une régularisation L2. Dans certains benchmarks, RAdam surpasse AdamW sur des tâches comme la classification d'images, tandis que dans d'autres, AdamW est supérieur. Le choix dépend du problème spécifique et des hyperparamètres.
RAdam est également lié à d'autres techniques de réduction de variance, comme le clipping des gradients, qui peut être utilisé en conjonction avec RAdam pour stabiliser davantage l'entraînement. De plus, RAdam peut être utilisé avec des calendriers de taux d'apprentissage comme l'annealing en cosinus ou la décroissance par étapes.
Extensions et variantes
Plusieurs extensions de RAdam ont été proposées. Par exemple, RAdam a été combiné avec lookahead, une technique qui maintient un ensemble de poids lents, pour créer l'optimiseur Ranger, qui a montré de fortes performances sur diverses tâches. Une autre variante est AdaBelief, qui modifie le deuxième moment pour utiliser l'écart par rapport à la moyenne, mais RAdam reste une référence pour la comparaison.
La recherche a également exploré les propriétés théoriques de RAdam, fournissant des garanties de convergence sous certaines conditions. Le terme de rectification est dérivé de l'analyse de la variance du taux d'apprentissage adaptatif, et il a été montré qu'il réduit l'écart de généralisation.
Conclusion
RAdam est un optimiseur robuste qui traite le problème de variance dans Adam, conduisant à un entraînement plus stable et à une meilleure généralisation. Il est facile à utiliser, largement disponible et a prouvé son efficacité dans de nombreuses applications d'apprentissage profond. Bien qu'il ne soit pas toujours le meilleur choix, c'est un outil précieux dans la boîte à outils des optimiseurs, en particulier pour l'entraînement de grands modèles où la stabilité est cruciale.
Pour une lecture complémentaire, voir Adam, variantes de SGD et les techniques d'optimisation en apprentissage profond.