Module 5 — Optimiseurs : descente stochastique, moment, Adam
Les gradients sont calculés. Reste à décider de combien bouger les poids, et cette décision fait la différence entre un entraînement qui converge en une heure et un qui n'aboutit jamais.
La règle de base et son unique hyperparamètre critique
La descente de gradient met à jour chaque paramètre dans la direction opposée à son gradient :
Le taux d'apprentissage est, de loin, l'hyperparamètre le plus important du deep learning. Trop grand, la perte oscille ou diverge vers NaN ; trop petit, l'entraînement rampe ou s'immobilise sur un plateau. Aucun autre réglage n'a un effet comparable, et c'est par lui qu'il faut commencer.
Taille de lot : le compromis bruit et vitesse
Trois régimes se distinguent selon le nombre d'observations utilisées par mise à jour.
Le gradient complet utilise tout le jeu de données : direction exacte, mais une seule mise à jour par passage, et une consommation mémoire prohibitive. Le gradient stochastique pur utilise une observation : mises à jour très fréquentes mais direction très bruitée. Le mini-lot, en pratique de 32 à 512 observations, combine les avantages et constitue le standard universel.
Un point contre-intuitif mérite d'être signalé : le bruit du mini-lot est utile. Il aide à s'échapper des minimums locaux étroits et agit comme une régularisation légère. Les très grands lots convergent plus vite en nombre de passages mais généralisent souvent un peu moins bien, ce qui explique qu'on n'augmente pas indéfiniment la taille de lot même quand la mémoire le permettrait.
Le moment, ou pourquoi accumuler de l'élan
La descente simple avance en zigzag dans les vallées étroites : le gradient pointe vers les parois plutôt que vers le fond. Le moment corrige cela en accumulant une vitesse :
Avec , la mise à jour retient une moyenne mobile des gradients récents. Les oscillations perpendiculaires, qui alternent de signe, s'annulent mutuellement ; la composante constante vers le fond de la vallée, elle, s'accumule. L'analogie de la bille qui roule est juste : elle traverse les petites irrégularités au lieu de s'y arrêter.
Les taux adaptatifs et Adam
Tous les paramètres n'ont pas besoin du même pas. Une variable rare mérite des mises à jour plus franches qu'une variable omniprésente. Les méthodes adaptatives donnent donc un taux par paramètre, à partir de l'historique de ses gradients.
Adam est aujourd'hui le point de départ par défaut. Il combine les deux idées précédentes : un moment sur le gradient (moment d'ordre 1) et un moment sur le carré du gradient (ordre 2), le second servant à normaliser le pas.
Un paramètre dont les gradients sont systématiquement grands voit son pas réduit par la division ; un paramètre aux gradients faibles voit le sien relevé. Les valeurs par défaut , et fonctionnent dans la grande majorité des cas et se règlent rarement.
AdamW corrige un défaut réel d'Adam : la pénalité L2, lorsqu'elle est ajoutée au gradient, se retrouve divisée par et perd son effet régularisant. AdamW l'applique séparément — c'est la decoupled weight decay — et devrait être préféré dès qu'on utilise une pénalité de poids. C'est l'optimiseur des grands modèles de langage actuels.
import torch
optimiseur = torch.optim.AdamW(modele.parameters(), lr=3e-4, weight_decay=0.01)
planificateur = torch.optim.lr_scheduler.CosineAnnealingLR(optimiseur, T_max=epoques)
for epoque in range(epoques):
for X_lot, y_lot in chargeur:
optimiseur.zero_grad() # sans cela les gradients s'accumulent
perte = critere(modele(X_lot), y_lot)
perte.backward()
torch.nn.utils.clip_grad_norm_(modele.parameters(), 1.0)
optimiseur.step()
planificateur.step() # une fois par epoque, pas par lot
Faire varier le taux d'apprentissage
Garder constant est rarement optimal : on veut avancer vite au début, puis affiner. Deux mécanismes sont devenus standards.
L'échauffement augmente progressivement le taux pendant les premières centaines d'itérations. Au démarrage, les poids sont aléatoires et les gradients erratiques ; appliquer immédiatement le taux nominal peut déstabiliser durablement l'entraînement. C'est particulièrement vrai pour les transformeurs, où l'échauffement n'est pas optionnel.
La décroissance réduit ensuite le taux : par paliers, ou selon une courbe en cosinus qui est aujourd'hui le choix le plus répandu. L'intuition est celle du recuit : de grands pas pour trouver la bonne région, de petits pas pour s'y installer.
Cherchez le taux d'apprentissage avant tout le reste, et faites-le par ordres de grandeur : , , . Un test rapide et fiable consiste à lancer quelques centaines d'itérations en augmentant progressivement le taux, puis à tracer la perte : le bon ordre de grandeur se situe juste avant le point où elle remonte. Pour AdamW, est un point de départ raisonnable sur la plupart des architectures. Et n'ajustez la taille de lot qu'ensuite, en sachant que doubler le lot justifie souvent d'augmenter le taux.
En résumé
- Le taux d'apprentissage est l'hyperparamètre le plus déterminant ; il se règle en premier et par ordres de grandeur.
- Le mini-lot de 32 à 512 est le standard ; son bruit est utile et agit comme une légère régularisation.
- Le moment annule les oscillations et accumule l'élan vers le fond de la vallée ; les méthodes adaptatives donnent un pas par paramètre.
- AdamW est le défaut raisonnable, préférable à Adam avec pénalité de poids ; échauffement puis décroissance en cosinus constituent la planification usuelle.
Module suivant : l'initialisation des poids et le problème des gradients qui disparaissent, deux sujets que la structure de la rétropropagation rendait prévisibles.