Definition: Transformer

Als Transformer bezeichnen wir eine Klasse von neuronalen Netzwerkarchitekturen, die für die Verarbeitung von sequenziellen Daten wie natürlicher Sprache entwickelt wurden.

Transformer zeichnen sich dank ihrer Nutzung von Self-Attention-Blöcken durch die Fähigkeit aus, Informationen über lange Distanzen zu behalten und komplexe Abhängigkeiten in den Daten modellieren zu können.

Die Funktionsweise eines Transformers lässt sich wie folgt herunterbrechen:

  • Der Transformer erhält einen Text als Input.
  • Die Wörter des Textes werden mithilfe einer embedding Matrix (und einem Positional Embedding) in separate Embedding-Vektoren umgewandelt.
  • Jeder der Embedding-Vektoren wird durch eine Reihe von Self-Attention-Blöcken in einen Kontext mit den umliegenden Tokens des gesamten Inputs gesetzt.
  • Schließlich wird der resultierende Vektor des letzten Tokens des Textes gewählt und mithilfe einer (ebenfalls gelernten) “unembedding” Matrix multipliziert, um eine Vorhersage für das nächst-folgende Token zu erstellen.

Definition: Funktionsweise eines Transformers

  • Encoder
    • Der Encoder erhält zunächst eine Reihe1 von Wörtern als Input.
    • Diese Wörter werden zunächst als Vektoren embedded.
    • Um die Reihenfolge der Embeddings ableiten zu können, wird ein Positional Embedding elementweise hinzuaddiert.
    • Die so erzeugte Reihe an Embeddings wird an einen Multi-Head Self-Attention Layer weitergeleitet. Dieser “reichert” die Input-Embeddings um Kontextinformationen an.
    • Da es sich um sehr tiefe Neuronale Netze handelt, werden die ursprünglichen Embeddings vor dem Attention Layer per Residualverbindung zu den angereicherten Embeddings hinzuaddiert.
    • Um das Ergebnis anschließend numerisch zu standardisieren, nutzen wir Layer Normalization.
    • Das darauffolgende Feed-Forward Netzwerk entspricht einem Bottleneck Residual Block, der einzeln pro Embedding angewendet wird. Die Parameter werden jedoch zwischen den Anwendungen geteilt. Der Layer führt eine nicht-lineare Transformation des Embeddings durch.
  • Decoder
    • Der Decoder erhält als Input die zuletzt vom Decoder produzierten Outputs als Sequenz. Wurden noch keine Outputs produziert, erhält er einen <Start>-Token.
    • Wie im Encoder werden die Outputs embedded und die Embeddings mittels eines Multi-Head Self-Attention Layers angereichert.
    • In einem zweiten Multi-Head Cross-Attention Layer werden die gerade vom Decoder produzierten angereicherten Embeddings (als keys und values) mit den vom Encoder ausgegebenen Vektoren (als queries) kombiniert und entsprechend angereichert.
    • Wie im Encoder folgt nach der Anreicherung ein weiteres Feed-Forward Netzwerk im Stile eines Bottleneck Residual Blocks, der einzeln pro Embedding angewendet wird und die Embeddings nicht-linear transformiert.
  • Generierung des Outputs
    • Um nun einen neuen Token zu produzieren, würde der so angereicherte Vektor des neusten Outputs des Decoders ausgewählt werden.

    • Der ausgewählte Vektor wird mittels einer linearen Transformation (bspw. Neuronales Netzwerk mit linearer Aktivierungsfunktion) in den Embedding Space projiziert.

    • Um eine Wahrscheinlichkeitsverteilung zu erhalten, wird eine Softmax-Transformation ausgeführt.

    • Der Eintrag des Vektors mit der höchsten Wahrscheinlichkeit wird in das Vokabular zurückübersetzt und bildet den Output.

Definition: Context-Size

Die Context-Size legt fest, wie viele Tokens der Transformer pro Vorhersage berücksichtigen kann.

Die Context-Size ist also genau die Anzahl der für die Self-Attention berechnet wird.

Footnotes

  1. Die Anzahl der Wörter entspricht der Context-Size des Transformers.