Ein Transformer ist eine von GoogleDamals Google Brain und Google Research. Später Google AI. weiterentwickelte Deep Learning (DL)-Architektur, die einen sogenannten „Aufmerksamkeitsmechanismus“ () als Teil anderer Algorithmusartefakte einsetzt. Das Konzept wurde 2017 vorgestellt und ist Teil der Grundstruktur des generativen vortrainierten Transformers (GPT), auch bekannt als Large Language Models (LLM), sowie anderer vortrainierter Modelle. Letztere sind Modelle, die mithilfe eines großen Datensatzes trainiert wurden, um später für eine bestimmte Aufgabe eingesetzt zu werden.
Im Anwendungsfall der maschinellen Übersetzung, wird Text durch Worteinbettung (Embedding) in numerische Darstellungen in Form von Vektoren umgewandelt und statistisch weiterverarbeitet. Dies kann z. B. dazu benutzt werden, Text von einer Sprache in eine andere zu übersetzen. Dazu wird ein Transformer mittels maschinellem Lernen (ML) anhand einer (großen) Menge von Beispieltexten trainiert, bevor das trainierte Modell dann zur Übersetzung verwendet werden kann. Weitere Beispielanwendungen von Transformer-Architekturen sind die Textgenerierung oder die Zusammenfassung längerer Texte. Transformer haben sich als effizienter als Long Short-Term Memory-Architekturen (LSTM) erwiesen. Letztere Architektur (LSTM) wird beispielsweise von Google Translate seit c. 2016 eingesetzt, eine Adaption der Neural Machine Translation (NMT) durch Google (GNMT). Der Fokus des restlichen Artikels liegt jedoch auf dem Prinzip der Transformer.
Hintergrund
Transformer wurden 2017 im Rahmen der Neural Information Processing Systems-Konferenz (NeuIPS) von Google-Mitarbeitern vorgestellt und wenig später in der Arbeit Attention Is All You Need veröffentlicht. Die ersten Forschungen zu der Transformer-Technik (sogenannte „“) gehen jedoch bis in die 1990er Jahre unter Jürgen Schmidhuber zurück.
Bei der Verarbeitung natürlicher Sprache (NLP) wurden vor der Einführung des Transformers rekurrente Modelle (RNN) wie Long Short-Term Memory (LSTM), GRU und Seq2Seq eingesetzt, welche eine Eingangssequenz sequenziell abarbeiten. Diese Methoden wurden später um einen Aufmerksamkeitsmechanismus erweitert.
Man spricht als Teil der Transformer auch von dem „Aufmerksamkeitsmechanismus“ (). Sie wurden bereits 2015 im Kontext der maschinellen Übersetzung verwendet. Während sie immer noch auf einem rekurrenten neuronalen Netz (RNN) basierten, entfernte der 2017 Ansatz von Google den RNN-Anteil und reduzierten den Transformer nur auf „Selbst-Aufmerksamkeit“ (). Diese neue Architektur (Transformer) übertraf vorherige Konzepte. Der Google-Transformer verzichtete somit auf die rekurrente Struktur (RNN) sowie Convolutional Neural Network (CNN) und basierte stattdessen nur auf dem Selbst-Aufmerksamkeitsmechanismus, kombiniert mit Feed-Forward Netzen (FFN), vgl. das Blockdiagramm weiter unten.
Das Konzept des Transformer soll menschliche kognitive Aufmerksamkeit mathematisch nachahmen und die wesentlichen Sinnzusammenhänge in einem gegebenen Kontext erkennen. Der Algorithmus berechnet eine „weiche“ Gewichtung für jedes Wort, genauer gesagt für die Einbettung in seinem aktuellen Kontextfenster. Diese Gewichte können berechnet werden: parallel (z. B. in Transformern) sequentiell (z. B. in RNNs). „Weiche“ Gewichte können sich im Gegensatz zu (vor)trainierten „harten“ Gewichten, die fix sind und keine Anpassung an wechselnden Kontext erlauben, bei jedem Durchlauf ändern. Sie erzielen bei reduziertem Rechenaufwand ähnliche oder bessere Ergebnisse bei der Transformation von Sequenzen als sequenziell-arbeitende RNNs.
Bekannte Beispiele für Transformer-Modelle sind der Bidirectional Encoder Representations from Transformers (BERT) und die Generativen vortrainierten Transformer (GPT). Ersteres ist ein reines Encoder-Modell (linker Teil des Ablaufdiagramms), Letzteres (manche GPT) eine reine Decoder-Architektur (rechter Teil des Ablaufdiagramms).
Seitdem die Technik (Transformer) bekannt wurde, haben viele andere ML/DL-Modelle auch auf Transformer gesetzt, z. B. AlphaFold. Siehe dazu auch die Large Language Models (LLMs).
Transformer-Architektur mini|463x463px|Original Transformer-Architektur. Im Jahr 2020 wurde bereits eine verbesserte Positionierung der Layer-Normalisierung vor der Multi-Head Attention (MHA) vorgestellt. Es existieren Stand 2026 eine Vielzahl von Varianten dieser Original Architektur. Ein Transformer besteht in seiner ursprünglich vorgestellten Form im Wesentlichen aus in Serie geschalteten Kodierern (Encoder) und in Serie geschalteten Dekodierern (Decoder). Die Eingabesequenz wird durch eine sogenannte Embedding-Schicht in eine Vektorrepräsentation überführt. Die Gewichte der Embedding-Schicht werden während des Trainings angepasst. Im Falle des Transformers kommt zusätzlich eine Positionskodierung zum Einsatz, wodurch die sequentielle Abfolge der Wörter berücksichtigt werden kann. Ein Wort erhält somit zu Beginn eines Satzes eine andere Repräsentation als am Ende.
Die Eingabesequenz wird in der Vektorrepräsentation einer Serie von Kodierern übergeben und in eine interne Repräsentation überführt. Diese interne Repräsentation bildet die Bedeutung der Eingabesequenz abstrakt ab und wird durch die Dekodierer in eine Ausgabesequenz übersetzt. Die Eingabesequenz wird hierbei in Batches verarbeitet, wobei die Länge der Kodierer-Dekodierer-Pipeline die maximale Länge der Eingabesequenz beschränkt. Je nach Größe des Netzwerks können beispielsweise einzelne Sätze oder auch ganze Absätze verarbeitet werden. Bei Eingabesequenzen, welche kürzer sind als die Kodierer-Dekodierer-Pipeline, wird Padding zum Auffüllen der Eingabesequenz genutzt. Ein Kodierer besteht aus einem Selbst-Aufmerksamkeit-Modul () und einem Feed-Forward-Netz (FFN), während der Dekodierer aus einem Selbst-Aufmerksamkeit-Modul, einem Kodierer-Dekodierer-Aufmerksamkeit-Modul und einem Feedforward-Modul besteht.
Transformer sind ein moderner Ansatz, um die Probleme des Rechenaufwands durch eine Art von Parallelisierung von Algorithmen mittels Kodierern, Dekodierern und Aufmerksamkeitsmodulen zu lösen. Aufmerksamkeits-Module steigern die Verarbeitungsgeschwindigkeit, mit der das Modell von einer Sequenz in eine andere übersetzen kann.
Alle Kodierer haben die gleiche Architektur. Dekodierer sind einander auch sehr ähnlich. Jeder Kodierer besteht aus zwei Schichten: Self-Attention und einem Feed-Forward Netz (FNN). Die Eingaben des Kodierers durchlaufen zunächst ein Self-Attention Layer. Der Dekodierer verfügt über beide Ebenen, aber zwischen ihnen befindet sich ein Attention Layer, das dem Dekodierer hilft, sich auf relevante Teile der Eingabemenge zu konzentrieren. Außerdem sind in der Architektur mehrere Residualverbindungen und Layer-Normalisierungen enthalten.
Der essentielle Baustein des Transformer-Modells, der Encoder-Block (Abbildung links), ist eine Funktion mit , die definiert ist durch
Dabei wird die Softmax-Funktion und ein Rectifier (ReLU) verwendet. Jede Encoderschicht enthält zwei Unterschichten: die Selbst-Aufmerksamkeit und das Feed-Forward-Netzwerk (FFN).
Kodierer Die erste Teilschicht implementiert einen Mechanismus mit Mehrfach-Kopf Selbst-Aufmerksamkeit (). Dieser Mechanismus implementiert Heads, die eine linear projizierte Version der Abfragen, Schlüssel und Werte empfangen und parallel jeweils die gleiche Anzahl Ausgaben erzeugen, die dann zum Generieren eines Endergebnisses verwendet werden. Die zweite Teilschicht ist ein vollständig verbundenes Feedforward Neural Network, das aus zwei linearen Transformationen mit dazwischenliegender Aktivierung der Rectified Linear Unit (ReLU) besteht. Alle sechs Schichten des Kodierers wenden die gleichen linearen Transformationen auf alle Wörter in der Eingabesequenz an, aber jede Schicht verwendet dazu unterschiedliche Parameter. Auf jede Teilschicht folgt eine Normalisierungsschicht, die die berechnete Summe zwischen der Eingabe in die Teilschicht und der von der Teilschicht generierten Ausgabe normalisiert.
Die Transformer-Architektur kann grundsätzlich keine Informationen über die relativen Positionen der Wörter in der Sequenz erfassen, weil sie keine Wiederholung nutzt. Diese Informationen müssen durch die Kodierung der Positionen in die Eingabeeinbettungen eingefügt werden. Die Vektoren für die Kodierung der Positionen haben die gleiche Dimension wie die Eingabeeinbettungen und werden mithilfe von Sinus und Kosinus unterschiedlicher Frequenz generiert. Anschließend werden sie zu den Eingabeeinbettungen summiert, um die Positionsinformationen einzufügen.
Dekodierer Während der Inferenz kann ein Dekodierer zur autoregressiven Erzeugung von Sequenzen verwendet werden: Der Dekodierer wird mit einer Startsequenz abgefragt und sagt dann das nächste wahrscheinlichste Token vorher, welches im nächsten Schritt Teil der Eingabe wird (und so weiter). Beim Training des Dekodierers wird dieser Prozess durch das sogenannte „Teacher Forcing“ und Maskierung im Dekodierer ersetzt, womit das Training stark beschleunigt wird.
Jede Schicht Dekodierer enthält drei Teilschichten: die kausal maskierte Selbstaufmerksamkeit (), die Kreuzaufmerksamkeit () und das Feedforward-Netzwerk (FFN). Weitere Details sind die residual connections eines Residual Neural Network und die Schichtnormalisierung (Funktion: LayerNorm), die zwar konzeptionell unnötig, aber für numerische Stabilität und Konvergenz erforderlich sind. Ähnlich wie die Feedforward-Netzwerkmodule einzeln auf jeden Vektor angewendet werden, wird auch LayerNorm einzeln auf jeden Vektor angewendet. Es werden zwei gängige Konventionen verwendet: die Post-LN- und die Pre-LN-Konvention. In der Post-LN-Konvention ist die Ausgabe jeder Teilschicht
wobei die von der Teilschicht selbst implementierte Funktion ist.
In der Pre-LN-Konvention ist die Ausgabe jeder Unterschicht
Der ursprüngliche Transformer von 2017 verwendete die Post-LN-Konvention. Es war schwierig zu trainieren und erforderte eine sorgfältige Abstimmung der Hyperparameter und ein „Aufwärmen“ der Lernrate, bei dem sie klein beginnt und allmählich zunimmt. Die im Jahr 2018 vorgeschlagene Pre-LN-Konvention erwies sich als einfacher zu trainieren, da kein „Aufwärmen“ erforderlich ist und die Konvergenz somit schneller erfolgt.
Ablaufdiagramme
Attention-Modul
Die Aufgabe des Aufmerksamkeits-Bausteins () besteht darin, die Korrelation eines Eingabesymbols (Token) zu den anderen Eingabesymbolen zu berechnen. Gegeben sei die Worteinbettung des i-ten Tokens einer Sequenz. Diese Einbettung ist ein als Vektor kodiertes Eingabesymbol. Aus jeder Einbettung werden unabhängig voneinander drei Vektoren berechnet, indem die Einbettung mit einer jeweils erlernten Matrix , oder multipliziert wird:
, der Abfragevektor (engl. ) , der Schlüsselvektor (engl. ) , der Wertevektor (engl. )
Hieraus wird das Aufmerksamkeitsgewicht () zwischen Token i und Token j der Sequenz durch das Skalarprodukt berechnet
und schließlich durch die Quadratwurzel der Länge der Schlüsselvektoren geteilt, um stabilere Gradienten zu erhalten (da die Softmax-Funktion bei großen absoluten Funktionsargumenten stark abflacht und der Gradient somit sehr klein wird):
Hierauf wird die Softmax-Funktion entlang der letzten Dimension angewandt:
Dieser skalare Wert wird nun mit dem Wertevektor multipliziert, was dazu führt, dass der Wertevektor mit einem Aufmerksamkeitsfaktor vergrößert oder verkleinert wird:
wobei der Vektor die berechnete Ausgabe des Attention-Moduls für Token i darstellt.
Unterschiede zwischen Attention im Encoder und Decoder