Positional encoding in transformers

Waarom positie belangrijk is

Transformers verwerken sequenties parallel, in tegenstelling tot RNN's die sequentieel werken. Hierdoor hebben ze geen inherent besef van de volgorde van tokens. Zonder positional encoding zou het model 'de hond bijt de man' en 'de man bijt de hond' als identiek beschouwen. Positional encoding lost dit op door aan elke token-embedding een vector toe te voegen die de positie in de sequentie codeert. De originele Transformer gebruikte sinus- en cosinusfuncties van verschillende frequenties. Voor positie pos en dimensie i wordt de encoding berekend met sin(pos/10000^(2i/d)) en cos(pos/10000^(2i/d)). Dit heeft als voordeel dat het model relatieve posities kan leren, omdat de encoding voor pos+k een lineaire functie is van de encoding voor pos. Er bestaan ook geleerde positional embeddings, zoals bij BERT, waarbij de posities als parameters worden getraind. Deze presteren vergelijkbaar, maar generaliseren slechter naar sequenties die langer zijn dan tijdens de training. RoPE (Rotary Positional Embedding) is een recente ontwikkeling die de aandachtsovergangen roteert op basis van positie. ALiBi voegt een lineaire bias toe aan de attention-scores. Positional encoding is essentieel voor de prestaties van Transformers.

Varianten en uitdagingen

Er zijn verschillende soorten positional encoding. Absolute positional encoding geeft elke positie een unieke vector. Relatieve positional encoding codeert de afstand tussen tokens, wat beter generaliseert naar langere sequenties. T5 gebruikt relative position biases in de attention-lagen. RoPE wordt gebruikt in modellen zoals Llama en GPT-NeoX en codeert positie door de query- en key-vectoren te roteren. ALiBi voegt een simpele bias toe die evenredig is met de afstand, wat verrassend goed werkt. Een uitdaging is extrapolatie: modellen getraind op sequenties van lengte 512 presteren vaak slecht op sequenties van lengte 1024. Technieken zoals position interpolation en NTK-aware scaling helpen om modellen langer te maken dan waarvoor ze zijn getraind. Positional encoding is een actief onderzoeksgebied, vooral naarmate modellen grotere contextvensters krijgen. Het is een cruciaal onderdeel van de Transformer-architectuur dat vaak over het hoofd wordt gezien, maar essentieel is voor het begrijpen van sequentiële data.

Dit toepassen in
jouw bedrijf?

We vertalen het naar jouw processen en laten binnen een week een werkend prototype zien.