SGD Simple Ne Peut Pas Entraîner ANDREA
Descente de Gradient Stochastique, le Point de Départ
Backprop calcule un gradient g pour chaque paramètre. La descente de gradient stochastique (SGD) simple met à jour chaque paramètre avec p -= lr * g. Un seul taux d'apprentissage, une seule direction par étape, pas de mémoire des gradients passés.
SGD simple casse à grande échelle pour deux raisons :
1. Les gradients ont des magnitudes très différentes parmi les paramètres. Un embedding pour un token rare reçoit un gradient minuscule la plupart des étapes ; une échelle de layernorm reçoit un grand. Un seul taux d'apprentissage ne convient pas à les deux.
2. Les gradients oscillent. Un mini-batch bruité provenant d'un corpus à 16 sources pousse un paramètre à gauche, puis à droite, puis à gauche. Le SGD classique gaspille des étapes en luttant contre lui-même.
Adam (Kingma & Ba, 2015) corrige les deux avec deux moyennes mobiles par paramètre.
Premier Moment & Deuxième Moment
m : Direction Lissée
Le premier moment m moyenne les gradients récents de manière exponentielle :
m = beta1 m + (1 - beta1) g
avec beta1 = 0.9. Après plusieurs étapes, m porte une direction lissée ; un mauvais lot la déplace à peine.
v : Magnitude lissée
Le second moment v fait la moyenne des gradients au carré récents :
v = beta2 v + (1 - beta2) g^2
avec beta2 = 0.999. v suit la taille typique du gradient de chaque paramètre. Les paramètres à grand gradient obtiennent un grand v ; les paramètres à petit gradient obtiennent un petit v.
Taux d'apprentissage adaptatif par paramètre
Diviser la direction lissée par la racine carrée de la magnitude lissée remet tous les paramètres sur un pied d'égalité comparable :
adam_step = m / sqrt(v + eps)
Les embeddings à faible gradient sont amplifiés ; les layernorms à fort gradient sont réduits. Un seul lr global convient maintenant à chaque paramètre.
Lire les Moments
Pourquoi les premières étapes nécessitent une correction de biais
Biais de démarrage à froid
m & v commencent à zéro. Après l'étape 1, m = 0.1 g_1 & v = 0.001 g_1^2. Les deux estimations sous-estiment dramatiquement une moyenne à long terme. Sans correction, l'optimiseur commence timidement & accélère lentement, gaspillant les précieuses premières étapes où les représentations se forment.
La Correction
Adam scale chaque estimation par 1 / (1 - beta^t) où t est le numéro de l'étape :
m_hat = m / (1 - beta1^t)
v_hat = v / (1 - beta2^t)
À l'étape 1 avec beta1 = 0.9, le diviseur (1 - 0.9) = 0.1, donc m_hat = m / 0.1 = 10 * m. L'estimation corrigée de biais correspond à ce que prédirait la moyenne à long terme. À mesure que t augmente, beta^t approche 0, la correction approche 1, & les valeurs corrigées & non corrigées convergent.
Découplage de la décroissance de poids (l'innovation AdamW)
Régularisation L2 vs Décroissance de poids
La régularisation L2 classique ajoute une pénalité à une perte : L_total = L_data + (lambda / 2) sum(p^2). La rétropropagation voit cette pénalité comme partie du gradient : g_total = g_data + lambda p. Le terme L2 passe à travers les mises à jour m & v d'Adam, étant lissé & rééchelonné par les magnitudes par paramètre.
Loshchilov & Hutter (2019) ont prouvé que lisser un regulariseur via Adam corrompt les deux. L'échelle adaptative d'Adam réduit la weight decay sur les paramètres à grands gradients (où la décroissance devrait combattre le surapprentissage le plus fort) & l'amplifie sur ceux à petits gradients.
AdamW : Appliquer la Decroissance Directement
AdamW découple la weight decay du gradient. La décroissance s'applique directement à chaque paramètre lors de la mise à jour du paramètre, sans jamais toucher m ou v :
p -= lr (m_hat / (sqrt(v_hat) + eps) + weight_decay p)
Deux termes pilotent maintenant chaque étape :
1. Terme Adam : m_hat / (sqrt(v_hat) + eps) rééchelonne la direction du gradient en fonction de l'historique de magnitude par paramètre.
2. Terme de décroissance : weight_decay * p réduit chaque paramètre vers zéro, uniformément, sans passer par le lissage d'Adam.
ANDREA-120M v2 définit weight_decay = 0.01. À chaque étape, chaque paramètre se réduit de 1 % vers zéro, en plus de ce que fait le terme Adam.
Pourquoi le découplage est important
Preuves empiriques
Effondrement v1 (sans weight decay)
ANDREA-120M v1 entraîné pendant 165K étapes avec vanilla Adam. Échantillons de sorties :
- Étape 80K : region region region region region region region
- Étape 110K : ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
- Étape 140K : games, games, games, games, games, games, games
- Étape 165K : Budy Budy Budy Budy Budy Budy Budy Budy Budy
Les nombres de perte sont restés raisonnables (minimum EMA 3,23 à l'étape 110K, contre 9,04 pour le hasard). La perte seule masque l'effondrement de répétition : un modèle qui mémorise un token pour toujours obtient une faible entropie croisée à chaque étape où ce token apparaît.
Stabilité v2 (weight_decay = 0.01)
v2 a ajouté AdamW (plus clipping des gradients, échauffement de la LR, surveillance des échantillons). À l'étape ~112K, échantillons produits :
- Le perroquet de Caroline a été déclaré éteint en 1939 (factuellement correct)
- La transformée de Fourier décompose les signaux en composantes de fréquence (définition de manuel)
- Refrain rythmé de la pluie, Ruisseaux sur la fenêtre, Répit de la douleur de la vie (contrainte de haïku satisfaite)
Une évaluation externe a noté les échantillons v2 9,5/10, les qualifiant de « cohérence impressionnante et rétention des connaissances à cette échelle ».
Les 12M ont survécu sans AdamW. Pourquoi ?
ANDREA-12M entraîné avec Adam vanilla sans collapse. À 12M paramètres, les matrices de poids restent assez petites pour que l'échelle adaptative d'Adam ne puisse pas pousser les poids individuels vers des magnitudes incontrôlées qui entraînent la répétition. À l'échelle 120M, les magnitudes des poids dérivent davantage par étape & s'accumulent ; la décroissance uniforme applique une force de restauration constante vers zéro. La décroissance découplée des poids importe davantage à mesure que le modèle s'agrandit.
Choix de weight_decay = 0.01
Activités adjacentes
AdamW s'interconnecte avec trois activités sœurs dans ce cours :
- Activité 11 : Échauffement LR + décroissance cosinus. AdamW seul ne peut pas sauver un modèle d'un taux d'apprentissage de pic instantané sur des poids fraîchement initialisés. L'échauffement augmente progressivement lr sur 2000 étapes afin que la correction de biais d'AdamW et la décroissance de poids aient le temps de stabiliser les représentations.
- Activité 12 : Limitation des gradients. AdamW suppose que les gradients ont une magnitude bornée. Les transitions de source toutes les 7 à 42 étapes dans le bandit d'ANDREA produisent occasionnellement des pics de gradients ; la limitation les plafonne à une norme L2 de 1.0 AVANT qu'AdamW ne touche à m, v ou p.
- Activité 13 : Précision FP32 / FP16 / FP8. AdamW stocke m et v par paramètre, doublant l'empreinte mémoire des poids seuls. FP16 la réduit de moitié ; FP8 la réduit encore. Les choix de précision interagissent avec la stabilité de l'optimiseur.
AdamW, warmup, clipping et precision forment un trèfle à quatre feuilles. Enlevez une feuille, regardez ANDREA s'effondrer.