Moderne grote taalmodellen zijn gebaseerd op de transformer-architectuur. Deze modellen verwerken enorme hoeveelheden tekst en genereren antwoorden die opvallend menselijk overkomen. Een fundamenteel onderdeel van de werking van een transformer is de manier waarop het model omgaat met de volgorde van woorden. Zonder een specifiek mechanisme genaamd positional encoding zou een transformer namelijk volledig blind zijn voor de structuur en de volgorde van een zin.
In dit artikel leggen we uit waarom de basiscomponent van een transformer geen ingebouwde volgorde kent, wat er misgaat als positie-informatie ontbreekt, welke wiskundige oplossingen hiervoor zijn ontwikkeld en wat dit in de praktijk betekent voor het gebruik van taalmodellen.
Het probleem: Attention is permutatie-invariant
Om te begrijpen waarom positional encoding noodzakelijk is, moeten we kijken naar de kern van wat een transformer drijft: het self-attention mechanisme. Wanneer een tekst wordt ingevoerd, worden de woorden eerst omgezet in tokens via tokenisatie. Deze tokens worden vervolgens vertaald naar vectoren, oftewel embeddings.
Het attention-mechanisme berekent de relatie tussen elk paar tokens in een tekst. Het vergelijkt de vectoren van token A en token B door middel van een inwendig product (dot product). De wiskundige bewerking die hier plaatsvindt, behandelt de invoer als een verzameling losse elementen in plaats van als een opeenvolgende reeks. In de wiskunde noemt men deze eigenschap permutatie-invariantie.
Dit houdt in dat als je de tokens in een willekeurige volgorde aan de attention-laag voert, de berekende relaties tussen de individuele tokens exact gelijk blijven. Het model weet wel welke woorden aanwezig zijn, maar heeft geen enkel idee welk woord als eerste, tweede of laatste staat.
Oudere modellen, zoals Recurrent Neural Networks (RNN's), verwerkten tekst stapsgewijs van links naar rechts. Daardoor was volgorde automatisch ingebouwd. Transformers verwerken echter alle tokens tegelijkertijd om parallelle berekening op grafische kaarten mogelijk te maken. Die parallellie levert enorme snelheidswinst op, maar wist het natuurlijke gevoel voor volgorde uit.
Een concreet voorbeeld: Het belang van woordvolgorde
Taal is sterk afhankelijk van volgorde. Dezelfde verzameling woorden kan een totaal andere betekenis krijgen wanneer de volgorde verandert. Stel dat we de volgende twee zinnen invoeren in een model zonder positional encoding:
Zin A: De hond bijt de man.
Zin B: De man bijt de hond.
Beide zinnen bevatten exact dezelfde tokens: "De", "hond", "bijt", "de", "man". Voor een standaard attention-operatie zonder positie-informatie zijn zinnen A en B wiskundig identiek. De vectoren voor "hond" en "man" krijgen in beide gevallen exact dezelfde aandachts-scores toegewezen ten opzichte van "bijt".
Het gevolg is dat het model het cruciale verschil tussen de actor en het lijdend voorwerp niet kan onderscheiden. Zonder een signaal dat aangeeft welk token op positie 2 staat en welk token op positie 5, kan het model de semantische betekenis van de zin niet correct interpreteren. Positional encoding voegt dit essentiële signaal toe aan de embeddings van de tokens voordat ze de eerste attention-laag bereiken.
De evolutie van Positional Encoding technieken
In de loop der jaren zijn er verschillende methoden ontwikkeld om positie-informatie toe te voegen aan transformers. We bespreken de belangrijkste benaderingen, hun achterliggende gedachte en hun praktische eigenschappen.
1. Vaste Sinusoidale Encodings (Vaswani et al., 2017)
In de oorspronkelijke transformer-paper werd gekozen voor een vaste, wiskundige formule op basis van sinus- en cosinusfuncties met verschillende frequenties. Voor elke positie in de tekst wordt een unieke positie-vector gegenereerd. Deze vector wordt simpelweg opgeteld bij de bestaande embedding van het token.
- Het idee: Door golven van verschillende frequenties te gebruiken, krijgt elke positie een uniek patroon. Nabijgelegen posities hebben vectoren die sterk op elkaar lijken, terwijl ver uiteenliggende posities duidelijk verschillen.
- Waarom bedacht: Er hoefden geen extra parameters en gewichten getraind te worden voor positie. Bovendien hoopten de onderzoekers dat het model hierdoor kon extrapoleren naar langere teksten dan tijdens de training waren gezien.
- Praktisch gevolg: Het werkte goed voor de eerste generatie modellen, maar de aanname dat het model moeiteloos schaalde naar onbekende lengtes bleek in de praktijk tegen te vallen.
2. Geleerde Absolute Positional Encodings
Modellen zoals GPT-2 en BERT stapten over op een eenvoudiger principe: laat het model de positie-vectoren zelf aanleren tijdens het trainingsproces. Positie 1 krijgt een eigen vector die wordt bijgesteld via backpropagation, positie 2 eveneens, tot aan de gekozen maximale lengte (bijvoorbeeld 2048 tokens).
- Het idee: Het netwerk bepaalt zelf wat de meest optimale representatie is voor elke specifieke positie in de reeks.
- Waarom bedacht: Geleerde parameters presteerden op kortere reeksen vaak iets beter en stabieler dan de vaste wiskundige formules van sinusoidale encodings.
- Praktisch gevolg: De maximale reekslengte staat bij de training hard vast. Als een model is getraind met 2048 geleerde positie-embeddings, heeft het simpelweg geen vector voor positie 2049. Het model kan niet werken met langere teksten zonder opnieuw getraind te worden.
3. Relatieve en Roterende Encodings (RoPE en ALiBi)
Moderne taalmodellen zoals Llama en Mistral gebruiken vaak *Rotary Position Embedding* (RoPE) of *Attention with Linear Biases* (ALiBi). Deze methoden stappen af van het idee van 'absolute' posities (zoals "dit is token 5") en richten zich op de 'relatieve' afstand tussen tokens (zoals "token A staat 3 plekken voor token B").
- Het idee bij RoPE: In plaats van een positie-vector op te tellen bij de embedding, wordt de embedding-vector in de wiskundige ruimte gedraaid (geroteerd). De hoek van de rotatie is afhankelijk van de positie van het token. Het inwendige product tussen twee geroteerde vectoren bevat daardoor automatisch informatie over het verschil in positie tussen die twee tokens.
- Waarom bedacht: Relatieve afstanden zijn representatiever voor hoe taal werkt. De relatie tussen een bijvoeglijk naamwoord en een zelfstandig naamwoord is vergelijkbaar, ongeacht of ze aan het begin of in het midden van een pagina staan.
- Praktisch gevolg: Deze methoden bieden uitstekende prestaties en maken het makkelijker om modellen via slimme technieken (zoals RoPE-scaling) uit te breiden naar zeer grote contextlengtes.
Vergelijking van de technieken
| Type Encoding | Type Positie | Trainbare Parameters | Flexibiliteit bij Contextverlenging |
|---|---|---|---|
| Sinusoidaal | Absoluut | Nee (vaste formule) | Matig |
| Geleerd | Absoluut | Ja (vast aantal) | Slecht (harde limiet) |
| RoPE / ALiBi | Relatief | Nee (rotatie/bias) | Uitstekend (schaalbaar) |
Positional encoding en de maximale contextlengte
Het mechanisme voor positional encoding is direct gekoppeld aan het context window van een taalmodel. Wanneer een model getraind is op een specifieke lengte, bijvoorbeeld 4096 tokens, heeft het geleerd hoe aandacht verdeeld moet worden over relaties binnen die afstand.
Als men een model zomaar een tekst voert die langer is dan de getrainde contextlengte, treedt er prestatieverlies op. Dit verschijnsel noemt men het extrapolatieprobleem. Bij geleerde positional encodings ontbreken simpelweg de vectoren voor de hogere posities. Bij sinusoidale of roterende encodings ontstaan er andere problemen: het model krijgt rotatiehoeken of frequenties te verwerken die het tijdens de training nooit heeft gezien.
Hierdoor raakt het attention-mechanisme van de kaart. De aandachts-scores worden onvoorspelbaar, wat leidt tot onsamenhangende uitvoer, herhalingen of hallucinaties. Om de contextgrootte van bestaande modellen toch op te rekken zonder een volledige nieuwe training te starten, worden technieken toegepast zoals RoPE scaling of yarn. Deze technieken 'samendrukken' of herverdelen de positie-frequenties, zodat langere reeksen binnen het vertrouwde wiskundige bereik van het model vallen.
Wat u hier praktisch aan heeft
Voor gebruikers en ontwikkelaars die werken met taalmodellen heeft de werking van positional encoding concrete praktische implicaties:
- Selectie van modellen voor lange documenten: Als uw toepassing het verwerken van boeken, juridische dossiers of grote hoeveelheden code vereist, kiest u bij voorkeur modellen die gebruikmaken van moderne relatieve positional encodings zoals RoPE. Deze modellen behouden hun nauwkeurigheid beter over lange afstanden.
- Begrip van limieten bij prompting: Het simpelweg oprekken van het contextvenster via software-instellingen kan leiden tot verminderde precisie als het model hier niet voor is geoptimaliseerd. Dit heeft invloed op uw strategie voor context management.
- Inzicht in instructievolgorde: Omdat relatieve posities bepalend zijn voor hoe informatie wordt gewogen, maakt de plaatsing van instructies in een prompt uit. Het meesturen van belangrijke instructies aan het begin of het absolute einde van een lange prompt levert in de praktijk vaak betere resultaten op dan plaatsing in het midden.
Positional encoding is een elegant voorbeeld van hoe een fundamentele beperking van een neuraal netwerk — het ontbreken van volgorde in matrixberekeningen — op een gestructureerde manier is opgelost. Het vormt een onmisbare bouwsteen die transformers in staat stelt om de ingewikkelde grammoticale en semantische structuren van menselijke taal te begrijpen.

