Self-Attention
Im Satz „Anna legte das Buch weg, weil es schwer war“ erklärt das Wort „war“ allein wenig. Es muss mit früheren Fragmenten verbunden werden. Ein Modell zur Textverarbeitung braucht eine Methode, damit die Beschreibung einer Stelle Informationen aus anderen Stellen desselben Textes berücksichtigt.
Self-attention bildet eine solche Beschreibung durch das gewichtete Mischen von Informationen aus verfügbaren Tokens, also Textstücken. Für jede Position erstellt das Modell drei Zahlenlisten: Query zur Suche nach Beziehungen, Key zum Vergleich und Value mit weiterzugebender Information. Das sind gelernte Repräsentationen, keine wörtlichen Fragen oder Wörterbucheinträge.
Für die Position „war“ wird ihre Query mit den Keys anderer Fragmente wie „Anna“ und „Buch“ verglichen. Die Ergebnisse bestimmen die Anteile der Information, die aus ihren Values weitergegeben wird. Erhält das Fragment über das Buch einen größeren Anteil, beeinflusst seine Beschreibung die neue Beschreibung von „war“ stärker. „Self“ bedeutet, dass alle drei Datenarten aus derselben Sequenz stammen.
Das Satzbeispiel zeigt den Bedarf an Kontext, garantiert aber nicht, dass eine konkrete Berechnung den Bezug des Pronomens korrekt erkennt. Die verfügbaren Positionen kann zusätzlich Causal Masking begrenzen. Attention-Gewichte bewerten nicht die Wahrheit der gesamten Antwort.
Mechanismus und Details
Das Query einer Position wird mit den Keys verfügbarer Positionen verglichen. Die resultierenden Gewichte bestimmen den Anteil ihrer Values am Ergebnis. Im Transformer wird dies unter anderem durch Scaled Dot-Product Attention umgesetzt. Beschreibung und Implementierung: Dive into Deep Learning, §11.6.1.
Was den Zugriff auf andere Positionen begrenzt
Nehmen wir drei Sequenzpositionen. Ohne Maske kann die Repräsentation der zweiten alle drei verwenden, auch sich selbst. Mit einer kausalen Maske ist die dritte Position für sie nicht verfügbar. Es bleibt Self-Attention: Geändert wurde der Zugriffsbereich, nicht die Quelle von Query, Key und Value.
So wurden Encoder und Decoder im Originalpaper, §3.2.3, unterschieden. Das Wort „self“ allein bedeutet daher keinen Zugriff auf zukünftige Tokens.
In der vollständigen Variante wächst die Anzahl verglichener Paare quadratisch mit der Sequenzlänge. Für 100 Positionen sind es 10 000, für 200 bereits 40 000. Das veranschaulicht die Paaranzahl, misst aber nicht die Laufzeit einer konkreten Implementierung. Kostenvergleich: §11.6.2.