Skip to main content
Entwickler Themen
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

0.1.6. Attention

Attention

Attention, Glossar, öffnet in neuem Tab mischt die bisher sichtbaren Positionen in den Residualstrom, Glossar, öffnet in neuem Tab der aktuellen Position. Layer.attend im Paket model rechnet das. Der Eingang ist der bereits RMS-normalisierte, Glossar, öffnet in neuem Tab Residualstrom.

Drei Projektionen

Drei Matrizen, jede 16×16, ohne Bias, Glossar, öffnet in neuem Tab :

q = WQ · x
k = WK · x
v = WV · x

MatVec bildet jede Ausgabe als Skalarprodukt einer Zeile mit x. Die Matrizen sind unabhängige Parameter.

Direkt nach der Berechnung hängt attend den vollen Key und den vollen Value an den Cache, Glossar, öffnet in neuem Tab dieser Schicht. Die Query wird nicht gespeichert. Der Cache gehört zu einem Dokument oder einer Stichprobe und startet leer. Ein neues Dokument ruft resetCache auf.

Ein Kopf

Vier Köpfe teilen sich die 16 Koordinaten in vier Abschnitte der Länge 4. Kopf h vergleicht nur seinen Abschnitt. Für jede bereits gecachte Position p, einschließlich der aktuellen:

score[p] = Skalarprodukt(q_h, k_h[p]) / sqrt(4)

sqrt(4) ist 2. Danach Softmax, Glossar, öffnet in neuem Tab über genau diese Scores. Die Gewichte sind positiv und summieren sich zu 1. Eine Position hinter der aktuellen existiert im Cache nicht. Es gibt keine mit Nullen aufgefüllte Zukunft.

Der Kopf bildet daraus den gewichteten Mittelwert seiner Value-Abschnitte. Die vier Kopfausgaben werden aneinandergehängt, und WO bildet sie auf 16 Koordinaten ab. Diese Ausgabe ist das Delta der Attention, noch vor der Residualaddition im Block.

Das Programm druckt die Gewichte von Kopf 0. Im Vorwärtspass, Glossar, öffnet in neuem Tab von ana hat die letzte bewertete Position vier Gewichte, weil vier Token, Glossar, öffnet in neuem Tab sichtbar sind: im Referenzlauf 0.2785 0.1918 0.3010 0.2287. Am zweiten Zeichen einer Stichprobe hat die Zeile die Länge 2: das öffnende BOS, Glossar, öffnet in neuem Tab und das erste gezogene Zeichen. Die gedruckte Summe liegt bei 1.

Weiter

0.1.7. Block setzt Attention und das vorwärtsgerichtete Netz zusammen.