Lernpfad
Stell dir vor, du liest einen Roman, in dem jedes Wort zufällig durcheinandergewürfelt wurde. Selbst wenn du jedes einzelne Wort verstehst, geht die Handlung verloren – denn die Bedeutung entsteht erst durch die Reihenfolge der Wörter. Als Ingenieurinnen und Ingenieure begannen, Large Language Models (LLMs) zu entwickeln, standen sie vor einem ähnlichen Problem: Wie bringt man einem Modell die Abfolge von Wörtern bei, wenn sein Kernmechanismus alles gleichzeitig verarbeitet?
Genau hier kommt die Positionskodierung ins Spiel. In diesem Artikel schauen wir uns an, wie Positionskodierung funktioniert und wie sie Transformern ein Gefühl für Ordnung gibt. Wir verfolgen ihre Entwicklung von den ursprünglichen sinusförmigen Formeln bis hin zu modernen Rotations-Embeddings und zeigen, wie du sie in deinem nächsten Machine-Learning-Projekt umsetzt. Wenn dir die Architektur noch neu ist, empfehle ich unseren Leitfaden dazu, wie Transformer funktionieren.
Deep Learning in Python beherrschen
Was ist Positionskodierung?
Positionskodierung ist eine Technik, mit der neuronale Netze die Reihenfolge sequenzieller Eingaben verstehen. Sie wirkt wie ein Koordinatensystem, das die relative oder absolute Position eines Tokens repräsentiert und mit der üblichen Datenrepräsentation verschmolzen wird.
Bevor Text in ein neuronales Netz eingeht, werden Wörter in kontinuierliche numerische Formate umgewandelt, sogenannte Embeddings. Standard-Embeddings erfassen allerdings nur semantische Bedeutung – sie sagen nichts darüber aus, wo ein Wort im Text steht. Wie dieser Prozess genau funktioniert, lernst du in unserem Kurs Introduction to Embeddings with the OpenAI API.
Eine Positionskodierung ist eine zusätzliche mathematische Schicht, die direkt zu diesen Token-Embeddings addiert wird. Durch die Kombination der semantischen Repräsentation mit einem Positionsstempel kann das Transformermodell identische Wörter unterscheiden, die an unterschiedlichen Stellen im Satz erscheinen.
Das Problem der Permutationsinvarianz
Sequenzielle Daten hängen stark von der Ordnung ab. Im natürlichen Sprachgebrauch bedeutet „the dog bit the man“ etwas völlig anderes als „the man bit the dog“.

Historisch haben Recurrent Neural Networks (RNNs) und Long Short-Term Memory-Netze (LSTMs) das von sich aus abgedeckt. Sie verarbeiten Tokens nacheinander, das heißt, das Netz verarbeitet das zweite Wort erst, nachdem es das erste abgeschlossen hat. Ähnlich nutzen Convolutional Neural Networks (CNNs) lokale Sliding Windows, die die räumliche Anordnung von Pixeln oder benachbarten Wörtern erfassen.
Transformer geben die sequentielle Verarbeitung komplett auf. Sie verarbeiten alle Tokens parallel. Der Kern eines Transformers ist der Self-Attention-Mechanismus, der paarweise Beziehungswerte berechnet – zwischen jedem einzelnen Token der Sequenz, gleichzeitig. Mathematisch ist Self-Attention permutationsinvariant. Wenn du die Eingabereihenfolge durchmischst, liefert der Mechanismus für die Wortpaare identische Aufmerksamkeitswerte.
Ohne einen Mechanismus, der Ordnung bewahrt, verliert das Modell alle Sequenzinformationen. Die Semantik zerfällt zu einem ungeordneten „Bag of Words“. Positionskodierung löst dieses Problem, indem sie die Eingangsvektoren so verändert, dass Self-Attention Tokens an Position 1 anders wahrnimmt als Tokens an Position 10.
Wie funktioniert Positionskodierung?
Positionskodierung modifiziert die Eingabe-Token-Vektoren mathematisch, bevor sie die Self-Attention-Schichten erreichen. So berechnet das Modell Beziehungen basierend auf Bedeutung und Position.
Bauen wir etwas Intuition auf: Stell dir Standard-Token-Embeddings wie Namensschilder auf einer Konferenz vor. Das Namensschild sagt, wer die Person ist – aber wo sie sitzt, ändert nicht, wer sie ist oder wie sie zu anderen steht. Positionskodierung ist wie eine Sitzplatznummer auf dem Namensschild. Kombiniert weißt du, wer die Person ist und wo sie sitzt. Das liefert Kontext für mögliche Interaktionen.
Im Transformer geschieht diese Kombination typischerweise per elementweiser Addition. Das Modell addiert zum semantischen Embedding-Vektor eines Wortes einen Positionskodierungsvektor gleicher Größe. Der resultierende Vektor enthält eine feine Modulation, die nachfolgende Schichten als räumliche Koordinaten interpretieren lernen.
Beispielfall
Schauen wir ein vereinfachtes Beispiel an. Wir haben einen kleinen Embedding-Raum mit Dimension 4. Wir wollen das Wort „DataCamp“ an Position 0 unserer Sequenz verarbeiten.
- Semantisches Embedding: Das Netz holt das Embedding für „DataCamp“, z. B. [0.51, -0.22, 0.88, 0.14].
- Positionskodierung: Die Formel erzeugt einen Koordinatenvektor für Position 0. Angenommen, er lautet [0.00, 1.00, 0.00, 1.00].
- Kombination: Wir addieren beide Vektoren elementweise.
- Finale Eingabe: Der Forward-Pass erhält [0.51, 0.78, 0.88, 1.14].
Selbst wenn derselbe Token „DataCamp“ später an Position 5 auftaucht, ist der Positionsvektor ein anderer. Für Self-Attention sieht der finale Eingabevektor daher komplett anders aus.

Sinusförmige Positionskodierung
Die ursprüngliche „Attention Is All You Need“-Arbeit stellte eine brilliante Methode vor, Positionsvektoren mit einfacher Trigonometrie zu erzeugen. Dieser Ansatz benötigt keine ML-Gewichte und basiert vollständig auf festen mathematischen Funktionen.
Mathematische Grundlage
Sinusförmige Positionskodierung nutzt Sinus- und Kosinusfunktionen mit unterschiedlichen Frequenzen. Für eine gegebene Position (pos) und einen Dimensionsindex (i) im Embedding-Vektor gilt:
-
Für gerade Dimensionen (
2i):PE(pos, 2i) = sin(pos / 10000^(2i/dmodel)) -
Für ungerade Dimensionen (
2i+1):PE(pos, 2i+1) = cos(pos / 10000^(2i/dmodel))
Dabei ist dmodel die Gesamtdimension des Embedding-Vektors. Entlang der Dimensionen von Index 0 bis dmodel steigt die Wellenlänge der Sinusfunktionen geometrisch an.
Vorteile und Eigenschaften
Diese geometrische Progression der Frequenzen bietet mehrere klare Vorteile.
- Sinus und Kosinus sind zwischen -1 und 1 beschränkt. Dadurch überlagern Positionskodierungen die semantischen Embeddings numerisch nicht.
- Die Funktionen sind periodisch. Dank trigonometrischer Additionssätze kann eine lineare Transformation die Positionskodierung einer Zukunftsposition (
pos + k) leicht als Funktion der aktuellen Position (pos) darstellen. Das ermöglicht es dem Modell, relative Positionen zu lernen. - Sinus-Kodierung nutzt feste Parameter. Es braucht keine lernbaren Gewichte, was Speicher spart. Da es sich um kontinuierliche Funktionen handelt, besitzt das Modell eine theoretische Fähigkeit zur Extrapolation – also Positionen über die Trainingslänge hinaus abzubilden.
Visualisierung
Zum Verständnis hilft oft eine Heatmap.

Die x-Achse zeigt die Embedding-Dimension, die y-Achse die Position des Tokens.
Die unteren Dimensionen links oszillieren schnell zwischen negativen und positiven Werten und unterscheiden nahe Positionen. Mit höherem Dimensionsindex wird die Wellenlänge größer und die Kodierung ändert sich langsamer – sie erfasst Unterschiede über größere Distanzen.
Für die hier gezeigten 50 Positionen wirken viele höhere Dimensionen fast wie gleichmäßige Vertikalstreifen. Das liegt daran, dass ihre Wellenlängen so lang sind, dass die Sinuswerte nahe 0 und die Kosinuswerte nahe 1 bleiben – nicht exakt 0 bzw. 1. Die abwechselnden Streifen spiegeln benachbarte Sinus–Kosinus-Dimensionen wider, keine einfache Binärkodierung. Über längere Sequenzen würden auch diese Dimensionen deutlich variieren.
Kurz: Unterschiedliche Frequenzen liefern Positionsinformation auf mehreren Skalen. Schnell wechselnde Dimensionen erfassen feine Unterschiede benachbarter Tokens, langsame Dimensionen die grobe Lage in langen Sequenzen.
Gelernte Positionskodierung
So elegant feste Formeln sind – moderne Deep-Learning-Architekturen lernen optimale Repräsentationen oft aus Daten. Gelernte Positions-Embeddings verlagern die gesamte Layoutaufgabe in das Training.
Konzept und Umsetzung
Statt Positionswerte mit Sinus und Kosinus fest vorzugeben, behandelt man Positionskoordinaten als ganz normale lernbare Parameter.
Das Modell initialisiert eine leere Embedding-Matrix, in der jede Zeile einer konkreten Sequenzposition entspricht. Im üblichen Backpropagation-Training aktualisiert das Netz diese Positionsgewichte zusammen mit den semantischen Token-Embeddings, um die Loss-Funktion zu minimieren.
Vergleichende Vorteile
Der Hauptvorteil gelernter Positions-Embeddings ist extreme Flexibilität. Das Modell kann genau die Repräsentationen lernen, die für einen spezifischen Datensatz am besten funktionieren. Architekturen wie BERT und GPT-2 haben diesen Ansatz populär gemacht – dank hoher Anpassungsfähigkeit und starker Performance.
Grenzen und Herausforderungen
Die größte Einschränkung ist eine harte Grenze bei der Sequenzlänge. Wenn ein Modell mit maximal 2.048 gelernten Positionsvektoren trainiert wurde, kann es physisch kein Dokument mit 2.049 Tokens verarbeiten.
Diese Beschränkung behindert Extrapolation und erfordert oft teures Retraining, um das Kontextfenster zu erweitern.
Relative Positionskodierung
Mit wachsender Dokumentlänge erkannten Entwicklerinnen und Entwickler: Die absolute Position eines Wortes ist oft weniger wichtig als sein relativer Abstand zu anderen Wörtern.
Konzeptueller Wechsel zu relativen Positionen
Betrachte den Ausdruck „the rapid advancement of AI“. Die grammatische Beziehung zwischen „advancement“ und „AI“ bleibt gleich – egal ob am Anfang oder Ende eines Dokuments. Relative Positionskodierung verzichtet daher auf absolute Gitterkoordinaten und fokussiert ausschließlich die Distanz zwischen interagierenden Tokens.
Implementierung in Attention-Mechanismen
Für relative Kodierungen wird die Berechnung der Attention-Werte direkt angepasst – statt die Eingabe-Embeddings ganz am Anfang zu verändern.
Bei der Berechnung zwischen „Query“- und „Key“-Matrix fließt ein zusätzlicher gelernter Bias ein, der den relativen Abstand repräsentiert. Diese Modifikation gewährleistet Schichtinvarianz im Text. Für Details zu diesen Matrizen lies unseren Leitfaden zum Attention-Mechanismus in LLMs.
Praktische Trade-offs
Dieser Ansatz liefert sehr präzises Kontextverständnis, bringt aber hohen Rechenaufwand mit sich. Für jeden Attention-Head einzigartige Distanzmatrizen zu berechnen, erhöht den Speicherverbrauch stark und erschwert Caching-Mechanismen für schnelle Textgenerierung.
Absolute vs. relative Positionsinformation
Die Wahl zwischen absolut und relativ hängt von der Aufgabe ab.
- Absolute Kodierung glänzt, wenn das Layout streng ist und schnelle Ausführung Priorität hat.
- Relative Kodierung ist überlegen bei langen Texten, wo Grammatik eher vom lokalen Abstand als von absoluten Dokumentkoordinaten abhängt.
Rotary Position Embedding (RoPE)
Auf der Suche nach besseren Transformer-Architekturen entstand Rotary Position Embedding (RoPE). Es vereint die Vorteile absoluter und relativer Positionskodierung und ist schnell zum Industriestandard geworden.
Innovativer Ansatz
RoPE vereint absolute Position und relative Distanzen durch Rotationen. Statt einen Vektor zu den Embeddings zu addieren oder schwere Biases in die Attention zu bringen, bildet RoPE den Embedding-Vektor in die komplexe Ebene ab und rotiert ihn um einen Winkel. Dieser Winkel hängt strikt von der absoluten Position des Tokens ab.

Mathematische Einsichten
Im 2D-Raum erfolgt die Rotation mit einer Standard-Rotationsmatrix. In höheren Dimensionen fasst RoPE die Embedding-Dimensionen paarweise zusammen und wendet für jedes Paar eine eigene 2D-Rotation an – basierend auf dem Positionsindex.
Durch die Geometrie von Rotationsmatrizen hängt das Skalarprodukt eines rotierten Query-Vektors mit einem rotierten Key-Vektor nur vom relativen Winkel ab. So nutzt RoPE eine absolute Abbildung, um natürliche relative Distanzen zu kodieren.
RoPE vs. sinusförmige Kodierung
Wie die Grafik zeigt, verändert die sinusförmige Kodierung Betrag und Richtung des Originalvektors. RoPE erhält den Betrag und benötigt zur Bestimmung relativer Distanzen nur den Winkel zwischen zwei Positionen.
Attention With Linear Biases (ALiBi)
Während RoPE auf komplexer Rotationsmathematik beruht, geht Attention with Linear Biases (ALiBi) einen ganz anderen Weg.
Einfachheit und Effizienz
ALiBi verzichtet vollständig darauf, Positionsinformationen in die anfänglichen Token-Embeddings einzubetten. Die Wort-Embeddings gehen unverändert in den Transformer.
Stattdessen greift ALiBi ganz am Ende der Attention-Berechnung ein: Unmittelbar vor der Softmax-Funktion subtrahiert ALiBi eine statische Strafe, die proportional zur Distanz zwischen zwei Tokens ist. Je weiter zwei Wörter auseinanderliegen, desto größer der Abzug vom Attention-Score.
Performance
Die Methode ist einfach zu implementieren und sehr effizient. Der größte Vorteil: Sie ist extrem stark bei Längen-Extrapolation. Ein mit ALiBi auf Sequenzen von 1.024 Tokens trainiertes Modell kann problemlos zusammenhängenden Text auf doppelt so langen Sequenzen generieren – ohne abzustürzen.
Wenn du weitere fortgeschrittene Techniken für schnelle Textgenerierung und Inferenz erkunden willst, lies unseren Leitfaden zu speculative decoding.
Welche Positionskodierung wann?
Starte bei deinem Use Case – wähle dann die passende Methode. Manchmal ist es eine, manchmal eine Kombination.
- Du willst eine einfache Baseline ohne Parameter: Sinusförmig (feste Formeln, nichts zu trainieren).
- Deine Sequenzlänge ist fix und du willst maximale Performance auf einem Datensatz: Gelernt.
- Du musst längere Sequenzen verarbeiten als im Training: RoPE ist die stärkste Option unter den extrapolierenden Techniken.
- Grammatik hängt vom Abstand der Tokens ab, nicht von ihrer absoluten Position: Relativ oder RoPE.
- Du baust ein modernes General-Purpose-LLM: RoPE.
- Längen-Extrapolation ist die Top-Priorität und du willst die einfachste Implementierung: ALiBi.
- Du willst Vorteile relativer Positionen ohne Speicher- und Caching-Overhead: RoPE (relative Kodierung ist teurer).
Praktische Umsetzung und Architekturfragen
Zwischen Theorie und Praxis zu vermitteln heißt, Positionskodierungen sauber in Codebasen zu integrieren und architektonische Grenzen zu managen.
Positionskodierung in Transformern implementieren
In Frameworks wie PyTorch legen Entwicklerinnen und Entwickler typischerweise ein eigenes Modul an. Dieses erzeugt die Kodierungsmatrix einmalig und registriert sie als Buffer, damit sie sich beim Backpropagation-Update nicht verändert.
Unten siehst du eine gängige Forward-Implementierung mit sinusförmigen Kodierungen. Die Encodings werden einmal per Sinus- und Kosinusformeln berechnet und ändern sich nie im Training – deshalb liegen sie im Buffer statt als lernbare Parameter (und verursachen keine Trainingskosten).
import torch
import torch.nn as nn
import math
class PositionalEncoding(nn.Module):
def __init__(self, d_model: int, max_len: int = 5000):
super().__init__()
pe = torch.zeros(max_len, d_model)
position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
# Calculate the division term for frequencies
div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
# Apply sine to even indices and cosine to odd indices
pe[:, 0::2] = torch.sin(position * div_term)
pe[:, 1::2] = torch.cos(position * div_term)
pe = pe.unsqueeze(0)
# Register as a buffer
self.register_buffer('pe', pe)
def forward(self, x: torch.Tensor) -> torch.Tensor:
# Add positional encoding directly to the input embeddings
seq_len = x.size(1)
x = x + self.pe[:, :seq_len, :]
return x
In __init__ berechnet das Modul die Tabelle bis max_len Positionen vor: position ist eine Spalte mit Indizes (0, 1, 2, …) und div_term sind die Frequenzen, also effektiv 1 / 10000^(2i/d_model); niedrige Dimensionen erhalten schnelle Wellen, hohe langsame.
Mit sin für gerade Dimensionen (0::2) und cos für ungerade (1::2) wird die Tabelle gefüllt. forward erledigt zur Laufzeit nur eins: auf Sequenzlänge zuschneiden und elementweise zu den Token-Embeddings addieren. Das Modul nimmt eine Batch-First-Form [batch, seq_len, d_model] an, daher wird in Dimension 1 geschnitten.
Positionsbias und das Lost-in-the-Middle-Phänomen
Ein unbeabsichtigter Nebeneffekt sehr langer Sequenzen ist Positionsbias – oft sichtbar als „Lost in the Middle“. Bei langen Dokumenten merken sich Sprachmodelle Fakten vom Anfang und Ende eines Prompts deutlich besser als aus der Mitte. Das klingt vertraut, denn menschliches Gedächtnis funktioniert ähnlich (zumindest bei mir; bitte sag mir, ich bin nicht die Einzige/der Einzige, die/der Anfänge und Enden besser behält!).
Die Theorie lautet, dass der Attention-Mechanismus durch irrelevanten Kontext überlastet wird und sich daher an frühe Tokens (die die Anweisung setzen) und die neuesten Tokens (frisch im Gedächtnis) anheftet. Um diesen Bias zu mildern, setzen Entwicklerinnen und Entwickler auf fortgeschrittene Chunking-Strategien und semantische Retrievalsysteme.
Positionskodierung für Spezialdomänen
Transformer sind längst nicht mehr nur Textmodellen vorbehalten. Das Konzept der Positionskodierung passt sich schnell an unterschiedliche Datentypen in mehreren Domänen an.
Bei Vision-Transformern werden Bilder in Patch-Gitter zerlegt. Eine simple 1D-Sequenzkodierung erfasst räumliche Nähe in 2D nicht. Daher nutzen Vision-Modelle häufig 2D-gelernte Positionskodierungen für X- und Y-Koordinaten eines Bildpatches.
Ähnliche Anpassungen gibt es für kontinuierliche Zeitreihenmodelle, in denen spezialisierte Kodierungen zeitliche Abstände, Saisonalität und Timestamps abbilden.
Weiterführende Forschung zur Positionskodierung
Da der Wettlauf um größere Kontextfenster Fahrt aufnimmt, bleibt die Verfeinerung des Positionsverständnisses ein zentrales Forschungsthema im Machine Learning.
Längenextrapolation und Kontexterweiterung
Heute erwarten Nutzerinnen und Nutzer riesige Kontextfenster – ganze Codebasen oder Romanreihen auf einmal. Da Training von Grund auf mit sehr langen Sequenzen zu teuer ist, setzt die Forschung auf Kontexterweiterung.
Methoden wie Positionsinterpolation komprimieren Positionskoordinaten langer Sequenzen mathematisch in den Bereich der ursprünglichen Trainingslänge. Adaptive Verfahren wie YaRN justieren die Rotationsfrequenzen der RoPE-Parameter dynamisch, um das Distanzverständnis des Modells nahtlos zu strecken.
Transformer ohne explizite Positionskodierung
Überraschend deuten einige Arbeiten darauf hin, dass explizite Positionskodierung nicht immer zwingend nötig ist. In rein dekodierenden Kausal-Sprachmodellen verrät das Standard-Causal-Masking (Tokens dürfen nur nach hinten schauen) bereits zeitliche Ordnung.
Das heißt, es könnte möglich sein, Positionsregeln implizit allein aus dem Causal-Mask zu lernen – durch gezieltes Tuning der Temperatur und architektonische Anpassungen.
Herausforderungen und Ausblick
Die große Gretchenfrage bleibt der Trade-off zwischen passgenauer Optimierung (Top-Performance für eine spezifische Sequenzlänge) und perfekter Extrapolation (allgemeine Gültigkeit über beliebige Längen).
Ein Schwerpunkt liegt auf multimodaler Kodierung. Ziel ist, universelle Positionsrepräsentationen zu schaffen, die 3D-Video-Koordinaten mit Text- und Audioströmen verbinden – für die nächste Generation KI-Modelle.
Fazit
Positionskodierung schlägt die Brücke zwischen paralleler Verarbeitung und sequentiellem Verständnis und ermöglicht Modelle, große Datenmengen geordnet zu verarbeiten. Wir haben gesehen, wie gelernte und relative Embeddings enorme Flexibilität bieten und wie moderne Ansätze wie RoPE und ALiBi mathematische Eleganz mit Recheneffizienz verbinden.
Während Kontextfenster von ein paar Tausend Tokens auf Millionen anwachsen, bleibt der einfache mathematische Schritt, einem Netz genau zu sagen, wo etwas steht, ein Kernstück des Modelldesigns.
Wenn du tiefer einsteigen und praktisch arbeiten willst, empfehle ich unseren Developing Large Language Models-Lernpfad.
Positionskodierung: FAQs
Was ist Positionskodierung im Machine Learning?
Positionskodierung ist eine mathematische Technik, die neuronalen Netzen Informationen über die Reihenfolge von Daten in einer Sequenz liefert.
Warum brauchen Transformer-Modelle Positionskodierung?
Anders als ältere Recurrent Neural Networks, die Daten Schritt für Schritt verarbeiten, verarbeiten Transformer alles gleichzeitig per Self-Attention. Da Self-Attention von Natur aus permutationsinvariant ist, behandelt sie die Eingabe wie einen ungeordneten „Bag of Words“. Positionskodierung löst das, indem sie der Eingabe vor der Verarbeitung sequenzielle Koordinaten hinzufügt.
Was ist der Unterschied zwischen absoluter und relativer Positionskodierung?
Absolute Positionskodierung weist einem Token eine feste Koordinate basierend auf seinem genauen Index in der Sequenz zu. Relative Positionskodierung ignoriert die exakte Gitterposition und berechnet stattdessen die Distanz zwischen zwei interagierenden Tokens – sie fokussiert ausschließlich ihren kontextuellen Versatz.
Was ist Rotary Position Embedding (RoPE)?
RoPE ist eine weit verbreitete Kodierungsmethode, die Token-Embeddings in die komplexe Ebene abbildet und sie um einen durch die absolute Position bestimmten Winkel rotiert. Bei der Berechnung der Attention hängt die Beziehung zwischen zwei rotierten Vektoren allein von ihrer relativen Distanz ab.
Was sind gelernte Positions-Embeddings?
Statt feste mathematische Formeln wie Sinus und Kosinus zu nutzen, behandeln gelernte Positions-Embeddings räumliche Koordinaten als trainierbare Gewichte. Das Modell initialisiert eine leere Positionsmatrix und aktualisiert diese Koordinaten während des Trainings, um optimale räumliche Repräsentationen für einen spezifischen Datensatz zu lernen.
Ich bin Datenwissenschaftler mit Erfahrung in räumlicher Analyse, maschinellem Lernen und Datenpipelines. Ich habe mit GCP, Hadoop, Hive, Snowflake, Airflow und anderen Data Science/Engineering-Prozessen gearbeitet.



