En apprentissage automatique et en statistiques, le taux d'apprentissage est un paramètre de réglage dans un algorithme d'optimisation qui détermine la taille du pas à chaque itération lors de la recherche d'un minimum d'une fonction de perte. Comme il influence la mesure dans laquelle les informations nouvellement acquises remplacent les anciennes, il représente métaphoriquement la vitesse à laquelle un modèle d'apprentissage automatique « apprend ». Dans la littérature sur le contrôle adaptatif, le taux d'apprentissage est couramment appelé gain.
Lors du réglage d'un taux d'apprentissage, il existe un compromis entre la vitesse de convergence et le dépassement. Alors que la direction de descente est généralement déterminée à partir du gradient de la fonction de perte, le taux d'apprentissage détermine l'ampleur du pas effectué dans cette direction. Un taux d'apprentissage trop élevé fera sauter l'apprentissage par-dessus les minima, mais un taux trop faible prendra soit trop de temps pour converger, soit restera bloqué dans un minimum local indésirable.
Afin d'obtenir une convergence plus rapide, d'éviter les oscillations et de ne pas rester bloqué dans des minima locaux indésirables, le taux d'apprentissage est souvent varié pendant l'entraînement, soit selon un programme de taux d'apprentissage, soit en utilisant un taux d'apprentissage adaptatif. Le taux d'apprentissage et ses ajustements peuvent également différer par paramètre, auquel cas il s'agit d'une matrice diagonale qui peut être interprétée comme une approximation de l'inverse de la matrice hessienne dans la méthode de Newton. Le taux d'apprentissage est lié à la longueur de pas déterminée par une recherche linéaire inexacte dans les méthodes quasi-Newton et les algorithmes d'optimisation associés.
Programmes de taux d'apprentissage
Un programme de taux d'apprentissage modifie le taux d'apprentissage pendant l'apprentissage et est le plus souvent modifié entre les époques ou les itérations. Cela se fait principalement avec deux paramètres : le décroissance et l'élan. Il existe de nombreux programmes de taux d'apprentissage différents, mais les plus courants sont basés sur le temps, par étapes et exponentiels.
La décroissance sert à stabiliser l'apprentissage dans un bon endroit et à éviter les oscillations, une situation qui peut survenir lorsqu'un taux d'apprentissage constant trop élevé fait osciller l'apprentissage d'avant en arrière autour d'un minimum. La décroissance est contrôlée par un hyperparamètre.
L'élan est analogue à une balle qui roule en bas d'une colline ; nous voulons que la balle se stabilise au point le plus bas de la colline (correspondant à l'erreur la plus faible). L'élan accélère à la fois l'apprentissage (en augmentant le taux d'apprentissage) lorsque le gradient du coût d'erreur va dans la même direction pendant longtemps et évite également les minima locaux en « franchissant » les petites bosses. L'élan est contrôlé par un hyperparamètre analogue à la masse d'une balle qui doit être choisi manuellement - trop élevé et la balle franchira les minima que nous souhaitons trouver, trop faible et il ne remplira pas son objectif. La formule pour intégrer l'élan est plus complexe que pour la décroissance mais est le plus souvent intégrée dans les bibliothèques de Deep learning telles que Keras.
Programmes basés sur le temps
Les programmes de taux d'apprentissage basés sur le temps modifient le taux d'apprentissage en fonction du taux d'apprentissage de l'itération précédente. En intégrant la décroissance, la formule mathématique du taux d'apprentissage est :
η_{n+1} = η₀ / (1 + d n)
où η est le taux d'apprentissage, η₀ est le taux d'apprentissage initial, d est un paramètre de décroissance, et n est le pas d'itération.
Programmes par étapes
Les programmes de taux d'apprentissage par étapes modifient le taux d'apprentissage selon des étapes prédéfinies. La formule d'application de la décroissance est ici définie comme :
η_n = η₀ d^(⌊(1+n)/r⌋)
où η_n est le taux d'apprentissage à l'itération n, η₀ est le taux d'apprentissage initial, d est la mesure dans laquelle le taux d'apprentissage doit changer à chaque baisse (0,5 correspond à une réduction de moitié), et r correspond au taux de baisse, ou à la fréquence à laquelle le taux doit être réduit (10 correspond à une baisse toutes les 10 itérations). La fonction plancher (⌊…⌋) ici réduit la valeur de son entrée à 0 pour toutes les valeurs inférieures à 1.
Programmes exponentiels
Les programmes de taux d'apprentissage exponentiels sont similaires aux programmes par étapes, mais au lieu d'étapes, une fonction exponentielle décroissante est utilisée. La formule mathématique pour intégrer la décroissance est :
η_n = η₀ e^(−d n)
où d est un paramètre de décroissance.
Taux d'apprentissage adaptatif
Le problème des programmes de taux d'apprentissage est qu'ils dépendent tous d'hyperparamètres qui doivent être choisis manuellement pour chaque session d'apprentissage donnée et peuvent varier considérablement selon le problème traité ou le modèle utilisé. Pour remédier à cela, il existe de nombreux types d'algorithmes de descente de gradient adaptative tels que Adagrad, Adadelta, RMSprop et Adam, qui sont généralement intégrés dans les bibliothèques d'apprentissage profond telles que Keras.
Programmes d'échauffement et cycliques
Au-delà des programmes de décroissance classiques, l'entraînement moderne de grands modèles utilise souvent des programmes d'échauffement et cycliques. L'échauffement commence avec un petit taux d'apprentissage et l'augmente progressivement sur quelques époques, ce qui aide à stabiliser l'entraînement dans la phase précoce, en particulier pour les modèles basés sur Transformer (architecture). Les programmes cycliques, tels que le recuit cosinusoïdal, font varier périodiquement le taux d'apprentissage entre une valeur minimale et maximale, ce qui peut aider à échapper aux minima locaux et parfois améliorer la généralisation.
Considérations pratiques
Le choix du programme de taux d'apprentissage peut affecter considérablement l'entraînement des modèles de Neural network. Par exemple, lors de l'entraînement de Large language models, une pratique courante consiste à utiliser un échauffement linéaire suivi d'une décroissance cosinusoïdale. Cette approche est utilisée par des organisations comme OpenAI et Google DeepMind dans leurs sessions d'entraînement à grande échelle. Le taux d'apprentissage initial est souvent défini sur la base de règles empiriques ou en exécutant un chercheur de taux d'apprentissage, qui teste une gamme de valeurs sur quelques itérations.
Relation avec les algorithmes d'optimisation
La programmation du taux d'apprentissage est étroitement liée au choix de l'algorithme d'optimisation. Les frameworks de Machine learning tels que TensorFlow et PyTorch fournissent des planificateurs intégrés qui peuvent être combinés avec des optimiseurs comme SGD, Adam ou RMSprop. L'interaction entre le programme et l'état interne de l'optimiseur (par exemple, les tampons d'élan dans Adam) est importante ; par exemple, réduire le taux d'apprentissage trop brusquement peut provoquer un dépassement de l'optimiseur.
Histoire et développement
Le concept d'ajustement du taux d'apprentissage pendant l'entraînement remonte aux premiers travaux en Artificial intelligence et Machine learning. Des chercheurs comme Thomas G. Dietterich et Michael I. Jordan ont contribué à la compréhension fondamentale de l'optimisation dans les systèmes d'apprentissage. Dans les années 2010, l'essor de l'apprentissage profond a attiré une attention renouvelée sur la programmation, avec des articles sur les taux d'apprentissage cycliques et l'échauffement devenant largement cités.