Einfaches SGD kann ANDREA nicht trainieren
Stochastischer Gradientenabstieg, der Ausgangspunkt
Backprop berechnet einen Gradienten g für jeden Parameter. Einfacher stochastischer Gradientenabstieg (SGD) aktualisiert jeden Parameter mit p -= lr * g. Eine Lernrate, eine Richtung pro Schritt, kein Gedächtnis vergangener Gradienten.
Einfaches SGD versagt bei Skalierung aus zwei Gründen:
1. Gradienten haben wild unterschiedliche Größen über Parameter hinweg. Ein Embedding für ein seltenes Token erhält die meiste Zeit einen winzigen Gradienten; eine Layernorm-Skala erhält einen großen. Eine Lernrate passt nicht zu beiden.
2. Gradienten oszillieren. Ein verrauschter Mini-Batch aus einem 16-Quellen-Korpus schiebt einen Parameter nach links, dann nach rechts, dann wieder nach links. Einfaches SGD verschwendet Schritte, indem es mit sich selbst kämpft.
Adam (Kingma & Ba, 2015) behebt beides mit zwei gleitenden Durchschnitten pro Parameter.
Erster Moment & Zweiter Moment
m: Geglättete Richtung
Der erste Moment m mittelt kürzliche Gradienten exponentiell:
m = beta1 m + (1 - beta1) g
mit beta1 = 0.9. Nach mehreren Schritten trägt m eine geglättete Richtung; ein schlechter Batch verschiebt es kaum.
v: Geglättete Magnitude
Das zweite Moment v mittelt kürzliche quadrierten Gradienten:
v = beta2 v + (1 - beta2) g^2
mit beta2 = 0.999. v verfolgt, wie groß der Gradient jedes Parameters typischerweise wird. Parameter mit großen Gradienten erhalten ein großes v; Parameter mit winzigen Gradienten erhalten ein kleines v.
Parameterweise adaptive Lernrate
Das Teilen der geglätteten Richtung durch die Quadratwurzel der geglätteten Magnitude skaliert jeden Parameter auf eine vergleichbare Basis:
adam_step = m / sqrt(v + eps)
Tiny-gradient embeddings get scaled up; large-gradient layernorms get scaled down. One global lr now suits every parameter.
Die Momente lesen
Warum frühe Schritte Bias-Korrektur benötigen
Cold-Start Bias
m & v starten bei null. Nach Schritt 1 gilt m = 0.1 g_1 & v = 0.001 g_1^2. Beide Schätzungen unterschießen einen langfristigen Durchschnitt dramatisch. Ohne Korrektur startet der Optimizer vorsichtig & beschleunigt langsam, verschwendet wertvolle frühe Schritte, in denen Repräsentationen entstehen.
Die Korrektur
Adam skaliert jede Schätzung mit 1 / (1 - beta^t), wobei t die Schrittzahl ist:
m_hat = m / (1 - beta1^t)
v_hat = v / (1 - beta2^t)
Im Schritt 1 mit beta1 = 0.9 ist der Divisor (1 - 0.9) = 0.1, also m_hat = m / 0.1 = 10 * m. Die bias-korrigierte Schätzung stimmt mit dem überein, was der Langzeitdurchschnitt vorhersagt. Mit wachsendem t nähert sich beta^t 0 an, die Korrektur nähert sich 1 an, & korrigierte & unkorregierte Werte konvergieren.
Entkoppelter Weight Decay (die AdamW-Innovation)
L2-Regularisierung vs. Weight Decay
Klassische L2-Regularisierung fügt einen Penalty zum Loss hinzu: L_total = L_data + (lambda / 2) sum(p^2). Backprop sieht diesen Penalty als Teil des Gradienten: g_total = g_data + lambda p. Der L2-Term fließt durch Adams m- & v-Updates und wird geglättet & skaliert durch per-parameter Größen.
Loshchilov & Hutter (2019) bewiesen, dass das Glätten eines Regularisierers durch Adam beide korrumpiert. Adams adaptive Skalierung verkleinert den Weight Decay bei Parametern mit großen Gradienten (wo Decay am härtesten gegen Overfitting kämpfen sollte) & verstärkt ihn bei solchen mit kleinen Gradienten.
AdamW: Decay direkt anwenden
AdamW entkoppelt den Weight Decay vom Gradienten. Decay wird direkt auf jeden Parameter während der Parameteraktualisierung angewendet, ohne m oder v zu berühren:
p -= lr (m_hat / (sqrt(v_hat) + eps) + weight_decay p)
Zwei Terme treiben jetzt jeden Schritt: [BLOCK_TYPE CONTENT bias_decay/decoupled_decay]
1. Adam-Term: m_hat / (sqrt(v_hat) + eps) skaliert die Gradientenrichtung durch die pro-Parameter-Magnitudengeschichte.
2. Abbau-Term: weight_decay * p verkleinert jeden Parameter uniform gegen Null, ohne die Glättung von Adam zu durchlaufen.
ANDREA-120M v2 setzt weight_decay = 0.01. Bei jedem Schritt schrumpft jeder Parameter um 1 % gegen Null, zusätzlich zu dem, was der Adam-Term bewirkt.
Warum die Entkopplung wichtig ist
Empirische Evidenz
v1 Kollaps (kein Weight Decay)
ANDREA-120M v1 trainiert für 165K Schritte mit vanilla Adam. Beispielaussgaben:
- Schritt 80K: region region region region region region region
- Schritt 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
- Schritt 140K: games, games, games, games, games, games, games
- Schritt 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy
Die Verlustwerte blieben vernünftig (EMA-Minimum 3,23 bei Schritt 110K, im Vergleich zu Zufallswahrscheinlichkeit 9,04). Der Verlust allein verbirgt den Repetitionskollaps: Ein Modell, das ein Token für immer memorisiert, erreicht niedrige Kreuzentropie bei jedem Schritt, in dem dieses Token erscheint.
v2-Stabilität (weight_decay = 0.01)
v2 fügte AdamW hinzu (plus Gradient Clipping, LR-Warmup, Sample-Überwachung). Bei Schritt ~112K produzierten die Samples:
- Carolina parakeet was declared extinct in 1939 (sachlich korrekt)
- The Fourier transform decomposes signals into frequency components (Lehrbuchdefinition)
- Rain's rhythmic refrain, Rivulets on the window, Respite from life's pain (Haiku-Bedingung erfüllt)
Externe Bewertung bewertete v2-Samples mit 9,5/10 und nannte sie „beeindruckende Kohärenz & Wissensretention in dieser Skala“.
Die 12M überlebten ohne AdamW. Warum?
ANDREA-12M trainiert mit vanilla Adam ohne Kollaps. Bei 12M Parametern bleiben die Gewichtsmatrizen klein genug, dass Adams adaptive Skalierung einzelne Gewichte nicht in die entfesselten Größenordnungen treiben kann, die Wiederholung verursachen. Im 120M-Maßstab treiben sich die Gewichtsamplituden pro Schritt weiter auseinander und akkumulieren; uniformer Zerfall wendet eine konstante rücktreibende Kraft gegen Null an. Entkoppelter Weight Decay wird wichtiger, je größer das Modell skaliert.
Auswahl von weight_decay = 0.01
Benachbarte Aktivitäten
AdamW verknüpft sich mit drei Geschwisteraktivitäten in diesem Kurs:
- Aktivität 11: LR-Warmup + Cosinus-Decay. AdamW allein kann ein Modell nicht vor instantaner Peak-Learning-Rate auf frisch initialisierten Gewichten retten. Warmup steigert lr über 2000 Schritte, damit AdamWs Bias-Korrektur & Weight Decay Zeit haben, die Repräsentationen zu stabilisieren.
- Aktivität 12: Gradient Clipping. AdamW geht davon aus, dass Gradienten eine begrenzte Magnitude haben. Quellenübergänge alle 7 bis 42 Schritte im Bandit von ANDREA erzeugen gelegentliche Gradientenspitzen; Clipping begrenzt sie auf L2-Norm 1.0 BEVOR AdamW m, v oder p berührt.
- Aktivität 13: FP32 / FP16 / FP8-Präzision. AdamW speichert m & v pro Parameter und verdoppelt damit den Speicherbedarf der Gewichte allein. FP16 halbiert diesen Bedarf; FP8 halbiert ihn erneut. Präzisionswahl interagiert mit der Stabilität des Optimierers.
AdamW, Warmup, Clipping und Precision bilden ein vierblättriges Kleeblatt. Lass ein Blatt weg, sieh zu, wie ANDREA zusammenbricht.