English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

gäst
1 / ?

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

Två parametrar får samma gradient `g = 0.1` på detta steg. Parameter A har ackumulerat `v = 0.0001` över många steg; parameter B har `v = 1.0`. Med `adam_step = g / sqrt(v + eps)`, vilken parameter får den större uppdateringen detta steg, & varför vill Adam ha det så?

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.


AdamW Optimizer Step

Varför Decoupled är viktigt

ANDREA-120M v1 använde vanilla Adam (ingen weight decay) & kollapsade in i repetitionsloopar vid steg 110K. v2 använde AdamW med `weight_decay = 0.01` & producerade sammanhängande flerstyckstext. Förklara (a) vilken specifik term som läggs till i AdamW som vanilla Adam saknar, & (b) varför det skulle vara värre att placera den termen INOM gradienten (klassisk L2) jämfört med AdamW:s avkopplade placering UTANFÖR.

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

Varför kan `weight_decay = 0.01` fungera för en modell med 120M parametrar men ett värde 100x större (`weight_decay = 1.0`) förstöra träningen? Resonera om uppdateringsregeln `p -= lr * (adam_term + weight_decay * p)`. Välj en representativ `p`, plugga in `weight_decay = 1.0` för ett enda steg, & beskriv vad som händer med `p` efter några steg.

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.

Reflektion över optimizer

Välj ett ANDREA-120M v1-exempel (t.ex. `region region region region`) & beskriv hur AdamW:s `weight_decay * p`-term, applicerad varje steg från steg 0, skulle ha förhindrat just den specifika felmoden. Ett stycke.