Vanlig SGD Kan Inte Träna ANDREA
Stochastic Gradient Descent, Utgångspunkten
Backprop beräknar en gradient g för varje parameter. Vanlig stochastic gradient descent (SGD) uppdaterar varje parameter med p -= lr * g. En inlärningshastighet, en riktning per steg, inget minne av tidigare gradienter.
Vanlig SGD går sönder i stor skala av två anledningar:
1. Gradienterna har väldigt olika magnituder över parametrar. En inbäddning för en sällsynt token får en liten gradient de flesta steg; en layernorm-skala får en stor. En inlärningshastighet kan inte passa båda.
2. Gradienterna oscillerar. En bullrig mini-batch från en 16-källors korpus trycker en parameter åt vänster, sedan höger, sedan vänster. Vanlig SGD slösar steg på att kämpa mot sig själv.
Adam (Kingma & Ba, 2015) fixar båda med två glidande medelvärden per parameter.
Första Momentet & Andra Momentet
m: Utjämnad Riktning
Det första momentet m medelvärdar senaste gradienterna exponentiellt:
m = beta1 m + (1 - beta1) g
med beta1 = 0.9. Efter flera steg bär m en utjämnad riktning; en dålig batch flyttar knappt på den.
v: Utjämnad Magnitud
Andra momentet v genomsnittar nyliga kvadrerade gradienter:
v = beta2 v + (1 - beta2) g^2
med beta2 = 0.999. v spårar hur stor varje parameters gradient typiskt blir. Parametrar med stora gradienter får ett stort v; parametrar med små gradienter får ett litet v.
Per-parameter adaptiv inlärningshastighet
Att dividera den utjämnade riktningen med kvadratroten av den utjämnade magnituden skalar om varje parameter till en jämförbar basis:
adam_step = m / sqrt(v + eps)
Tiny-gradient embeddings får skalas upp; large-gradient layernorms får skalas ner. En global lr passar nu varje parameter.
Läsa Moments
Varför tidiga steg behöver bias-korrigering
Cold-Start Bias
m & v startar vid noll. Efter steg 1, m = 0.1 g_1 & v = 0.001 g_1^2. Båda uppskattningarna underskottar ett långsiktigt genomsnitt dramatiskt. Utan korrigering startar optimizern timid & rampas upp långsamt, vilket slösar värdefulla tidiga steg när representationer formas.
Korrigeringen
Adam skalar varje uppskattning med 1 / (1 - beta^t) där t är stegnumret:
m_hat = m / (1 - beta1^t)
v_hat = v / (1 - beta2^t)
Vid steg 1 med beta1 = 0.9 är delaren (1 - 0.9) = 0.1, så m_hat = m / 0.1 = 10 * m. Den bias-korrigerade uppskattningen stämmer med vad långsiktigt genomsnitt skulle förutsäga. När t växer närmar sig beta^t 0, korrigeringen närmar sig 1, & korrigerade & okorrigerade värden konvergerar.
Decoupled Weight Decay (AdamW-innovationen)
L2-regularisering vs Weight Decay
Klassisk L2-regularisering lägger till en straffterm till en förlust: L_total = L_data + (lambda / 2) sum(p^2). Backprop ser den strafftermen som en del av gradienten: g_total = g_data + lambda p. L2-termen flödar genom Adams m & v-uppdateringar, blir utjämnad & omskalad av per-parameter-magnituder.
Loshchilov & Hutter (2019) bevisade att utjämning av en regularizer genom Adam korrumperar båda. Adams adaptiva skalning minskar viktdegradation på parametrar med stora gradienter (där degradation bör bekämpa överanpassning hårdast) & förstärker den på parametrar med små gradienter.
AdamW: Applicera Decay Direkt
AdamW separerar viktdegradation från en gradient. Decay appliceras på varje parameter direkt under en parameteruppdatering, och rör aldrig m eller v:
p -= lr (m_hat / (sqrt(v_hat) + eps) + weight_decay p)
Två termer driver nu varje steg:
1. Adam-termen: m_hat / (sqrt(v_hat) + eps) skalar om gradientriktningen baserat på per-parameters magnitudhistoria.
2. Dekay-termen: weight_decay * p krymper varje parameter mot noll, enhetligt, utan att gå genom Adams utjämning.
ANDREA-120M v2 ställer in weight_decay = 0.01. Varje steg krymper varje parameter 1% mot noll, utöver vad Adam-termen gör.
Varför Decoupled är viktigt
Empiriska bevis
v1-kollaps (ingen weight decay)
ANDREA-120M v1 tränad i 165K steg med vanilla Adam. Exempelutdata:
- Steg 80K: region region region region region region region
- Steg 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
- Steg 140K: games, games, games, games, games, games, games
- Steg 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy
Förlustsiffrorna förblev rimliga (EMA-minimum 3,23 vid steg 110K, jämfört med slumpmässig chans 9,04). Förlusten doler ensam repetionskollaps: en modell som memorerar en token för evigt uppnår låg korsentropi på varje steg där den tokenen dyker upp.
v2 Stabilitet (weight_decay = 0.01)
v2 lade till AdamW (plus gradientklippning, LR-uppvärmning, provövervakning). Vid steg ~112K producerades prover:
- Carolina parakeet erkläres utdöd 1939 (faktiskt korrekt)
- Fouriertransformen bryter ner signaler i frekvenskomponenter (läroboksdefinition)
- Regnets rytmiska refräng, Bäckar på fönstret, Linder livets smärta (haiku-begränsning uppfylld)
Extern bedömning gav v2-prover 9.5/10 och kallade dem "intrycksväckande koherens & kunskapsbevarande i denna skala."
De 12M överlevde utan AdamW. Varför?
ANDREA-12M tränades med vanlig Adam utan kollaps. Vid 12M parametrar förblir viktmatriserna tillräckligt små så att Adams adaptiva skalning inte kan driva enskilda vikter till de okontrollerade magnituderna som driver repetition. Vid 120M-skala driver viktmagnituderna längre per steg & ackumuleras; uniform nedbrytning applicerar en konstant återställande kraft mot noll. Decoupled weight decay blir viktigare ju större modellen blir.
Välja weight_decay = 0.01
Relaterade aktiviteter
AdamW samverkar med tre syskonaktiviteter i denna kurs:
- Aktivitet 11: LR-uppvärmning + cosinusnedgång. AdamW ensam kan inte rädda en modell från omedelbar toppinlärningshastighet på nyligen initialiserade vikter. Uppvärmning ramp upp lr över 2000 steg så att AdamW:s bias-korrigering & viktminskning får tid att stabilisera representationerna.
- Aktivitet 12: Gradientklippning. AdamW förutsätter att gradienter har bunden magnitud. Källövergångar var 7 till 42 steg i ANDREA:s bandit producerar tillfälliga gradienttoppar; klippning begränsar dem till L2-norm 1.0 FÖRE AdamW rör m, v eller p.
- Aktivitet 13: FP32 / FP16 / FP8 precision. AdamW lagrar m & v per parameter, vilket dubblar minnesavtrycket för vikterna ensamma. FP16 halverar det avtrycket; FP8 halverar det igen. Precisionval interagerar med optimiserarstabilitet.
AdamW, warmup, clipping och precision bildar ett fyrklöver. Släpp en blad, se ANDREA kollapsa.