Transformer anschaulich erklärt
(jalammar.github.io)- Erklärt Aufbau und Funktionsweise des Transformer-Modells visuell und zeigt, wie der Attention-Mechanismus paralleles Training und die Übersetzungsleistung verbessert
- Das Modell besteht aus einem Encoder- und Decoder-Stack, wobei jeder Encoder aus zwei Schichten besteht: Self-Attention und Feedforward-Neuronales Netz
- Der Berechnungsprozess der Self-Attention wird auf Vektor- und Matrixebene Schritt für Schritt erläutert und mit Multi-Head Attention auf verschiedene Repräsentationsräume erweitert
- Zentrale Komponenten wie Positional Encoding, Residual Connections, Layer Normalization und die maskierte Attention im Decoder werden konkret visualisiert
- Dieser Beitrag ist ein repräsentatives Material, das hilft, die Grundkonzepte von Transformern leicht zu verstehen, und wird auch in Lehrveranstaltungen und Lehrmaterialien wichtiger Universitäten wie MIT und Stanford eingesetzt
Überblick über Transformer
- Transformer ist ein Attention-basiertes neuronales maschinelles Übersetzungsmodell, das bei bestimmten Aufgaben eine höhere Leistung als das frühere Google Neural Machine Translation zeigt
- Ein wesentlicher Vorteil ist die einfache Parallelisierung; außerdem wird es als Referenzmodell für Google Cloud TPU empfohlen
- Das Modell besteht aus einem Encoder- und Decoder-Stack, wobei alle Encoder dieselbe Struktur haben, aber keine Gewichte teilen
- Die Eingabe des Encoders durchläuft eine Self-Attention-Schicht, die Kontextinformationen integriert, und anschließend ein Feedforward-Neuronales Netz
- Der Decoder enthält zusätzlich zur Encoder-Struktur eine Encoder-Decoder-Attention-Schicht, um sich auf relevante Teile des Eingabesatzes zu konzentrieren
Tensorfluss und Embeddings
- Der Eingabesatz wird mithilfe eines Word-Embedding-Algorithmus in 512-dimensionale Vektoren für jedes Wort umgewandelt
- Jede Schicht des Encoders verarbeitet als Eingabe eine Liste von Vektoren gleicher Größe; die Satzlänge wird als Hyperparameter festgelegt
- Da die Feedforward-Schicht die Vektoren jeder Position unabhängig verarbeitet, sind parallele Berechnungen möglich
Das Konzept der Self-Attention
- Self-Attention ermöglicht es jedem Wort, auf andere Wörter im Satz zu verweisen und so bessere Repräsentationen zu lernen
- Beispiel: In „The animal didn’t cross the street because it was too tired“ bezieht sich „it“ auf „animal“
- Im Gegensatz zur Speicherung versteckter Zustände in RNNs integriert der Transformer Kontextinformationen mittels Self-Attention
Schritte der Self-Attention-Berechnung
- Aus jedem Wort-Embedding werden Query-, Key- und Value-Vektoren erzeugt (Dimension 64)
- Über das Skalarprodukt (dot product) von Query und Key werden Relevanzwerte zwischen den Wörtern berechnet
- Die Werte werden durch √64 geteilt und anschließend mit Softmax zu einer Wahrscheinlichkeitsverteilung normalisiert
- Jeder Value-Vektor wird mit den Softmax-Werten gewichtet und aufsummiert, um die endgültige Attention-Ausgabe zu erzeugen
- In der praktischen Implementierung wird dieser Prozess als Matrixoperation ausgeführt, um die Effizienz zu erhöhen
Multi-Head Attention
- Mit mehreren Attention-Heads (standardmäßig 8) werden unterschiedliche Repräsentationsräume gelernt
- Jeder Head besitzt eigene Gewichtsmatrizen für Q/K/V
- Die Ausgaben mehrerer Heads werden konkateniert (concat) und anschließend mit der zusätzlichen Gewichtsmatrix WO zusammengeführt
- Dadurch kann das Modell verschiedene Aspekte des Kontexts gleichzeitig erfassen
Positional Encoding
- Da Transformer Reihenfolge nicht direkt verarbeiten, wird zu jedem Wort-Embedding ein Positionsvektor addiert
- Der Positionsvektor wird mit Sinus- (
sin) und Kosinusfunktionen (cos) erzeugt und liefert Informationen über relative Abstände zwischen Wörtern - Dieser Ansatz lässt sich auch auf Sätze erweitern, die länger als die Trainingsdaten sind
- In einem Update von 2020 wurde außerdem eine Methode vorgestellt, bei der zwei Signale verschachtelt (interleave) werden
Residual Connections und Normalisierung
- Auf jede Sublayer-Komponente (Self-Attention, Feedforward) werden Residual Connections und Layer Normalization angewendet
- Diese Struktur trägt dazu bei, verschwindende Gradienten zu verhindern und die Trainingsstabilität zu verbessern
Decoder-Struktur
- Der Decoder erhält Key-/Value-Vektoren aus der Encoder-Ausgabe und führt Encoder-Decoder-Attention aus
- Durch Masking wird verhindert, dass auf zukünftige Wörter verwiesen wird
- Am Ende erzeugen eine Linear-Schicht und eine Softmax-Schicht eine Wahrscheinlichkeitsverteilung über Wörter
- Beispiel: Bei einer Vokabulargröße von 10.000 wird jeder Ausgabevektor in eine 10.000-dimensionale Wahrscheinlichkeitsverteilung umgewandelt
Training und Verlustfunktion
- Beim Training wird die vom Modell ausgegebene Wahrscheinlichkeitsverteilung mit der Zielverteilung (One-Hot-Encoding) verglichen
- Mit Cross-Entropy oder KL-Divergenz wird der Fehler berechnet und per Backpropagation werden die Gewichte angepasst
- Mittels Beam Search werden mehrere Übersetzungskandidaten beibehalten, um die Genauigkeit zu erhöhen
Weiterführende Forschung und Referenzmaterialien
- Relevante Arbeiten: Attention Is All You Need, Training Tips for the Transformer Model, Self-Attention with Relative Position Representations u. a.
- Implementierungsmaterialien: Tensor2Tensor-Paket, Harvard NLP PyTorch Guide, Colab Notebook
- Der Transformer wurde später zur erweiterten Fassung von LLM-book.com (Chapter 3) weiterentwickelt und behandelt neuere Modelle wie Multi-Query Attention und RoPE-Positions-Embeddings
Fazit
- Der Transformer ist eine parallelisierbare Attention-basierte Architektur und hat sich als Kernmodell des modernen Deep Learning etabliert
- Dieser Beitrag ist ein repräsentatives Material, das Struktur, Mathematik und Intuition des Transformers visuell erklärt, und wird in Lehrveranstaltungen führender Universitäten wie Stanford, MIT und Harvard als Referenz verwendet
1 Kommentare
Hacker-News-Kommentare
Ich habe diesen Artikel gelesen, als ich die Grundlagen von Transformern gelernt habe. Die Visualisierungen haben wirklich geholfen.
Aber in der tatsächlichen Arbeit mit dem Einsatz von LLMs war das Wissen über die Transformer-Architektur fast nutzlos. Es gab mir allerdings ein psychologisches Gefühl von Sicherheit, weil ich die innere Funktionsweise grob verstand.
Versuche, das Verhalten von LLMs aus ihrer Struktur heraus zu erklären, sind eine Falle. Neuere Modelle zeigen wegen Reinforcement Learning und Ähnlichem unvorhersehbare emergent phenomena.
Früher war ich sicher, dass LLMs in Mathematik oder beim Coden nicht gut sein würden, aber ich lag völlig falsch. Letztlich gibt es Grenzen dabei, die Fähigkeiten eines Modells allein aus seiner Struktur abzuleiten.
Während meines Urlaubs setze ich Transformer gerade noch einmal direkt in PyTorch um und frische mein Wissen auf. Es ist interessant und macht Spaß.
Für den Einstieg empfehle ich die Materialien LLMs from Scratch von Sebastian Raschka.
Falls jemand das 2024 erschienene Buch von Jay Alammar gelesen hat, würde mich interessieren, ob es aus heutiger Sicht empfehlenswert ist.
Dadurch entwickelt man ein Gespür dafür, die Grenzen eines Modells intuitiv zu erfassen. Das ist ein Rat, den ich früher direkt von Clem Delangue von Hugging Face gehört habe; seitdem habe ich mich intensiv mit LLM-Architekturen beschäftigt, und das hat sehr geholfen.
Den gleichen Rat gebe ich auch Absolventen von Coding-Bootcamps — man kann mit Python und React allein durchaus arbeiten, aber wer Computerarchitektur und Low-Level-Sprachen versteht, wird langfristig ein deutlich stärkerer Entwickler.
Tokens sind keine Wortfragmente, und bei Sprach- oder Bildverarbeitung haben sie nur in der Eingabephase Bedeutung. Ich glaube, genau dieses Missverständnis hat dazu geführt, dass das Potenzial von Transformern unterschätzt wurde.
Dabei verbessert das eher die Codequalität. Dank des positional encoding in causalen Transformern kann das Modell temporäre Tokens für lokales Schließen hinterlassen und sie leicht wieder vergessen.
Es funktioniert also wie eine Art einmaliges Scratchpad. Die Lösung besteht darin, die Ausgabe des LLM nachzubearbeiten, nicht darin, das Modell davon abzuhalten, Kommentare zu erzeugen.
Seit dem Start von ChatGPT haben sich die Anteile dieser drei Gruppen kaum verändert, und nur selten lässt sich jemand durch Belege überzeugen.
Die Visualisierungen des Transformer Explainer Teams waren wirklich hervorragend.
Zusammen mit Transformer Explainer und den Videos von 3blue1brown wird das Verständnis wirklich klar.
In einem Kommentar des Autors Jay Alammar selbst werden weitere gute Lernmaterialien zu Transformern vorgestellt.
Zugehöriger Link
Es gibt inzwischen so viele Erklärungen zu Transformern, dass es sich fast wie Monad-Tutorials anfühlt.
Manche denken, sie hätten die Erleuchtung gefunden, sind in Wirklichkeit aber immer noch verwirrt und wollen dieses Verständnis dann breit weitergeben.
Auch beim Lernen von Mathematik oder Elektrotechnik ist die erste Erklärung oft schwer zugänglich, aber wenn man mehrere Versionen sieht, vertieft sich das Verständnis irgendwann.
Vielleicht bin ich einfach nicht mehr auf dem neuesten Stand, aber ich frage mich, ob Transformer bestehende Deep-Learning-Architekturen wie U-net vollständig ersetzt haben.
CNNs sind zum Beispiel weiterhin sehr stark und besonders für spezialisierte Vision-Aufgaben wie medizinische Bildgebung besser geeignet.
Bei rotationsinvarianten Modellen, Graph Neural Networks oder Point-Cloud-Modellen können Transformer sogar ungeeignet sein.
Es gibt also nach wie vor verschiedene alternative Architekturen.
Passendes Paper: CNNs can still do just as well
Ich habe dieses Buch, und als unser Team entschieden hat, LLMs ins System einzuführen, war es wirklich eine Art Rettungsanker.
LLMs sind letztlich synthetische Systeme, die menschliches Schlussfolgern nachahmen, daher ist es selbst mit Kenntnis der internen Struktur schwer, Fehlermuster vorherzusagen.
Wichtiger ist es, durch Erfahrung und Experimente ein Gespür zu entwickeln.
Ich denke, das Innenleben von Transformern wird letztlich so unwichtig werden wie das Innenleben von Compilern.
Die meisten Entwickler werden sich mehr dafür interessieren, „wie man sie einsetzt“, als für die interne Implementierung.
Genau wie Betriebssysteme, Compiler oder Hardware wie GPU/TPU müssen auch Transformer kontinuierlich verbessert werden, daher wird die Rolle von Menschen mit diesem Wissen eher noch wichtiger.
Ein großartiger Artikel, der offenbar das neuere Projekt Illustrated Evo 2 inspiriert hat.
NVIDIA-Research-Blog-Link
Viele sehen Key/Query/Value als etwas Besonderes, aber in Wirklichkeit sind Transformer nur eine erweiterte Struktur aus Matrixmultiplikationen.
Wenn eine Schicht in einem gewöhnlichen neuronalen Netz
matrix * inputist, berechnet ein Transformerinput * MatrixA,input * MatrixB,input * MatrixCund kombiniert die Ergebnisse.Letztlich ist alles eine Wiederholung von Matrixoperationen. Details dazu im PyTorch-Blog.
Attention wird ebenfalls positionsunabhängig gelernt, transformiert große Abschnitte der Eingabe in neue Werte, und mehrere Heads lernen parallel unterschiedliche Aspekte. Das ist ein ähnliches Konzept wie die Kernel bei convolution.
Dieser Leitfaden ist wirklich umfangreich. Wenn man ihn zusammen mit Tools wie Claude Code verwendet und damit PyTorch-Pseudocode erzeugt, hilft das enorm, Konzepte visuell zu verstehen.
Es ist großartiges Material, um sich mehrere Stunden lang darin zu vertiefen und zu lernen.