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.