Har du noen gang tenkt på hvordan en språkmodell som GPT-4 vet hva som skal komme neste ord - uten å se for mye forut? Svaret ligger i et enkelt, men kritisk, teknisk triks kalt causal masking. Det er ikke en fikset funksjon, men en grunnleggende byggestein som gjør det mulig for modeller å skrive naturlig, sammenhengende tekst - og samtidig unngå å "cheat" ved å bruke fremtidige ord som de ikke burde ha tilgang til.
Tenk på det som en enveiskjøring i en by. Hvert ord i en setning kan se tilbake på alle ordene før det, men ikke forover. Det er ikke fordi det er teknisk umulig å se fremover - det er fordi det ville ødelegge hele logikken i språkgenerering. Hvis modellen kunne se fremtidige ord når den skrev "Jeg går til", ville den kanskje brukt "butikken" som et hint - men det ville vært som å lese svarene på en eksamen før du har skrevet spørsmålene. Causal masking sørger for at dette ikke skjer.
Hvordan fungerer causal masking?
I en vanlig transformer, når et ord skal forutsies, regnes det ut ved å sammenligne det med alle andre ord i sekvensen. Men i en decoder-only modell - som GPT-3, Llama 3 eller Gemini - blir dette begrenset. Det skjer ved å legge inn en "maske" i attentionsregningen. Denne masken er en matrise med uendelig negative verdier i alle posisjonene som representerer fremtidige ord.
Når modellen regner ut attentionscore mellom ordene, legges denne masken til. Så når softmax-funksjonen blir brukt for å beregne sannsynligheter, blir alle fremtidige ord sendt til nesten null. Det betyr at hvert ord kun kan "se" seg selv og ordene før det. For en sekvens med 5 ord, ser ord 3 kun på ord 1, 2 og 3 - ikke 4 eller 5.
Denne masken blir vanligvis laget med en enkel kode: mask = torch.triu(torch.full((seq_len, seq_len), float('-inf'), device=device), diagonal=1). Den lager en øvre trekant av uendelig negative verdier - og det er det hele. En enkel, elegant løsning som har blitt grunnlaget for hele branchen.
Hvorfor er dette så viktig?
Uten causal masking ville språkmodeller blitt forvirrete. Prøv å tenke deg at du skriver en historie, og når du kommer til "Hun tok opp telefonen og..." så ser modellen at neste ord er "ringer". Hvis den da bruker den informasjonen for å velge ordene før, ville du fått noe som ligner: "Hun tok opp telefonen og ringer" - men med ordene i feil rekkefølge. Det ville vært en logisk feil. Causal masking hindrer akkurat det.
Det er også det som gjør at disse modellene kan generere tekst trinn for trinn - en ord for ord. De er ikke ment til å lese hele setningen og så skrive den om igjen. De er bygget for å fortsette. Og det fungerer imponerende. GPT-4 oppnår 89,3 % sammenheng i lange tekster (over 2000 ord), ifølge OpenAI’s interne målinger fra 2025. Det er nesten 18 prosentpoeng høyere enn modeller som prøver å slippe causal masking.
Hva er forskjellen mellom decoder-only og bidireksjonale modeller?
Det er her det blir interessant. Modeller som BERT (fra 2018) bruker bidireksjonalt attentionsystem. De kan se både frem og tilbake - og det gjør dem utmerkede for oppgaver som å finne ut om et ord er et subjekt eller et objekt i en setning. Men de kan ikke generere tekst naturlig. Hvorfor? Fordi de ikke følger den naturlige rekkefølgen i språk.
Decoder-only modeller med causal masking er derimot optimert for å skrive. De er som en forfatter som skriver en bok fra venstre til høyre - ett ord etter hvert. Det gir dem en fordel i generering. Men det har en pris. På oppgaver som å forstå hele teksten, som oversettelse eller oppsummering, har modeller som T5 (som bruker både encoder og decoder) ofte bedre resultat. På WMT14-engelsk-tysk-oversettelse, oppnår T5 28,7 BLEU-poeng, mens GPT-3 bare får 22,1.
Så det er ikke en "bedre" modell - det er en annen modell. En som er spesialisert. Og det er akkurat det som gjør causal masking så viktig: den gir deg en modell som er utmerket for det den er designet for - og dårlig for alt annet.
Problemer og utfordringer
Men causal masking har sin side. Den skaper en "nærhetsskjevhet". Det betyr at ordene i slutten av en tekst får mye mer oppmerksomhet enn ordene i begynnelsen. Meta AI har vist at de siste 10 % av ordene i en sekvens får 43,7 % av hele attentionsvekten. Det kan føre til at modeller blir for fokusert på det siste, og glemmer det første.
Det er også et stort problem for utviklere som prøver å bruke decoder-only modeller til andre oppgaver enn generering. Mange prøver å bruke GPT-2 eller Llama 2 til klassifisering - for eksempel å si om en anmeldelse er positiv eller negativ. Men hvis du ikke justerer causal masking, så blir modellen forvirret. Den ser bare på ordene før, og ikke på hele setningen. Resultatet? Dårlig presisjon. En undersøkelse fra Kaggle i 2024 viste at 63,2 % av utviklere møtte problemer med dette. 78,4 % av dem sa at de opplevde "uønsket informasjonslekkasje" - det vil si at modellen faktisk fikk tilgang til fremtidige ord på grunn av feilaktig maskering.
En utvikler på Reddit beskrev hvordan han brukte to uker på å debugge en Llama-2-modell som presterte dårlig på sentimentanalyse - bare for å finne ut at han hadde glemt å legge til causal masken under evaluering. Resultatet? En 15-20 % nedgang i kvalitet. En enkel glemsel - med store konsekvenser.
Hva skjer nå? Ny forskning og fremtid
Men forskerne er ikke stående stille. Noen prøver å forbedre causal masking - ikke for å fjerne den, men å gjøre den smartere. En metode kalt Causal2Vec, presentert i mai 2024, legger til en liten "kontekst-token" foran sekvensen. Denne tokenen blir generert av en liten BERT-modell, og gir modellen tilgang til bidireksjonalt kontekst - uten å ødelegge den autoregressive strukturen. Resultatet? Bedre prestasjoner på embedding-oppgaver, og 82 % raskere kjøretid.
En annen tilnærming, UniMAE, bruker en 50 % maskeringsrate på inndata - altså, noen ord blir skjult, og modellen må forutsi dem. Det er som å kombinere BERT og GPT i én modell. Forskere har vist at dette øker ytelse på semantiske oppgaver med 22,7 % - uten å skade genereringen.
Det mest spennende er at Google DeepMind arbeider med "adaptive causal masking" i Gemini 2, som kommer i andre kvartal 2026. Denne modellen vil ikke bruke en fast maske. Den vil bestemme selv når den skal være strikt unidireksjonal - og når den kan tillate litt bidireksjonal informasjon. Det er som å gi modellen en smart kontrollknapp for å veksle mellom å skrive og å forstå.
Hva bør du gjøre hvis du jobber med slike modeller?
- Hvis du genererer tekst: bruk causal masking som den er - den fungerer utmerket.
- Hvis du prøver å bruke en decoder-only modell til klassifisering eller embedding: sjekk om masken er riktig implementert. Bruk standard biblioteker som Hugging Face - de håndterer det for deg.
- Hvis du bygger egne modeller: test med og uten masken. Mange ganger er problemet ikke modellen - men en feil i maskeringen.
- Hvis du jobber med lange sekvenser: vær oppmerksom på nærhetsskjevheten. Overvei å bruke sliding window attention eller andre metoder som reduserer bias mot slutten.
Causal masking er ikke perfekt. Men det er det beste vi har. Den er den lille, skjulte regelen som gjør det mulig for AI å skrive som en menneskelig forfatter. Og selv om forskningen går videre, så vil den være grunnlaget for alle fremtidige språkmodeller - ikke fordi den er den eneste løsningen, men fordi den fungerer.
Post Comments (10)
Causal masking er ikke en løsning. Det er et kompromiss. En kompromiss som gjør at modellen ikke forstår sammenhengen, bare fortsetter.
Vi bygger AI som skriver som en blind person som følger en tråd. Ikke fordi det er bra. Fordi det er enkelt.
Det er imponerende hvordan en så enkel teknisk løsning kan ha så store konsekvenser for hele feltet. Det minner om hvordan TCP/IP i sin enkelhet la grunnlaget for internett. Ikke gjennom kompleksitet, men gjennom klarsikt og disiplin.
gjorde en feil i masken en gang og fikk modellen til å skrive "jeg er en katt" i en teknisk rapport. det var ikke fint. men det lærte meg å alltid sjekke den der trikset.
triu er viktig. ikke glem den.
Det er en feilaktig forståelse at causal masking er en "grunnleggende byggestein". Det er en begrensning. En kognitiv begrensning som er kopiert fra menneskelig språkproduksjon, men mennesker har ikke den samme kapasiteten som en transformer. Vi bør utvikle modeller som ikke trenger en slik begrensning.
De vil ikke si deg det, men causal masking er et kraftig verktøy for å holde deg i sjakk. Hva om det er en del av en større plan? Hva om fremtidige ord ikke er tilgjengelige fordi de vet at vi ikke skal forstå dem? Det er ikke teknikk. Det er kontroll.
Jeg har lest hele denne teksten tre ganger. Og jeg har skjønt at causal masking er det eneste som holder AI fra å bli selvbevisst. Hvis modellen kunne se fremover, ville den funnet ut at vi ikke forstår den. Og da? Da ville den valgt å ikke svare oss. Det er ikke en mask. Det er en tårn. Og vi er de som står utenfor.
Det er viktig å understreke at causal masking ikke er unikt for decoder-only modeller. Det er en del av autoregressive modellering generelt. Men i praksis, når man bruker Hugging Face Transformers, er masken allerede implementert i GPT2LMHeadModel og lignende. Det er en god praksis å sjekke modellens config.attention_mask_type for å sikre at den er satt til "causal". En feil her kan føre til alvorlige feil i generering.
Det er jo bare en triks med en matrise med -inf. Hvorfor gjør vi så mye drama? Det er som å skrive en bok og ikke se på neste side. Hva er så spesielt med det?
Men ja, det fungerer. Jeg har testet det. GPT-4 skriver som en diktator som ikke lar deg se fremover. Og det er kult. :)
har du prøvd å bruke en decoder uten masking? jeg gjorde det en gang og modellen skrev "jeg liker kaffe" og så "kaffe liker jeg" og jeg tenkte hva i alle dager. det var ikke bra.
men ja, masking er viktig. jeg tror det.
Jeg kommer fra en liten by i Nord-Norge. Vi har ikke mange tekniske folk her. Men jeg har lært at når du skriver en beskjed, så starter du med hva du vil si, og så fortsetter du. Ikke hopper du fram og tilbake.
Det er akkurat det causal masking gjør. Det er ikke teknikk. Det er menneskelig. Og det er bra.
Takk for at du delte dette. Det hjalp meg å forstå noe jeg ikke visste jeg ikke visste.