0.1.5. Einbettungen
Eine Token-ID lässt sich nicht sinnvoll multiplizieren. Eine Einbettung, Glossar, öffnet in neuem Tab
ist der gelernte Vektor, der für diese ID steht. Das Paket model hält zwei Tabellen. Jeder Eintrag ist ein Parameter, also ein trainierbarer Skalar aus autograd.
| Tabelle | Zeilen | Länge einer Zeile | Index |
|---|---|---|---|
WTE |
Vokabulargröße | 16 | Token-ID |
WPE |
16 | 16 | Position 0 … 15 |
embedAdd liest beide Zeilen und addiert sie koordinatenweise:
x[d] = WTE[t][d] + WPE[i][d]
x ist der Residualstrom, Glossar, öffnet in neuem Tab
dieser Position. Es gibt keine Verkettung und keine weitere Matrix davor. i ist der Index in der aktuellen Tokenfolge, beginnend bei 0 für das öffnende BOS, Glossar, öffnet in neuem Tab
.
Ohne WPE hätte Attention, Glossar, öffnet in neuem Tab
keine Angabe zur Reihenfolge. Die Tabelle wird gelernt, nicht als feste Sinusfunktion eingesetzt. Dieselbe Token-ID benutzt immer dieselbe Zeile. Zwei Vorkommen von a unterscheiden sich durch die Positionszeile und durch die Schlüssel, die schon im Cache, Glossar, öffnet in neuem Tab
stehen.
Zu Beginn zieht New jeden Eintrag aus einer Normalverteilung mit Standardabweichung 0.08. Die Zeile von a druckt das Programm vor dem Training und nach der letzten Stufe. Die Zahlen haben sich dann bewegt. Die Zeile ist kein Wahrscheinlichkeitsvektor und wird hier nicht durch Softmax, Glossar, öffnet in neuem Tab
geschickt. Die erste RMSNorm, Glossar, öffnet in neuem Tab
kommt erst im Vorwärtspass, nach der Addition.
WTE ist nicht mit der Ausgabetabelle LMHead verbunden. Die Zeile, die „dieses Zeichen kam herein“ bedeutet, und die Zeile, die „dieses Zeichen soll folgen“ abstimmt, dürfen sich unterscheiden.
0.1.6. Attention mischt die bisher sichtbaren Positionen in diesen Strom.