Positionskodierung
Du liest die Sätze „BMW hat Volvo überholt“ und „Volvo hat BMW überholt“. Sie enthalten genau dieselben Wörter, aber die Änderung der Reihenfolge vertauscht die Rollen der Autos. Wenn der Modellmechanismus nur Wortbeschreibungen sieht und sie wie eine ungeordnete Menge vergleicht, fehlt ihm ein Signal für ihre Stellen im Satz.
Positional Encoding liefert Informationen über die Position eines Textstücks. Im ursprünglichen Transformer wurde zur Zahlenliste, die ein Token beschreibt, eine zweite Liste hinzugefügt, die aus der Nummer der Stelle berechnet wurde. Ein Token ist eine Texteinheit; seine numerische Beschreibung heißt Embedding.
Das Wort „Volvo“ erhält an der ersten und dritten Stelle also unterschiedliche Eingabesignale. Das Modell kann lernen, diesen Unterschied bei der Interpretation des Satzes zu nutzen. Im ursprünglichen Verfahren ähnelten die Positionsmuster Wellen unterschiedlicher Frequenzen; sie wurden mit Sinus- und Kosinusfunktionen berechnet.
Das Positionssignal verhindert keinen Blick auf künftige Fragmente. Diese Funktion erfüllt Causal Masking. Nicht jedes Modell ergänzt die Position auf dieselbe Weise: Rotary Position Embedding führt sie durch das Drehen von Teilen numerischer Beschreibungen ein.
Quelle des Mechanismus: Erklärung in Dive into Deep Learning, §11.6.3.
Mechanismus und Details
Im ursprünglichen Transformer wurde zur Repräsentation jedes Tokens ein Vektor aus Sinus- und Kosinuswerten unterschiedlicher Frequenzen addiert. Er hatte dieselbe Dimension wie das Embedding, sodass die Addition Koordinate für Koordinate erfolgte. Attention Is All You Need, §3.5.
Was das Modell erhält
Das Additionsschema lautet : ist das Token-Embedding an Position , und hängt von der Position ab.
In einer zweidimensionalen Veranschaulichung der Sinusformel ist und . Dasselbe Token mit demselben Embedding erhält an diesen zwei Positionen also unterschiedliche Eingabevektoren. Die Zahlen zeigen die Positionskodierung, nicht die Tokenbedeutung oder die Stärke seiner Beziehung zum Nachbarn.
Positionskodierung ersetzt die kausale Maske nicht. Eine Positionsinformation verbietet keinen Zugriff auf eine zukünftige Position; das macht die Maske. Die sinusförmige Variante ist eine mögliche Positionsdarstellung, keine Pflichtlösung für jedes Modell.
Siehe auch: Rotary Position Embedding führt Positionen durch die Rotation von Query und Key ein, statt einen Positionsvektor zum Embedding zu addieren.