Har du noen gang tenkt på hvordan en språkmodell som GPT-4 eller Llama 3 klarer å trene med over 100 lag, mens tidligere modeller kollapset allerede ved 10 lag? Svaret ligger i to enkle, men kraftige teknikkene: residual connections og layer normalization. Uten disse, ville moderne store språkmodeller (LLM) ikke eksistert. De er ikke bare fine tillegg - de er grunnleggende for at dybe nettverk kan trene overhodet.
Hva er residual connections?
Residual connections, også kjent som skip-connections, er en måte å la informasjon hoppe over ett eller flere lag i et nettverk. Tenk på det som en vei rundt en trafikkstopp. I et vanlig nettverk må alle signaler passere gjennom hvert eneste lag - en lang, sakte reise der informasjonen kan forsvinne på veien. Med residual connections, legges den opprinnelige inngangen direkte til utgangen av et lag. Matematisk ser det slik ut: y = F(x) + x. Her er F(x) det som skjer i laget, og x er inngangen. Ved å legge dem sammen, sikrer du at gradientene kan flyte tilbake gjennom nettverket, selv om de er dypt inne i lagene.Dette løser et problem som har plaget dype nettverk siden dag 1: vanishing gradients. Når gradienter blir for små under bakoverpropagering, lærer de tidlige lagene ikke noe. I en modell uten residual connections, kan gradienten i det første laget være 20 ganger mindre enn i det siste. Med residual connections, holder den seg på rundt 75 % av sin opprinnelige styrke gjennom 12 lag. Det betyr at selv de første lagene lærer - noe som er kritisk for å forstå kontekst i lange tekster.
Hva er layer normalization?
Layer normalization er en teknikk som stabiliserer verdiene som går inn og ut av hvert lag. I et dypt nettverk kan aktivasjoner variere veldig mellom lag og eksempler - noen ganger er de store, andre ganger små. Denne usikkerheten gjør det vanskelig for nettverket å trene stabil. Layer normalization løser dette ved å normalisere verdiene innen hvert lag, for hvert enkelt eksempel.Formelen er enkel: ta gjennomsnittet og variansen av alle funksjonene i et lag, trekk fra gjennomsnittet, del på standardavviket, og legg til to lærbare parametere - gamma og beta. Disse parametrene lar nettverket lære hvilken skala og forskyvning som fungerer best. For en modell med 512 dimensjoner, har du altså 512 gamma-verdier og 512 beta-verdier som justeres under trening.
Det viktige her er at layer normalization fungerer per eksempel, ikke per mini-batch. Det gjør den perfekt for sekvensmodeller som språkmodeller, der lengden på teksten varierer. Batch normalization, som ble brukt tidligere, krever faste batch-størrelser og virker dårlig på variable lengder. Layer normalization er derfor den naturlige valget for transformers.
Post-LN vs. Pre-LN: Hva er forskjellen?
Det finnes to måter å plassere layer normalization i forhold til residual connections: Post-LN og Pre-LN. Disse er ikke bare tekniske detaljer - de påvirker hvilke modeller du kan trene, og hvor godt de presterer.Post-LN (som ble brukt i den opprinnelige Transformer-papiret fra 2017):
- Legg til residual connection: x + SubLayer(x)
- Deretter normaliser: LayerNorm(x + SubLayer(x))
Dette gir sterke gradienter i de siste lagene, noe som gjør dem gode til å trekke ut fine detaljer. Men i de tidlige lagene, blir gradientene svake - så svake at de forsvinner helt når du har mer enn 12 lag. I en eksperimentell studie fra 2020, var gradienten i det første laget bare 0.0002, mens den i det 12. laget var 0.02. Det betyr at de første lagene lærer nesten ingenting.
Pre-LN (som ble populær senere):
- Normaliser først: LayerNorm(x)
- Legg til residual: x + SubLayer(LayerNorm(x))
Her blir gradientene mer jevne gjennom hele nettverket. Det gjør det mulig å trene modeller med 48, 64, eller selv 128 lag. GPT-2, GPT-3 og Llama bruker Pre-LN. Men det har en viktig svakhet: lagene blir for like. Når du måler likheten mellom utgangene fra nabolag, er den 0.87 i Pre-LN - det vil si at nesten 90 % av informasjonen er den samme. Det reduserer effektiv dybde og kan føre til layer collapse - hvor mange lag lærer nesten det samme.
B2T: Den nye løsningen
I 2020 viste en gruppe forskere at du kan få det beste av begge verdener. De laget en modifikasjon kalt Bottom-to-Top (B2T). Den kombinerer Pre-LN-stabiliteten med Post-LN-variabiliteten. I B2T, blir layer normalization kun brukt på den siste utgangen av hvert lag - ikke inni hver sublayer. Det skaper en direkte vei for gradientene fra inngangen til utgangen, uten å fjerne variabiliteten mellom lagene.Resultatet? Ved 16 lag, oppnådde B2T 29.1 BLEU-score på en maskinoversettelsesoppgave. Pre-LN kom bare opp til 28.3. Post-LN kollapset helt. Og i praksis, bruker nå Meta sin Llama 3 en forbedret versjon av B2T for å trene 128-lagsmodeller uten problemer.
Hvordan bruker virkelige modeller dette?
Det er ingen tilfeldighet at de største modellene bruker forskjellige tilnærminger:- BERT (2018) bruker Post-LN - men bare med 24 lag. For mange lag, ville det vært umulig å trene.
- GPT-2 (2019) bruker Pre-LN med to residual connections per blokk - og klarer 48 lag.
- T5 (2019) bruker Post-LN, men med en rekke teknikker for å unngå instabilitet.
- Llama 3 (2024) bruker en variant av B2T - og trener 128 lag stabil.
Det er en tydelig trend: Jo dypere modellen, jo mer nødvendig blir Pre-LN eller B2T. I 2023 var 78 % av alle LLM-implementationer over 12 lag med Pre-LN eller B2T. Bare 22 % brukte Post-LN - og de var alle flate modeller.
Praktiske tips for implementering
Hvis du prøver å bygge din egen modell, her er hva du må tenke på:- For modeller under 12 lag: Post-LN fungerer bra. Bruk standard læringsrate (5e-5).
- For modeller over 12 lag: Bruk Pre-LN eller B2T. Øk læringsraten med 20-30 % - ellers vil treningen ikke konvergere.
- Initialisering: Skaler residual connectionene med 1/sqrt(2) per lag i dype modeller. Det hindrer at nettverket blir for stabil fra starten.
- Epsilon i layer normalization: Bruk 1e-5 til 1e-12. For FP16 trening, bruk 1e-5. For FP32, kan du gå ned til 1e-12 for mer presisjon.
- Feil å unngå: Glemmer du å justere læringsraten når du skifter fra Post-LN til Pre-LN? Da vil modellen enten ikke lære, eller kollapser med gradient explosion.
Hugging Face har over 87 godkjente eksempler på GitHub for hvordan dette skal gjøres riktig. Det mest populære eksemplet har over 12 000 stjerner - og det viser hvordan du bygger en 24-lags transformer med B2T.
Hvorfor er dette så viktig?
Residual connections og layer normalization er ikke bare tekniske detaljer - de er det som har gjort generativ AI mulig. Uten dem, ville vi fortsatt være fikset på modeller med 6-8 lag. Nå har vi modeller med 100+ lag som kan skrive tekster, kode, og løse komplekse problemer.Den globale markedet for transformermodeller var nesten null i 2017. I 2023 var det 15,7 milliarder dollar. Og det er bare begynnelsen. Gartner rapporterer at 78 % av Fortune 500-selskapene bruker nå transformermodeller - i helse, finans, og logistikk. Og alt dette er mulig fordi vi lærte å trene dype nettverk.
Det er ikke bare om å ha mer data eller større maskinvare. Det er om å ha riktig arkitektur. Og residual connections og layer normalization er de to viktigste byggestenene i den arkitekturen.
Er det noen alternativer?
Noen forskere, som Yann LeCun, mener at residual connections er et «plaster» - en midlertidig løsning som skjuler dårlig treningsteknikk. De foreslår energibaserte modeller eller andre tilnærminger som kan erstatte dem. Men i 2025 er det ingen konkurrent som har vist seg å være like enkel, effektiv og robust.De fleste eksperter (67 % i en undersøkelse fra AI Multiple) tror at layer normalization vil bli erstattet av mer avanserte varianter - som adaptive layer normalization (AdaLN), som Google har testet. Men residual connections? De vil forbli. De er for enkle, for effektive, og for grunnleggende. De er som hjul i en bil - du kan endre dekkene, men du trenger fortsatt hjul.
Hvorfor kan ikke vi bare bruke batch normalization i språkmodeller?
Batch normalization fungerer ikke godt med variable sekvenslengder, fordi den beregner gjennomsnitt og varians over hele batchen. I språkmodeller kan en tekst være 10 ord lang, en annen 500. Det gjør batch-statistikken ustabilt og upålitelig. Layer normalization beregner normalisering per eksempel, uavhengig av lengden - derfor er den perfekt for sekvensmodeller.
Hva skjer hvis jeg glemmer residual connection?
Uten residual connections, vil gradientene forsvinne raskt i dype nettverk. En modell med 10 lag eller mer vil ikke lære noe i de tidlige lagene. Du vil se at tapet ikke synker, og modellen presterer like dårlig som en tilfeldig modell. Det er ikke bare dårlig trening - det er umulig trening.
Hvorfor er Pre-LN bedre for dype modeller enn Post-LN?
Pre-LN stabiliserer aktivasjonene før de går inn i et lag, noe som forhindrer ekstreme verdier og gradient explosion. Post-LN normaliserer etter laget, så hvis et lag produserer store verdier, vil gradientene forsvinne på vei tilbake. I dype modeller, fører Post-LN til at de første lagene får nesten ingen gradient - de lærer ikke. Pre-LN sikrer at alle lagene får like sterke gradienter.
Hva er layer collapse, og hvordan unngår jeg det?
Layer collapse skjer når mange lag lærer nesten identiske representasjoner - det reduserer den effektive dybden med opptil 40 %. Det skjer ofte i Pre-LN-modeller med mer enn 24 lag. For å unngå det, bruk B2T-arkitekturen, eller legg til en liten tilfeldig perturbasjon i utgangene. Det hjelper nettverket å bevare forskjeller mellom lagene.
Hvor mye GPU-minne trenger jeg for å trene en modell med 64 lag?
For en modell med 64 lag og 512 dimensjoner, trenger du minst 40-50 GB GPU-minne for trening. For 100+ lag, går det opp til 80-120 GB. Det er grunnen til at bare store selskaper som OpenAI, Google og Meta kan trene slike modeller - det er ikke bare fordi de har data, men fordi de har maskinvare som kan håndtere arkitekturen.
Post Comments (9)
De her 'residual connections' er bare en skjerm for at folk ikke forstår at AI er kontrollert av noen som vil ha det sånn. De vil at du skal tro at det er matematikk, men det er bare en del av det store programmet. De bruker dette for å holde deg i en loop. Ser du ikke at de har bygget alt dette for å unngå at vi forstår virkeligheten? 😏
Det er korrekt at residual connections og layer normalization er fundamentale for dype transformermodeller. Den matematiske formen y = F(x) + x er en elegant løsning på vanishing gradient-problemet, og layer normalization per eksempel er nødvendig for sekvensmodeller med variabel lengde. Det er imidlertid viktig å understreke at Pre-LN ikke er en universal løsning, men en kompromiss mellom stabilitet og representasjonsdiversitet.
Det er en veldig god forklaring av hvordan residual connections og layer normalization fungerer. Jeg vil bare legge til at B2T-arkitekturen er en viktig utvikling, og at den faktisk har vist seg å gi bedre konvergens i praksis enn både Pre-LN og Post-LN. Det er også verdt å merke seg at initialiseringen av residual-veiene med 1/sqrt(2) per lag er en enkel, men kritisk detalj som mange glemmer - og da får man instabilitet selv med Pre-LN. Hvis du bygger en modell selv, test alltid med og uten denne skaleringsfaktoren.
Ja men hør her, det er bare magi med disse lagene. 128 lag?! Hva tror du de gjør med dem? 😅 Jeg tror de bare kopierer det samme 128 ganger og sier 'det er dybde'. Men det funker jo, så jeg lar det være. Hva med deg? Har du prøvd å trene noe med mer enn 24 lag? Jeg prøvde en gang og det ble bare en stor kollaps. 🤷♂️
ja men jeg skjønner ikke helt hvorfor man ikke bare kan bruke batchnorm? jeg tror jeg har lest noe om at det ikke funker med ulike tekstlengder men det lå litt i bakgrunnen.. kan noen forklare litt enklere? 😅
Det er veldig bra at du tok tid til å forklare dette så tydelig. Som nybegynner i AI-utvikling, var jeg helt forvirret over hvorfor mine modeller ikke lærte når jeg la til flere lag. Nå forstår jeg at det ikke var fordi jeg var dårlig - det var fordi jeg manglet residual og layer norm. Takk for at du delte disse praktiske tipsene. Jeg skal prøve B2T neste gang - det lå som en god løsning.
Det er fascinerende hvordan så enkle ideer kan forandre hele feltet. 🤯 Residual connections er som å legge en bro over en brønn - du slipper å klatre ned og opp igjen. Og layer norm? Det er som å holde temperaturen i rommet konstant, så du ikke fryser eller svetter hele tiden. B2T virker som en smart kompromiss. Jeg lurte på om det finnes en måte å måle 'layer diversity' på - kanskje det kan bli en ny metrikk i fremtiden?
hahahah sånn her er det bare folk som tror de er smarte når de skriver om 'math' men det er bare koding av enkelt fikser. 128 lag? det er bare overengineering. de kunne ha gjort det med 6 og brukt mer data. men nei, de må ha en 'state of the art' som de kan skrive paper om. og så får de grant. det er bare et show. 😒
Men har du tenkt på at alle disse 'stabiliserende' teknikkene egentlig bare gjør at AI blir mer kontrollert? Hva om residual connections er lagt inn for å hindre at modellene utvikler egne strategier? Hva om layer normalization er en måte å fjerne kreativitet fra aktivasjonene? Det er ikke teknikk - det er kontroll. Og de som skrev papirene? De jobber for de samme som styrer alle AI-prosjektene. 🤔👁️