Har du noen gang lurt på hvordan en Transformer er en neural nettverksarkitektur som behandler sekvenser uten rekursjon eller konvolusjoner egentlig vet hvilken ordstilling et ord har? Svaret ligger i noe vi kaller posisjonsekoding. Uten dette ville modellen behandlet setninger som en uordnet haug med ord, der "katt spiser fisk" ville bety det samme som "fisk spiser katt". I denne artikkelen ser vi nærmere på de to klassiske metodene - sinusoidal og lært posisjonsekoding - og hvorfor moderne store språkmodeller (LLMs) ofte bruker helt andre teknikker som RoPE og ALiBi.
Hvorfor trenger Transformers posisjonsekoding?
Kjernen i en Transformer er selv-oppmerksomhetsmekanismen (self-attention). Denne mekanismen er permutasjonsinvariant, noe betyr at den ikke bryr seg om rekkefølgen på inndataene. Hvis du bytter plass på to token i input-sekvensen, vil output-væktorene forblive identiske, bare ombyttet tilsvarende. For oversettelse eller tekstgenerering er dette katastrofalt. Vi må derfor injisere informasjon om posisjon direkte inn i representasjonen av hvert token.
I den opprinnelige artikkelen "Attention is All You Need" fra 2017 testet forskerne både sinusoidale funksjoner og lærbare vektorer. De fant at begge gav omtrent like gode resultater på oversettelsesoppgaver, men valgte sinusoidale fordi de teoretisk sett kunne håndtere lengre sekvenser enn de modellene var trent på.
Sinusoidal posisjonsekoding: Den matematiske tilnærmingen
Sinusoidal positional encoding er en fast, ikke-lærbare metode som bruker sinus- og cosinus-funksjoner for å lage unike mønstre for hver posisjon. Formelen ser slik ut:
- For partallige dimensjoner: $PE(pos, 2i) = \sin(pos / 10000^{2i/d_{model}})$
- For oddetallige dimensjoner: $PE(pos, 2i+1) = \cos(pos / 10000^{2i/d_{model}})$
Her representerer $pos$ posisjonen i sekvensen, og $i$ dimensjonsindeksen. Fordelen med denne metoden er at den krever ingen ekstra parametre som skal trenes. Det er ren matematikk. Dessuten kan den generelt generalisere til sekvenser som er lengre enn treningssettet, noe som var et stort pluss i teorien. I praksis viser imidlertid data at ytelsen synker markant når sekvenslengden overstiger 2048 token, med nedganger på 30-40 % ifølge tester i ALiBi-artikkelen.
Lært posisjonsekoding: La modellen finne mønsteret
Motsetningen til sinusoidal koding er Learned positional embeddings er treningbare vektorer lagret i en tabell, der hver posisjon har sin egen unike vektor som justeres under treningen. Tenk deg en lookup-tabell hvor rad 1 er vektoren for første ord, rad 2 for andre ord, og så videre. Disse vektorene initialiseres tilfeldig og endres gjennom backpropagation.
Den store ulempen her er stivheten. Hvis du trener en modell med maksimal sekvenslengde på 512 token, har du bare 512 rader i tabellen. Vil du nå bruke 1024 token, må du enten gjetta nye vektorer eller, verre, trene om hele modellen. Dette skjedde faktisk da GPT-3 ble oppgradert til GPT-3.5; arkitekturen måtte endres for å støtte lengre kontekstvinduer fordi de lærte embeddingene var begrenset.
RoPE og ALiBi: Moderne alternativer som har tatt over
Dagens toppmodeller som Llama, PaLM og MPT bruker sjelden rene sinusoidale eller lærte koder. Istedominerer to nyere teknikker: RoPE og ALiBi.
RoPE (Rotary Position Embedding) er en metode som roterer query- og key-vektorer basert på deres relative posisjon, slik at innerproduktet avhenger av avstanden mellom tokenene. Introdusert i RoFormer-paperet i 2021, gir RoPE en elegant måte å håndtere relativ posisjon på. Matematisk sett blir innerproduktet mellom token på posisjon m og n en funksjon av $|m-n|$. Dette gjør at modellen lett kan forstå at to ord er "naboer" uansett hvor i teksten de befinner seg. RoPE tillater også ekstrapolering til mye lengre sekvenser enn treningsdataene, noe som er kritisk for lange dokumenter.
ALiBi (Attention with Linear Biases) er en metode som eliminerer posisjonsembeddings helt ved å legge til en lineær bias-term i oppmerksomhetsscoren. ALiBi er ekstremt enkel å implementere - ofte bare én linje kode - og fungerer svært godt for lange sekvenser uten behov for finjustering. Mange utviklere foretrekker ALiBi for dens enkelhet, spesielt i ressurseffektive miljøer.
| Teknikk | Parametre | Ekstrapolasjonsevne | Implementasjonskompleksitet | Anvendelse i 2025 |
|---|---|---|---|---|
| Sinusoidal | Ingen | Dårlig > 2048 token | Lav | ~28 % (utdanning/legacy) |
| Lært | Høy (tabell) | Begrenset til treningslengde | Lav | ~15 % (spesifikke domener) |
| RoPE | Ingen (rotasjon) | God (opp til 5x lengde) | Middels | ~87 % (nye LLMs) |
| ALiBi | Lav (bias-skalarer) | God | Veldig lav | Populær i open-source |
Praktiske utfordringer ved implementering
Å bytte fra sinusoidal til RoPE er ikke alltid smertefritt. En GitHub-issue fra Hugging Face Transformers rapporterte at integreringen tok tre person-dager pga. subtile feil i dimensjonene til rotasjonsmatrisene. Likevel rapporterte brukere en 22 % forbedring i langkontekst-oppgaver. På den annen side var ALiBi mye lettere å sette opp, med kun fem linjer endring i oppmerksomhetsberegningen, og beholdt 97 % av RoPEs ytning på medisinsk tekstkorpus.
En vanlig felle er å glemme å justere læreraten når man bruker RoPE med små batch-størrelser (<4), noe som kan føre til ustabil trening. For ALiBi er den største risikoen feilskalering av bias-termen, noe som kan gjøre modellen for sensitiv for posisjon.
Fremtidens retning: Dynamisk posisjon
Bransjen beveger seg mot mer dynamiske løsninger. Googles "Adaptive RoPE" i PaLM 2 justerer rotasjonsfrekvenser basert på innholdet, mens Metas "RoPE Scaling" i Llama 3 komprimerer frekvenser for å støtte kontekst på opptil én million token med kun 15 % ytelsesnedgang. Forskere spekulerer i "Neural Positional Encoding", der et lite neuralt nettverk genererer posisjonsembeddings basert på selve teksten. Dette vil sannsynligvis bli standard innen 2028, ifølge ARK Invests analyse.
Ofte stilte spørsmål
Hvilken posisjonsekoding bør jeg bruke for min neste LLM?
For de fleste moderne applikasjoner anbefales RoPE på grunn av sin balanserte ytning og evne til å håndtere lange sekvenser. Hvis du jobber med begrensede ressurser eller ønsker enklere implementering, er ALiBi et utmerket alternativ. Unngå sinusoidal og lærte koder med mindre du har en spesifikk grunn til det, som kortfikset sekvenslengde i spesialiserte domener.
Er sinusoidal posisjonsekoding fortsatt relevant i 2026?
Ja, men primært i utdanningskontekster og legacy-systemer. Omkring 28 % av alle transformer-implementasjoner bruker fortsatt sinusoidal koding, ifølge Stack Overflow Developer Survey 2025. Den er enkel å forstå og implementere, men mangler den fleksibiliteten moderne LLMs krever for lange kontekstvinduer.
Hva er hovedforskjellen mellom RoPE og ALiBi?
RoPE opererer ved å rotere query- og key-vektorer, noe som krever endringer i oppmerksomhetsberegningen men gir presis relativ posisjonshåndtering. ALiBi legger til en lineær bias i oppmerksomhetsscoren, noe som er enklere å implementere men kan være mindre presist for svært lange sekvenser uten finjustering. RoPE er dominerende i toppmodeller, mens ALiBi er populær i open-source-prosjekter for sin enkelhet.
Kan jeg kombinere sinusoidal og RoPE?
Det er teknisk mulig, men sjelden nødvendig. De fleste moderne arkitekturer velger én metode per lag. Blanding av absolutte (sinusoidal) og relative (RoPE) signaler kan introdusere konflikter i representasjonsrommet. Hvis du trenger å teste, start med RoPE alene, da det gir best ytning i de fleste benchmark-tester.
Hvorfor faller ytelsen med sinusoidal koding ved lange sekvenser?
Sinusoidal koding er designet for å gi unike mønstre, men frekvensene er faste. Når sekvensen blir veldig lang, kan mønstrene begynne å se likt ut for posisjoner langt unna hverandre, noe som forvirrer modellen. I tillegg mangler den eksplisitt relativ posisjonshåndtering, noe som gjør det vanskelig for modellen å generalisere utover treningslengden. RoPE løser dette ved å fokusere på avstand mellom tokenene snarere enn absolutt posisjon.