Le recuit cosinusoïdal est un programme de taux d'apprentissage utilisé lors de l'entraînement de modèles d'apprentissage automatique, en particulier les modèles d'apprentissage profond. Il ajuste le taux d'apprentissage au cours de l'optimisation en suivant une courbe cosinusoïdale, partant d'une valeur initiale élevée et diminuant progressivement jusqu'à un minimum sur un nombre donné d'époques ou d'itérations. Cette approche vise à équilibrer le compromis entre la vitesse de convergence et la stabilité, aidant les modèles à atteindre de meilleurs minima de la fonction de perte. Ce programme est largement adopté dans les pipelines d'entraînement modernes pour les architectures de réseau de neurones, y compris les modèles basés sur les transformeurs tels que les grands modèles de langage, en raison de sa simplicité et de son efficacité.
En optimisation, le taux d'apprentissage détermine la taille du pas effectué vers un minimum de la fonction de perte. Un taux d'apprentissage constant peut entraîner une convergence lente ou des oscillations, car un taux trop élevé peut dépasser les minima et un taux trop faible peut stagner. Le recuit cosinusoïdal répond à cela en offrant une diminution progressive qui réduit le taux d'apprentissage de manière fluide, permettant des ajustements plus fins à mesure que l'entraînement progresse. Contrairement aux programmes par paliers ou exponentiels, qui réduisent le taux de manière abrupte, le recuit cosinusoïdal propose une décroissance continue et différentiable, ce qui conduit souvent à une dynamique d'entraînement plus stable.
Formulation mathématique
Le programme de recuit cosinusoïdal est défini par la formule :
\[
\eta_t = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min}) \left(1 + \cos\left(\frac{t \pi}{T}\right)\right)
\]
où \( \eta_t \) est le taux d'apprentissage à l'itération ou à l'époque \( t \), \( \eta_{max} \) est le taux d'apprentissage initial, \( \eta_{min} \) est le taux d'apprentissage minimal (souvent fixé à 0), et \( T \) est le nombre total de pas d'entraînement dans un cycle. La fonction cosinusoïdale décroît de 1 à -1 lorsque \( t \) passe de 0 à \( T \), ce qui fait chuter le taux d'apprentissage de \( \eta_{max} \) à \( \eta_{min} \) de manière lisse et incurvée. Cette formule peut être adaptée pour des redémarrages chauds, où le programme est réinitialisé périodiquement, comme décrit ci-dessous.
Le programme est généralement appliqué par époque ou par lot, selon l'implémentation. Par exemple, dans des frameworks comme PyTorch et TensorFlow, des fonctions intégrées telles que torch.optim.lr_scheduler.CosineAnnealingLR implémentent ce programme, permettant aux praticiens de spécifier le taux d'apprentissage initial et le nombre d'époques. La décroissance lisse aide à éviter les changements brusques qui pourraient déstabiliser l'entraînement.
Contexte historique
Le recuit cosinusoïdal a été introduit dans le cadre de la recherche en apprentissage profond comme une alternative aux programmes traditionnels tels que la décroissance temporelle, par paliers ou exponentielle. Ces méthodes plus anciennes, bien qu'efficaces, nécessitent souvent un réglage manuel des paramètres de décroissance et peuvent être sensibles au choix des hyperparamètres. Le programme cosinusoïdal a été popularisé par Ilya Loshchilov et Frank Hutter dans leur article de 2017 intitulé « SGDR : Stochastic Gradient Descent with Warm Restarts », qui proposait d'utiliser le recuit cosinusoïdal avec des redémarrages périodiques pour améliorer la convergence. Ce travail s'appuie sur des recherches antérieures sur les programmes de taux d'apprentissage, comme la formule de décroissance temporelle \( \eta_{n+1} = \eta_0 / (1 + dn) \), où \( \eta_0 \) est le taux initial et \( d \) un paramètre de décroissance.
L'idée de faire varier le taux d'apprentissage pendant l'entraînement trouve ses racines dans la littérature sur le contrôle adaptatif, où le taux d'apprentissage est parfois appelé gain. Au fil des années, les chercheurs ont exploré de nombreux programmes, y compris la décroissance exponentielle \( \eta_n = \eta_0 e^{-dn} \) et la décroissance par paliers, mais le recuit cosinusoïdal a gagné en popularité pour sa capacité à atteindre une convergence plus rapide et une meilleure généralisation dans de nombreuses tâches.
Relations avec d'autres programmes
Le recuit cosinusoïdal se distingue des programmes courants de plusieurs manières. Les programmes temporels réduisent le taux d'apprentissage de manière inversement proportionnelle au nombre d'itérations, ce qui peut conduire à des taux très faibles en fin d'entraînement. Les programmes par paliers diminuent le taux par un facteur à des intervalles prédéfinis, ce qui peut provoquer des changements soudains. Les programmes exponentiels décroissent de manière continue mais souvent trop rapidement. En revanche, le recuit cosinusoïdal offre une diminution progressive qui n'est ni trop rapide ni trop lente, et il permet naturellement une phase d'échauffement si le taux d'apprentissage initial est défini de manière appropriée.
Un autre élément clé en optimisation, l'élan (momentum), est souvent utilisé en conjonction avec le recuit cosinusoïdal. L'élan aide à accélérer l'apprentissage lorsque les gradients pointent dans une direction cohérente et à éviter les minima locaux, un peu comme une balle qui roule par-dessus de petites bosses. La combinaison de l'élan et d'un taux d'apprentissage à décroissance cosinusoïdale est courante dans l'entraînement des modèles basés sur les transformeurs, où elle contribue à stabiliser l'optimisation de grands espaces de paramètres.
Redémarrages chauds et variantes
Une variante notable du recuit cosinusoïdal est la technique des redémarrages chauds, où le programme est réinitialisé après un cycle, permettant au taux d'apprentissage de remonter brusquement à une valeur plus élevée. Cette méthode est implémentée dans l'approche SGDR, où le taux d'apprentissage suit une courbe cosinusoïdale sur un cycle de longueur \( T \), puis redémarre avec un nouveau cycle, souvent de durée plus longue. Cette approche peut aider le modèle à échapper aux minima locaux et à explorer différentes régions du paysage de la fonction de perte, ce qui améliore souvent les performances. La variante avec redémarrages chauds est particulièrement utile dans les tâches d'apprentissage profond où la surface de perte est non convexe.
D'autres variantes incluent le recuit cosinusoïdal avec une phase d'échauffement linéaire, où le taux d'apprentissage augmente d'une valeur faible jusqu'au maximum initial sur les premières époques, puis décroît de manière cosinusoïdale. Cette approche est souvent utilisée lors de l'entraînement des grands modèles de langage pour éviter l'instabilité au début de l'entraînement.
Applications dans l'IA moderne
Le recuit cosinusoïdal est largement utilisé dans l'entraînement de modèles de pointe dans divers domaines. Dans la recherche en intelligence artificielle, il est souvent le choix par défaut pour de nombreux frameworks d'apprentissage profond. Par exemple, des organisations comme OpenAI et Google DeepMind ont employé des programmes cosinusoïdaux pour entraîner de grands modèles, y compris les architectures basées sur les transformeurs. Le programme est également intégré dans des bibliothèques populaires telles que PyTorch et TensorFlow, ce qui le rend accessible aux praticiens.
En vision par ordinateur, le recuit cosinusoïdal a démontré son efficacité pour améliorer la précision sur des ensembles de données de référence comme CIFAR-10 et ImageNet. En traitement du langage naturel, il est utilisé pour entraîner des modèles comme BERT et GPT, où il aide à gérer le taux d'apprentissage sur des millions de paramètres. La technique est également appliquée aux modèles d'IA générative, y compris les modèles de diffusion et les GAN, pour stabiliser l'entraînement.
Avantages et limites
Le principal avantage du recuit cosinusoïdal est sa décroissance lisse, qui réduit le risque d'oscillations et aide le modèle à converger vers un bon minimum. Il nécessite également moins d'hyperparamètres que certains autres programmes, car les paramètres principaux sont le taux d'apprentissage initial et minimal ainsi que la longueur du cycle. Cependant, le programme n'est pas adaptatif ; il ne réagit pas au paysage de la fonction de perte ni aux informations sur les gradients. En revanche, des méthodes adaptatives comme Adam ajustent le taux d'apprentissage par paramètre en fonction des statistiques des gradients, ce qui peut être plus robuste dans certaines situations. Le recuit cosinusoïdal est souvent utilisé en combinaison avec de tels optimiseurs, le programme étant appliqué au taux d'apprentissage global.
Une limite est que le nombre total d'époques doit être connu à l'avance pour définir la longueur du cycle \( T \). Si l'entraînement est prolongé, le programme peut nécessiter un redémarrage ou un ajustement. De plus, le choix du taux d'apprentissage initial reste crucial, car un taux trop élevé peut provoquer une divergence, même avec une décroissance cosinusoïdale.
Mise en œuvre pratique
En pratique, l'implémentation du recuit cosinusoïdal est simple. Dans PyTorch, on peut utiliser torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0), où T_max est le nombre d'époques. Dans TensorFlow, la classe tf.keras.optimizers.schedules.CosineDecay offre une fonctionnalité similaire. Ces implémentations mettent à jour automatiquement le taux d'apprentissage à chaque époque ou lot, permettant aux chercheurs de se concentrer sur l'architecture du modèle et les données.
Par exemple, une boucle d'entraînement typique pourrait définir un taux d'apprentissage initial de 0,1 et le réduire à 0 sur 100 époques en utilisant le recuit cosinusoïdal. Ce programme est souvent combiné avec des optimiseurs à élan comme SGD avec momentum, ce qui est courant dans les tâches de vision par ordinateur. Pour les grands modèles de langage, une phase d'échauffement est souvent ajoutée, où le taux d'apprentissage augmente linéairement pendant les premiers milliers de pas, puis suit une décroissance cosinusoïdale.
Voir aussi
- taux d'apprentissage
- descente de gradient stochastique
- algorithmes d'optimisation
- apprentissage profond
Références
- Loshchilov, Ilya ; Hutter, Frank (2017). « SGDR : Stochastic Gradient Descent with Warm Restarts. » International Conference on Learning Representations.
- Géron, Aurélien (2017). « Gradient Descent. » Hands-On Machine Learning with Scikit-Learn and TensorFlow. O'Reilly. pp. 113–124. ISBN 978-1-4919-6229-9.
- Plagianakos, V. P. ; Magoulas, G. D. ; Vrahatis, M. N. (2001). « Learning Rate Adaptation in Stochastic Gradient Descent. » Advances in Convex Analysis and Global Optimization. Kluwer. pp. 433–444. ISBN 0-7923-6942-4.