AdaDelta est un algorithme d'optimisation à taux d'apprentissage adaptatif conçu pour l'entraînement des réseaux de neurones. Il a été introduit en 2012 par Matthew D. Zeiler dans l'article « ADADELTA: An Adaptive Learning Rate Method ». La méthode s'appuie sur RMSProp en supprimant l'exigence d'un taux d'apprentissage initial spécifié par l'utilisateur, dérivant plutôt des tailles de pas par paramètre à partir d'une fenêtre de gradients et de mises à jour de paramètres passés. Cela la rend particulièrement utile dans les scénarios où le réglage d'un taux d'apprentissage global est difficile ou lorsque le paysage de perte varie considérablement entre les paramètres.
L'innovation centrale d'AdaDelta réside dans l'utilisation de deux moyennes décroissantes exponentielles : l'une pour les gradients au carré et l'autre pour les mises à jour de paramètres au carré. Contrairement aux variantes de descente de gradient stochastique qui reposent sur un taux d'apprentissage fixe ou planifié, AdaDelta calcule la taille du pas comme le rapport de la racine carrée moyenne des mises à jour récentes à la racine carrée moyenne des gradients récents. Ce rapport est sans dimension et s'adapte automatiquement à l'échelle des gradients, ce qui permet à l'algorithme de maintenir un comportement cohérent entre différentes couches d'un réseau profond sans intervention manuelle.
Contexte historique et motivation
AdaDelta a émergé pendant une période de progrès rapides dans les techniques d'optimisation du apprentissage profond. Au début des années 2010, l'entraînement de réseaux profonds était notoirement difficile en raison de problèmes comme les gradients qui disparaissent ou explosent et la sensibilité des planifications de taux d'apprentissage. Des méthodes comme l'élan et le écrêtage de gradient offraient des solutions partielles, mais elles exigeaient toujours un réglage minutieux des hyperparamètres. RMSProp, introduit par Geoffrey Hinton dans ses notes de cours vers 2012, a résolu le problème de l'échelle des gradients en normalisant les mises à jour avec une moyenne mobile des gradients au carré, mais il nécessitait toujours un taux d'apprentissage.
Zeiler, alors chez Google (bien que le travail ait été réalisé indépendamment), cherchait à créer un optimiseur robuste au choix du taux d'apprentissage. La motivation était pratique : dans les expériences à grande échelle, trouver un taux d'apprentissage approprié consommait souvent un temps et des ressources de calcul considérables. La conception d'AdaDelta visait à rendre l'optimiseur auto-réglant, réduisant la charge des praticiens et permettant des résultats plus reproductibles entre différents problèmes.
L'article a été publié sur arXiv en juin 2012 et a rapidement attiré l'attention de la communauté du apprentissage automatique. C'était l'une des premières méthodes à proposer un taux d'apprentissage entièrement adaptatif par dimension sans aucun hyperparamètre global pour la taille du pas, un concept qui influencerait plus tard d'autres optimiseurs comme Adam (qui nécessite toujours un taux d'apprentissage mais par défaut à 0,001).
Formulation mathématique
AdaDelta maintient deux variables d'état pour chaque paramètre θ : une moyenne mobile exponentielle des gradients au carré, notée E[g²]_t, et une moyenne mobile exponentielle des mises à jour de paramètres au carré, notée E[Δθ²]_t. À chaque pas de temps t, l'algorithme calcule le gradient g_t de la perte par rapport à θ.
La première moyenne est mise à jour comme suit :
E[g²]_t = ρ E[g²]_{t-1} + (1 - ρ) g_t²
où ρ est une constante de décroissance, généralement fixée à 0,95. Cela est identique à la mise à jour dans RMSProp.
La seconde moyenne suit les mises à jour au carré, mais elle est mise à jour en utilisant le changement de paramètre du pas actuel. La racine carrée moyenne (RMS) des mises à jour de paramètres est calculée comme :
RMS[Δθ]_{t-1} = sqrt(E[Δθ²]_{t-1} + ε)
où ε est une petite constante (souvent 1e-6) pour éviter la division par zéro. La mise à jour du paramètre est alors :
Δθ_t = - (RMS[Δθ]_{t-1} / RMS[g]_t) * g_t
où RMS[g]_t = sqrt(E[g²]_t + ε). Après avoir appliqué la mise à jour, l'algorithme met à jour E[Δθ²]_t en utilisant le Δθ_t nouvellement calculé :
E[Δθ²]_t = ρ E[Δθ²]_{t-1} + (1 - ρ) Δθ_t²
Cette formulation garantit que la taille du pas est le rapport de la racine carrée moyenne des mises à jour récentes à la racine carrée moyenne des gradients récents. Comme le numérateur et le dénominateur ont les mêmes unités (valeurs de paramètres au carré), la taille du pas résultante est sans unité, ce qui explique pourquoi la méthode ne nécessite pas de taux d'apprentissage. La constante de décroissance ρ contrôle la taille de la fenêtre des moyennes mobiles, avec des valeurs plus grandes donnant plus de poids à l'historique passé.
Comparaison avec RMSProp et Adam
AdaDelta est souvent décrit comme une extension de RMSProp car il utilise le même mécanisme de mise à l'échelle des gradients. La différence clé est que RMSProp divise le gradient par la racine carrée moyenne des gradients puis multiplie par un taux d'apprentissage fixe η. En revanche, AdaDelta remplace ce η fixe par la racine carrée moyenne des mises à jour de paramètres passées. Cette substitution rend la taille du pas adaptative non seulement à la magnitude du gradient mais aussi à la courbure de la fonction de perte, comme reflété dans les mises à jour réellement effectuées.
Comparé à Adam, introduit en 2015 par Diederik Kingma et Jimmy Ba, AdaDelta partage l'idée d'utiliser les moments de second ordre des gradients. Cependant, Adam intègre également un élan via une estimation du premier moment et utilise une correction de biais pour les premiers pas de temps. Adam nécessite toujours un taux d'apprentissage, bien que sa valeur par défaut de 0,001 fonctionne bien dans de nombreuses applications. AdaDelta, en revanche, n'a aucun hyperparamètre de taux d'apprentissage, ce qui peut être un avantage lorsque le taux d'apprentissage optimal est inconnu ou varie entre les tâches.
Des études empiriques ont montré qu'AdaDelta performe souvent de manière comparable à Adam sur de nombreux benchmarks standard, mais il peut être plus stable dans des situations où les magnitudes des gradients changent drastiquement au fil du temps. Cependant, le terme d'élan d'Adam peut aider à échapper aux minima locaux plus efficacement dans certains problèmes non convexes. Depuis le milieu des années 2020, Adam et ses variantes (comme AdamW) sont plus largement utilisés en pratique, en particulier pour l'entraînement des transformeurs et des grands modèles de langage, mais AdaDelta reste une référence pertinente et est encore utilisé dans certains domaines où ses propriétés sont bénéfiques.
Détails d'implémentation et variantes
En pratique, implémenter AdaDelta nécessite de stocker deux vecteurs supplémentaires par paramètre, ce qui double l'empreinte mémoire par rapport à la SGD simple. Cela est similaire aux exigences de mémoire d'Adam. La constante de décroissance ρ est généralement fixée à 0,95, et l'epsilon ε est fixé à une petite valeur comme 1e-6 pour assurer la stabilité numérique. Certaines implémentations utilisent un placement légèrement différent de l'epsilon, l'ajoutant à l'intérieur de la racine carrée plutôt qu'à l'extérieur, mais l'effet est négligeable.
Une variante courante consiste à combiner AdaDelta avec des schémas de initialisation des poids et la normalisation par lots pour stabiliser davantage l'entraînement. La méthode est également compatible avec des stratégies de augmentation des données et d'apprentissage par curriculum. Dans les contextes d'entraînement distribué, AdaDelta peut être utilisé avec des mises à jour synchrones ou asynchrones, bien que les moyennes mobiles doivent être synchronisées entre les travailleurs pour éviter la divergence.
Plusieurs frameworks d'apprentissage profond, y compris TensorFlow, PyTorch et JAX, fournissent des implémentations intégrées d'AdaDelta. Par exemple, torch.optim.Adadelta de PyTorch permet aux utilisateurs de spécifier les paramètres rho et eps, avec des valeurs par défaut de 0,9 et 1e-6 respectivement (notez que le rho par défaut dans PyTorch est 0,9, différent du 0,95 de l'article original). Cette divergence peut conduire à un comportement différent, donc les praticiens doivent être conscients des valeurs par défaut spécifiques de leur framework choisi.
Applications et cas d'utilisation
AdaDelta a été appliqué à une large gamme de tâches de apprentissage automatique, y compris la classification d'images, la reconnaissance vocale et le traitement du langage naturel. Au début des années 2010, il était utilisé pour entraîner des réseaux convolutifs profonds sur des ensembles de données comme CIFAR-10 et ImageNet, obtenant des résultats compétitifs avec moins de réglage d'hyperparamètres que la SGD avec élan. Il a également trouvé une utilisation dans les réseaux de neurones récurrents pour la modélisation de séquences, où les magnitudes des gradients peuvent varier considérablement entre les pas de temps.
Un avantage notable d'AdaDelta est sa robustesse au choix des paramètres initiaux. Parce qu'il ne nécessite pas de taux d'apprentissage, il est souvent utilisé comme optimiseur par défaut dans les pipelines d'apprentissage automatique automatisés ou lors de l'évaluation comparative de nouvelles architectures. Par exemple, des chercheurs de l'Université de Toronto et du Stanford AI Lab ont utilisé AdaDelta dans des études comparant des algorithmes d'optimisation, bien qu'il soit moins courant dans les modèles de pointe en IA générative, qui privilégient généralement Adam.
En apprentissage par renforcement, AdaDelta a été utilisé pour entraîner des politiques pour des tâches de contrôle continu, où le signal de récompense peut être bruité et l'échelle des gradients varie. Sa taille de pas adaptative aide à maintenir des mises à jour stables sans planification manuelle. Cependant, ces dernières années, des optimiseurs plus avancés comme Adam et LAMB sont devenus plus populaires dans l'entraînement à grande échelle, en partie en raison de leur compatibilité avec les techniques de réchauffement du taux d'apprentissage et d'écrêtage de gradient.
Propriétés théoriques et limitations
D'un point de vue théorique, AdaDelta peut être vu comme une méthode de descente de gradient avec préconditionnement diagonal, où le préconditionneur est mis à jour en ligne en fonction de l'historique des gradients et des mises à jour. Cela est similaire aux méthodes de gradient naturel mais avec une approximation plus simple. La méthode garantit que la taille du pas est toujours positive et bornée, en supposant que les gradients sont bornés, ce qui aide à la convergence dans les contextes convexes. Cependant, les preuves formelles de convergence pour les objectifs non convexes sont limitées, comme c'est courant pour les méthodes adaptatives.
Une limitation d'AdaDelta est qu'il peut être sensible au choix de ρ. Si ρ est trop petit, les moyennes mobiles oublient rapidement les informations passées, conduisant à des mises à jour erratiques ; si trop grand, l'algorithme peut répondre lentement aux changements dans le paysage de perte. L'absence de taux d'apprentissage signifie également que l'utilisateur a moins de contrôle sur la taille globale du pas, ce qui peut être un inconvénient lorsqu'une taille de pas spécifique est connue pour bien fonctionner.
Un autre problème est que la règle de mise à jour d'AdaDelta peut parfois conduire à des tailles de pas très petites dans les premières étapes de l'entraînement, car le E[Δθ²] initial est nul. Cela est atténué par le terme epsilon, mais cela peut ralentir la convergence initialement. Certaines implémentations initialisent E[Δθ²] à une petite valeur positive pour éviter cela, mais cela introduit un hyperparamètre supplémentaire.
Héritage et influence
L'introduction d'AdaDelta a contribué à la tendance plus large des méthodes d'optimisation adaptatives dans l'apprentissage profond. Il a démontré qu'un taux d'apprentissage pouvait être entièrement éliminé, ce qui a inspiré des recherches ultérieures sur les optimiseurs sans hyperparamètres. Bien qu'il n'ait pas atteint l'adoption généralisée d'Adam, il reste une partie importante de la boîte à outils d'optimisation et est souvent cité dans les manuels et les articles de synthèse sur les techniques de apprentissage profond.
La méthode est également notable pour son exposition claire et concise dans l'article original, qui incluait des dérivations détaillées et des expériences sur plusieurs tâches de référence. Le travail de Zeiler a influencé des développements ultérieurs comme Adam et AMSGrad, qui ont abordé certaines des lacunes théoriques des méthodes adaptatives. Depuis les années 2020, AdaDelta est toujours inclus dans les principales bibliothèques d'apprentissage profond et est occasionnellement utilisé dans la recherche lorsqu'un optimiseur sans taux d'apprentissage est souhaité, bien que son utilisation pratique ait décliné par rapport aux alternatives plus modernes.
En résumé, AdaDelta représente une étape significative dans l'évolution des algorithmes d'optimisation pour les réseaux de neurones, offrant une manière fondée d'adapter les tailles de pas sans réglage manuel. Son héritage persiste dans la conception des optimiseurs ultérieurs et dans la quête continue de procédures d'entraînement robustes et auto-réglantes.