← Danny TobischProjekt 09

Attention · Sprachmodelle

Der Schlüssel passte ins Schloss.

Sie haben eben entschieden, dass kein Gebäude gemeint war — ohne es zu merken, und ohne dass es im Wort steht. Ein Sprachmodell muss dieselbe Entscheidung treffen. Der Mechanismus dafür heißt Attention, und man kann ihn von Hand nachrechnen.

5 interaktive Module Echte Wortvektoren Von Hand nachgerechnet

01 — Der Ausgangspunkt

Wörter bekommen einen Ort

Ein Rechner kann mit Buchstaben nichts anfangen. Bevor ein Sprachmodell irgendetwas mit Sprache anstellt, muss jedes Wort eine Adresse bekommen — eine Liste von Zahlen, die sagt, wo es liegt.

Die Idee dahinter ist alt und lässt sich in einem Satz sagen: Ein Wort erkennt man an der Gesellschaft, in der es auftritt. Der Sprachwissenschaftler John Rupert Firth formulierte das 1957. Wörter, die in ähnlichen Sätzen vorkommen, bedeuten Ähnliches — und sollen deshalb nahe beieinander liegen.

Das Pferd stand auf der Weide. Der Hund lag vor der Tür. Sie ritt das Pferd über den Hof. Sie führte den Hund über den Hof. └─ dieselben Nachbarwörter

Niemand sagt dem Verfahren, dass Pferd und Hund Tiere sind. Es zählt nur, welche Wörter in der Nähe stehen. Wenn zwei Wörter dieselbe Nachbarschaft haben, rücken ihre Zahlenlisten zusammen. Millionen Sätze später ist daraus eine Ordnung geworden.

Das Ergebnis kann man abfragen. Geben Sie ein Wort ein — die Liste zeigt, was in diesem Raum am nächsten daneben liegt:

Nachbarschaft · echte Vektoren

  • 10,8755blau
  • 20,8125grün
  • 30,7827gelb
  • 40,7680schwarz
  • 50,6951weiß
  • 60,6516blauen
  • 70,6135blaue
  • 80,6091farben
Kein Mensch hat diese Gruppen angelegt. Sie sind das Ergebnis davon, in welchen Sätzen die Wörter vorkommen.

Bei sieben stehen die anderen Zahlwörter dicht beieinander, bei berlin andere Städte. Und dann probieren Sie schloss.

Merken Sie sich diese Liste

Bei schloss stehen herrenhaus, burg und palais neben abschloss — Gebäude und Verschluss und ein Verb, alles durcheinander in einer einzigen Nachbarschaft.

Der Vektor kann sich nicht entscheiden, weil er nicht weiß, wovon gerade die Rede ist. Genau daran arbeitet sich der Rest dieser Seite ab.

02 — Die Herkunft

Woher genau diese Zahlen kommen

Die Vektoren auf dieser Seite sind nicht ausgedacht und nicht von mir trainiert. Sie stammen aus einem öffentlichen Datensatz, und es lohnt sich zu wissen, aus welchem.

Datensatz fastText, vortrainierte Wikipedia-Vektoren, deutsch Trainiert auf der deutschen Wikipedia Umfang 2.275.233 Wörter zu je 300 Zahlen Verfahren Skip-Gram mit Teilwortinformation Urheber Bojanowski, Grave, Joulin, Mikolov · 2017 Lizenz CC BY-SA 3.0 Auf dieser Seite die 8.000 häufigsten davon, auf int8 verkleinert

Trainiert wird mit einem Schiebefenster über den Text. Für jedes Wort im Fenster soll das Verfahren vorhersagen, welche Wörter drumherum stehen. Trifft es daneben, werden die Zahlen ein Stück verschoben. Millionen Male, über die gesamte Wikipedia.

Die Teilwortinformation im Namen ist der Unterschied zu älteren Verfahren: fastText zerlegt jedes Wort zusätzlich in Buchstabengruppen. Deshalb liegen könig und königs so nah beieinander — sie teilen sich Bausteine. Für das Deutsche mit seinen Endungen und Komposita ist das ein Vorteil, und es erklärt einen Befund weiter unten.

Warum 300 Zahlen und nicht zwei

Mit zwei Zahlen könnte man Wörter auf einem Blatt Papier anordnen. Das reicht nicht: hund ist gleichzeitig Tier, Haustier, Subjekt vieler Sätze und einsilbig. Jede dieser Eigenschaften braucht Platz. In 300 Richtungen ist genug davon, damit sich Wörter in vielen Hinsichten gleichzeitig ähneln können, ohne dass eine Ähnlichkeit die andere verdrängt.

Bei heutigen Sprachmodellen sind es mehr: GPT-3 gibt jedem Wort 12.288 Zahlen.

Was diese Vektoren nicht sind

Das hier ist ein Wörterbuch, keine Sprachmodell-Einbettung. Es liefert je Wort genau einen Eintrag, unabhängig vom Satz. Moderne Modelle beginnen zwar mit einer solchen Tabelle, verändern sie aber ab der ersten Schicht — und wie, das ist das Thema dieser Seite.

03 — Die Ordnung

Eine Karte des Raums

Einzelne Nachbarschaften abzufragen zeigt Ausschnitte. Legt man viele Wörter gleichzeitig hin, wird die Ordnung als Ganzes sichtbar.

300 Dimensionen, auf zwei heruntergerechnet

OrteFarbenZahlenTiereFamilie
berlinparismadriddeutschlandspanienrotblaugrüngelbschwarzdreifünfsiebenneunzwölfhundpferdvogelfischwolfvatermutter
Hauptkomponentenanalyse über genau diese Wörter, im Browser gerechnet. Die beiden Achsen haben keine Bedeutung — sie sind nur die zwei Richtungen, in denen die Wörter am weitesten auseinanderliegen. Wo es zu eng wird, bleibt ein Punkt ohne Beschriftung.

Fünf Gruppen, fünf Bereiche — ohne dass irgendwo hinterlegt wäre, welches Wort zu welcher gehört. Die Zuordnung steckt allein darin, in welchen Sätzen die Wörter vorkommen.

Städte und Länder trennen sich dagegen kaum. Das ist kein Fehler der Darstellung: Berlin und Deutschland stehen in denselben Sätzen, an denselben Stellen, neben denselben Wörtern. Für ein Verfahren, das nur Nachbarschaften zählt, sind sie schwer zu unterscheiden.

Was das Bild verschweigt

Zwei Achsen können von 300 Richtungen nur wenig zeigen — bei dieser Auswahl rund 37 % der Streuung. Der Rest ist beim Herunterrechnen verlorengegangen. Zwei Wörter, die hier aufeinanderliegen, können in den übrigen 298 Richtungen weit auseinander sein.

Alle Zahlen weiter unten werden deshalb in voller Auflösung gerechnet, nicht auf dieser Karte.

04 — Der Befund

Es funktioniert

Nimm den Vektor von paris, zieh frankreich ab, addiere spanien. Welches Wort liegt dem Ergebnis am nächsten?

Analogie · echte Vektoren

− +
  • 10,7965madrid
  • 20,7393parisEingabe
  • 30,7332barcelona
  • 40,6471spanienEingabe
  • 50,6034lissabon
  • 60,5816brüssel
  • 70,5746santiago
  • 80,5679london
Die Eingabewörter werden mitangezeigt statt weggeblendet — das wird gleich wichtig.

Madrid. Und dahinter Barcelona, Lissabon, Brüssel. Der Raum weiß nicht nur, dass Madrid die Hauptstadt Spaniens ist; er weiß auch, dass Barcelona eine spanische Stadt und Lissabon eine iberische Hauptstadt ist. Niemand hat ihm das beigebracht. Es folgt daraus, in welchen Sätzen diese Wörter vorkommen.

Noch deutlicher wird es bei den Sprachen: italienisch − italien + spanien ergibt spanisch mit 0,884 — der höchste Wert auf dieser Seite. Probieren Sie es oben aus.

Bei beiden Rechnungen gewinnt das Zielwort sogar gegen die Eingabewörter. Es braucht keinen Trick, damit sie aufgehen. Merken Sie sich das.

05 — Der Gegenbefund

Und dann doch nicht

Es gibt eine Analogie, die in jedem Vortrag über Sprachmodelle steht. Sie lautet: König minus Mann plus Frau ergibt Königin.

Dieselbe Rechnung, dasselbe Werkzeug. Tippen Sie oben könig − mann + frau ein. Das Ergebnis:

1. 0,8117 könig ← das Eingabewort selbst 2. 0,6998 königs ← eine bloße Flexionsform 3. 0,6662 königin 4. 0,6075 könige 5. 0,5967 gattin 6. 0,5920 prinzessin

Der nächste Nachbar ist das Wort, mit dem wir angefangen haben. Auf Platz zwei steht der Genitiv desselben Wortes. „Königin“ kommt auf Platz drei.

Die berühmte Demo funktioniert nur, weil die Auswertung die Eingabewörter stillschweigend wegwirft. Das steht schon in der Originalarbeit von 2013, ist aber aus den Vorträgen verschwunden. Im Deutschen reicht es nicht einmal: Man müsste zusätzlich alle Flexionsformen streichen, um bei „königin“ anzukommen.

Was der Raum trotzdem weiß

Auf den Plätzen fünf und sechs stehen gattin und prinzessin. Etwas über Geschlecht ist also durchaus eingebettet. Es ist nur keine saubere Achse — dazu gleich.

Der interessante Teil ist nicht, dass es schiefgeht. Der interessante Teil ist, warum — denn daraus folgt, wofür Attention überhaupt gebraucht wird.

06 — Die Erklärung

Der Pfeil zeigt daneben

Die naheliegende Vermutung wäre: Der Schritt ist zu kurz. Das stimmt nicht. Er hat fast genau die richtige Länge.

|frau − mann| = 3,48 der Schritt, den wir gehen |königin − könig| = 3,86 die Strecke, die nötig wäre ⟶ 90 %

Das Problem ist die Richtung. Der Winkel zwischen dem Pfeil mann → frau und dem Pfeil könig → königin beträgt 77°. Die beiden stehen fast senkrecht aufeinander.

Zwei Pfeile, ein Winkel

könig → königinmann → frau77°
Schritt |mann → frau| = 3,482 Strecke |könig → königin| = 3,862 Winkel = 76,6° davon nutzbar = 0,804 davon seitwärts = 3,388 cos vorher = 0,696 cos nachher = 0,666 ▼ schlechter
Gezeichnet wird in der Ebene, die beide Pfeile gemeinsam aufspannen. Der Winkel ist darin unverzerrt — er wird gemessen, nicht illustriert. Die Lage der vier Wortpunkte ist dagegen eine Projektion aus 300 Dimensionen und dadurch verkürzt.

Zerlegt man die 3,48 Einheiten, die wir zurücklegen, führen nur 0,80 in Richtung „königin“ — 3,39 stehen quer dazu. Und dann passiert das hier:

cos(könig, königin) = 0,6959 vorher cos(Ergebnis, königin) = 0,6662 nachher

Die Rechnung macht das Ergebnis schlechter. „könig“ allein ist eine bessere Annäherung an „königin“ als „könig − mann + frau“. Kein Wunder, dass könig gewinnt.

Das Bild dazu

Sie wollen von Berlin nach Hamburg. Sie wissen, dass die Strecke München → Stuttgart ungefähr die richtige Länge hat. Also gehen Sie von Berlin aus dieselbe Strecke in dieselbe Himmelsrichtung — und stehen in der Ostsee.

Die Länge stimmte. Die Himmelsrichtung nicht. Und weil Sie jetzt weit draußen im Wasser sind, ist der nächste Ort, den die Karte kennt, immer noch Berlin.

Genau das passiert im Vektorraum. Der Ergebnisvektor ist mit Länge 5,96 sogar länger als könig (4,90) und königin (5,00) — er liegt außerhalb, wo keine Wörter wohnen. Und weil Kosinusähnlichkeit nur die Richtung misst, bleibt der könig-Anteil das Größte, was sich darin wiedererkennen lässt.

Es gibt keine Geschlechter-Achse

Wenn es im Raum eine Richtung „männlich → weiblich“ gäbe, müssten alle diese Pfeile parallel sein. Gemessen:

mann könig bruder vater sohn mann · 77° 65° 74° 72° könig 77° · 60° 65° 65° bruder 65° 60° · 47° 46° vater 74° 65° 47° · 58° sohn 72° 65° 46° 58° ·

Im Mittel 63°. Zufällige Vektoren in 300 Dimensionen stünden bei 90°. Es gibt also einen gemeinsamen Anteil, aber einen schwachen — nichts, was dem Parallelogramm aus den Lehrbuchbildern nahekäme.

Der Grund liegt im Training. Vektoren entstehen aus dem, was neben einem Wort steht. „mann“ und „frau“ stehen im Alltagstext, „könig“ und „königin“ im Geschichtstext. Die Differenz königin − könig trägt deshalb nicht nur Geschlecht, sondern auch Regentin gegen Regent, Gemahlin gegen Herrscher, andere Jahrhunderte, andere Namen.

Wann die Arithmetik wirklich hilft

vorher nachher berlin → rom 0,3286 0,5237 + 0,20 berlin → paris 0,4545 0,6073 + 0,15 bruder → schwester 0,7625 0,7934 + 0,03 sohn → tochter 0,8002 0,8031 + 0,003 könig → königin 0,6959 0,6662 − 0,03 vater → mutter 0,7912 0,7540 − 0,04

Am meisten dort, wo sie am wenigsten beeindruckt: bei Land und Hauptstadt. Weil sich „berlin“ und „paris“ vorher unähnlich waren — da bleibt Arbeit zu tun, und der Offset erledigt sie.

Bei Bruder und Schwester, Sohn und Tochter lagen die Wörter mit 0,76 und 0,80 schon so nah beieinander, dass die Rechnung nichts mehr beitragen muss. Sie richtet nur keinen Schaden an. Das sieht dann nach Erfolg aus.

Die Pointe

Die berühmte Demo funktioniert nicht, weil die Vektorarithmetik so gut ist, sondern weil „königin“ ohnehin schon in der Nähe von „könig“ lag.

Und selbst die funktionierende Kategorie hat Löcher: berlin − deutschland + italien ergibt nicht Rom, sondern Mailand. Im Wikipedia-Korpus ist Berlin mehr Großstadt als Hauptstadt.

Damit ist der Punkt erreicht, an dem Attention anfängt. Ein fester Offset reicht nicht. Die Richtung, in die ein Wort verschoben werden muss, hängt davon ab, wovon gerade die Rede ist — und das steht nicht im Wort, sondern im Satz.

07 — Das Problem

Ein Vektor, zwei Bedeutungen

Bis hierher hat jedes Wort genau einen Vektor. Immer denselben, egal wo es steht. Und daran zerbricht die ganze Konstruktion.

Der Schlüssel passte ins Schloss. Die Gräfin bewohnte das Schloss.

Dasselbe Wort. Zwei Dinge, die nichts miteinander zu tun haben — ein Verschluss aus Metall und ein Gebäude mit vierzig Zimmern. Sie haben beim Lesen keine Sekunde gezögert. Ein Modell mit einem festen Vektor pro Wort kann nicht anders, als beide Male dasselbe zu denken.

Der Ausweg klingt banal und ist es nicht: Das Wort muss sich die anderen Wörter im Satz ansehen dürfen und seinen eigenen Vektor danach anpassen.

Genau das tut Attention. Der Rest dieser Seite beschreibt, wie.

Was ab hier ein Modell im Kleinformat ist

Die Wortvektoren oben sind echt. Für Attention geht das nicht — ein Sprachmodell lässt sich nicht im Browser rechnen. Ab hier arbeitet die Seite mit einem Miniaturmodell: sechs Dimensionen statt 12.288, ein Kopf statt 96, Matrizen von Hand gesetzt statt gelernt.

Der Rechenweg ist derselbe wie im Transformer — Skalarprodukte, Skalierung, Softmax, gewichtete Summe. Die Größenordnung ist es nicht. Alle gezeigten Zahlen sind tatsächlich gerechnet und gegen ein Python-Skript geprüft.

08 — Der Mechanismus

Frage, Schild, Inhalt

Q, K und V — Query, Key, Value. Drei Buchstaben, die in jeder Erklärung vorkommen und selten erklärt werden. Hier ist das Bild dazu.

Stellen Sie sich einen Raum voller Menschen vor. Jeder hält ein Schild hoch, auf dem steht, worüber er Auskunft geben kann. Sie betreten den Raum mit einer Frage im Kopf. Sie gehen die Schilder durch, und wer am besten passt, dem hören Sie am längsten zu.

  • Query — die Frage, die ein Wort mitbringt. „Ich bin ein Ding und weiß nicht, was für eins. Sagt mir jemand, welcher Art ich bin?“
  • Key — das Schild, das ein Wort hochhält. „Ich biete Auskunft über Mechanik.“ / „Ich biete Auskunft über Gebäude.“
  • Value — was das Wort tatsächlich beisteuert, wenn man ihm zuhört. Nicht dasselbe wie das Schild: Das Schild sagt, ob es passt, der Inhalt ist, was dann übergeben wird.

Alle drei entstehen aus demselben Wortvektor, jeweils durch eine Matrix:

q = WQ · x die Frage k = WK · x das Schild v = WV · x der Inhalt

Die drei Matrizen sind das, was gelernt wird. Sie sind für alle Wörter dieselben — nicht das Wort entscheidet, wie es fragt, sondern die Matrix entscheidet, wie aus einem beliebigen Wort eine Frage wird.

Warum Schild und Inhalt getrennt sind

Das ist die Stelle, an der die meisten Erklärungen abkürzen. Warum nicht einfach den Wortvektor direkt vergleichen und ihn dann weitergeben?

Weil zwei verschiedene Fragen dahinterstecken. Ob „verrostet“ zu „Schloss“ passt, entscheidet sich an einem Merkmal — es beschreibt Material. Was „verrostet“ beiträgt, ist ein anderes: nämlich der Materialgehalt selbst, und zwar verstärkt. Ein Wort kann also ein sehr auffälliges Schild und einen sehr kleinen Inhalt haben, oder umgekehrt.

Die Rechnung

Für jedes Wortpaar wird das Skalarprodukt aus Frage und Schild gebildet. Groß heißt: passt gut. Dann wird durch die Wurzel der Dimension geteilt und alles mit Softmax auf Anteile normiert, die sich zu eins addieren.

Aufmerksamkeit(Q, K, V) = softmax( Q · K⊤ / √dk ) · V

Das ist die ganze Formel aus der Arbeit von 2017. Die Wurzel im Nenner ist kein Schönheitsfehler: Ohne sie werden die Skalarprodukte bei großen Dimensionen so groß, dass Softmax fast alles auf ein einziges Wort legt und die Ableitungen verschwinden.

09 — Durchgerechnet

Ein Satz, Zelle für Zelle

Jetzt die beiden Schloss-Sätze durch das Miniaturmodell. Jede Zeile ist ein Wort, das fragt. Jede Spalte ein Wort, auf das geschaut wird.

Aufmerksamkeitsgewichte

derschlüsselpassteinsschloss
der100····
schlüssel2179···
passte244729··
ins35141833·
schloss83029925
Zeile „schloss“ — wohin schaut dieses Wort? Skalarprodukt q·k, geteilt durch √2: der -0,460 schlüssel 0,919 passte 0,873 ins -0,299 schloss 0,735 nach Softmax: der 7,6 % schlüssel 30,0 % passte 28,6 % ins 8,9 % schloss 25,0 %
Zeile anklicken, um die Rechnung dahinter zu sehen. Die grauen Zellen oben rechts sind maskiert — warum, steht in Kapitel 12.

Sehen Sie die letzte Zeile an. „schloss“ verteilt seine Aufmerksamkeit im ersten Satz auf schlüssel und passte, im zweiten auf bewohnte und gräfin. Auf „der“, „die“, „das“ und „ins“ schaut es kaum — Artikel tragen keine Auskunft darüber, was für ein Ding gemeint ist.

Das ist keine Regel, die jemand hineingeschrieben hätte. Es folgt daraus, dass die Schilder dieser Wörter im Merkmal „ich biete Typauskunft“ nahe null liegen.

10 — Das Ergebnis

Was dem Wort hinzugefügt wird

Der wichtigste und am häufigsten übersehene Punkt: Attention ersetzt den Wortvektor nicht. Sie addiert etwas dazu.

xneu = xalt + Aufmerksamkeit(x)

Diese Addition heißt Residualverbindung und läuft durch das ganze Modell. Der Vektor eines Wortes ist deshalb kein Zustand, der immer wieder überschrieben wird, sondern ein Konto, auf das jede Schicht etwas einzahlt.

Der Vektor von „schloss“

Ding
1,000
Mechanik
1,313
Gebäude
0,546
Person
0,000
Vorgang
0,000
Funktion
0,000
vorher, aus dem Wörterbuch nachher, nach Attention
Mechanik steigt von 0,400 auf 1,313. Gebäude bleibt bei 0,546.

Vorher stand „schloss“ bei 0,400 Mechanik und 0,400 Gebäude — vollkommen unentschieden, weil das Wort beide Bedeutungen trägt. Nach einem einzigen Durchgang Attention:

Mechanik Gebäude vorher 0,400 0,400 „der schlüssel passte …“ 1,313 0,546 „die gräfin bewohnte …“ 0,535 1,206

Derselbe Ausgangsvektor, zwei Sätze, gegenläufige Bewegung. Das ist die Antwort auf die Frage aus Kapitel 07. Das Wort hat nach wie vor nur einen Eintrag im Wörterbuch — aber im Satz ist daraus etwas anderes geworden.

Und man sieht, was Attention nicht anfasst: Die Dimension „Ding“ bleibt bei 1,000. Ein Schloss ist in beiden Sätzen ein Gegenstand. Angepasst wird nur, worüber Unklarheit bestand.

11 — Mehrere Köpfe

Ein Blick reicht nicht

Unser Miniaturmodell stellt eine einzige Frage: „Was für ein Ding bin ich?“ Ein echter Satz wirft Dutzende Fragen gleichzeitig auf.

Worauf bezieht sich „er“? Welches Verb gehört zu welchem Subjekt? Ist das ironisch gemeint? Steht hier eine Zahl, die gleich gebraucht wird? Ein einziger Satz aus Q, K und V kann nur eine Art von Bezug herstellen, weil alle Wörter durch dieselbe Matrix laufen.

Die Lösung ist unelegant und wirksam: Man baut denselben Mechanismus mehrfach nebeneinander, jeden mit eigenen Matrizen, und hängt die Ergebnisse aneinander. Das heißt Multi-Head Attention.

GPT-3 96 Köpfe je Schicht, 96 Schichten Llama 3.1 405B 128 Köpfe je Schicht, 126 Schichten

Bei GPT-3 hat jeder Kopf 128 Dimensionen; 96 Köpfe zu 128 ergeben wieder die 12.288 des Hauptvektors. Die Breite wird also nicht vervielfacht, sondern aufgeteilt — jeder Kopf bekommt einen schmalen Ausschnitt und darf darin seine eigene Frage stellen.

In untersuchten Modellen findet man Köpfe, die erkennbar eine Aufgabe übernommen haben: einer verfolgt Pronomen zurück zu ihrem Bezugswort, einer achtet auf das jeweils vorhergehende Wort, einer auf passende Klammern. Die meisten lassen sich nicht so sauber benennen. Niemand hat ihnen die Aufgaben zugeteilt.

12 — Die Maske

Warum die Matrix dreieckig ist

In der Matrix oben ist die obere rechte Hälfte grau. Kein Wort darf nach rechts schauen. Das ist keine Sparmaßnahme.

Ein Sprachmodell wird auf genau einer Aufgabe trainiert: das nächste Wort vorhersagen. Dürfte ein Wort während des Trainings sehen, was nach ihm kommt, wäre die Aufgabe trivial — die Antwort stünde im Eingang. Das Modell würde nichts lernen und beim ersten echten Einsatz versagen, weil dort die Zukunft naturgemäß fehlt.

Also wird die halbe Matrix gesperrt, bevor Softmax angewandt wird: Alle Felder rechts der Diagonale bekommen minus unendlich. Nach Softmax steht dort exakt null.

vor Softmax [ 0,7 1,2 −∞ −∞ ] nach Softmax [ 0,38 0,62 0 0 ]

Das hat eine Folge, die auf dieser Seite sichtbar ist. Beide Beispielsätze stellen das mehrdeutige Wort ans Ende. Stünde „Schloss“ vorn — „Das Schloss war verrostet“ — könnte es „verrostet“ gar nicht sehen. Die Auflösung fände an dieser Position nicht statt.

Sie fände trotzdem statt, nur woanders: Spätere Wörter lesen ein „Schloss“, das inzwischen durch die Schichten gewandert ist, und für die Vorhersage des nächsten Wortes reicht das. Modelle wie BERT, die nicht vorhersagen, sondern Text verstehen sollen, verzichten auf die Maske und schauen in beide Richtungen.

13 — Die Reihenfolge

Attention ist blind für Wortstellung

Eine Eigenschaft des Mechanismus, die beim ersten Hinsehen wie ein Fehler aussieht: Die Formel enthält nirgends, an welcher Stelle ein Wort steht.

Skalarprodukte, Softmax, gewichtete Summe — vertauscht man zwei Wörter im Eingang, vertauschen sich die Ausgänge mit, und sonst ändert sich nichts. Für Attention allein sind diese beiden Sätze identisch:

Der Hund biss den Briefträger. Den Briefträger biss der Hund.

Im Deutschen ist das dank der Fälle sogar dieselbe Aussage. Im Englischen wäre es das Gegenteil — und das Modell könnte es nicht unterscheiden.

Der Ausweg: Die Position wird in den Vektor hineingerechnet, bevor Attention überhaupt anfängt. Jede Stelle im Satz bekommt ein eigenes Muster, das auf den Wortvektor addiert wird. Ein Wort an Position 5 sieht danach anders aus als dasselbe Wort an Position 40.

Die Arbeit von 2017 benutzte dafür Sinus- und Kosinuswellen verschiedener Wellenlängen. Heutige Modelle verwenden meist RoPE, bei dem die Vektoren je nach Position gedreht werden — mit dem angenehmen Nebeneffekt, dass sich daraus direkt der Abstand zweier Wörter ablesen lässt, nicht nur ihre absolute Lage.

14 — Der Preis

Jedes Wort mit jedem

Attention vergleicht jedes Wort mit jedem anderen. Bei n Wörtern sind das n² Vergleiche — und daran hängt fast alles, was an Sprachmodellen teuer ist.

Vergleiche je Schicht und Kopf

GPT-3 mit 2.048 Wörtern Kontext braucht 4,2 Millionen Vergleiche, Llama 3.1 mit 128.000 Wörtern 16,4 Milliarden — 62,5-mal so viel Kontext, 3.906-mal so viel Arbeit.
Beide Achsen linear. Auf dieser Skala liegt der gesamte Kontext von GPT-3 fast im Ursprung. Eine Verdopplung der Kontextlänge vervierfacht die Arbeit.

Von GPT-3 mit 2.048 Wörtern zu Llama 3.1 mit 128.000 ist die Kontextlänge um Faktor 62,5 gewachsen. Die Zahl der Vergleiche um Faktor 3.906 — von 4,2 Millionen auf 16,4 Milliarden, und das je Kopf und je Schicht.

Deshalb sind lange Kontexte kein Schalter, den man umlegt. Sie sind der Grund für einen erheblichen Teil der Forschung der letzten Jahre: FlashAttention rechnet dieselbe Formel, ohne die riesige Matrix je vollständig im Speicher zu halten. Andere Ansätze lassen jedes Wort nur einen Ausschnitt sehen statt den ganzen Text.

Der Mechanismus, der Sprachmodelle möglich gemacht hat, ist zugleich ihre teuerste Eigenschaft. Beides folgt aus derselben Zeile Formel.

15 — Quellen

Nachlesen

Die Originalarbeit ist Attention Is All You Need von Vaswani und anderen, 2017 — acht Seiten, und die Formel aus Kapitel 04 steht darin als Gleichung 1.

Zur Kritik an der Analogie-Demo: Malvina Nissim, Rik van Noord, Rob van der Goot, Fair Is Better than Sensational: Man Is to Doctor as Woman Is to Doctor, Computational Linguistics 46(2), 2020. Der Ausschluss der Eingabewörter steht bereits in der Originalarbeit von Mikolov und anderen, 2013.

Wer den Mechanismus Zeile für Zeile sehen will: Andrej Karpathys nanoGPT ist ein vollständiges Sprachmodell in wenigen hundert Zeilen Python.

Die Zahlen dieser Seite

Die Wortvektoren stammen aus fastText, trainiert auf der deutschen Wikipedia — 8.000 Wörter zu 300 Dimensionen, im Browser geladen und dort gerechnet. Bereitgestellt von Bojanowski, Grave, Joulin und Mikolov unter CC BY-SA 3.0; der abgeleitete Auszug steht unter derselben Lizenz. Nachweis und Bearbeitungen in vektoren/QUELLEN.md.

Das Attention-Miniaturmodell ist von Hand gesetzt und gegen ein Python-Skript geprüft. Sechs Dimensionen, ein Kopf — der Rechenweg stimmt, die Größenordnung nicht.

Weiterlesen