Encoder
- Es wird erklärt, wie Text in Vektoren umgewandelt wird und wie den daraus gewonnenen Embeddings Positionsinformationen hinzugefügt werden.
- Ziel ist es, Embeddings zu erzeugen, die semantische Informationen des Eingabetexts erfassen.
1. Text-Embedding
- "Hello World" wird in Vektoren umgewandelt, um Embeddings zu erzeugen.
- Jedem Token werden beliebige Werte zugewiesen, um einen Vektor zu erzeugen.
2. Positionskodierung
- Um den Embeddings Positionsinformationen der Wörter hinzuzufügen, wird eine Positionskodierung addiert.
- Mit festen Vektoren werden jeder Position eindeutige und konsistente Zahlenmuster zugewiesen.
3. Kombination von Positionskodierung und Embeddings
- Positionskodierung und Embeddings werden addiert, um eine neue Matrix zu erzeugen, die als Eingabe für den Encoder verwendet wird.
Self-Attention
- Es wird Attention als Mechanismus erklärt, der es dem Modell ermöglicht, sich auf bestimmte Teile der Eingabe zu konzentrieren.
- Mit Multi-Head-Attention kann gleichzeitig in verschiedenen Repräsentationsräumen auf Informationen fokussiert werden.
4.1 Definition der Matrizen
- Für jeden Attention-Head werden die Matrizen K, V und Q definiert.
4.2 Berechnung von Keys, Queries und Values
- Durch Multiplikation der Eingabe-Embeddings mit Gewichtungsmatrizen werden die Matrizen für Keys, Queries und Values berechnet.
4.3 Berechnung der Attention
- Das Skalarprodukt aus Query und jedem Key-Vektor wird berechnet und das Ergebnis durch die Quadratwurzel der Dimension des Key-Vektors geteilt.
- Anschließend wird die Softmax-Funktion angewendet, um die Attention-Gewichte zu erhalten.
- Jeder Value-Vektor wird mit den Attention-Gewichten multipliziert.
Feed-forward-Layer
- Im Encoder gibt es nach der Self-Attention-Schicht ein Feed-forward-Neuronales-Netz.
- Dieses Netzwerk verwendet zwei lineare Transformationen und die ReLU-Aktivierungsfunktion.
5.1 Grundlegender Feed-forward-Layer
- Die erste lineare Schicht erweitert die Dimension der Eingabe; nach Anwendung der ReLU-Aktivierungsfunktion reduziert die zweite lineare Schicht die Dimension wieder auf die ursprüngliche Größe.
5.2 Kombination aller Prozesse im Encoder
- Ein Encoder-Block, der Multi-Head-Attention und den Feed-forward-Layer enthält, wird in Code umgesetzt.
5.3 Residualverbindungen und Layer-Normalisierung
- Residualverbindungen bedeuten, dass die Eingabe einer Schicht zur Ausgabe addiert wird, und Layer-Normalisierung ist eine Technik zur Normalisierung der Eingabe einer Schicht.
Meinung von GN⁺
- Dieser Artikel vereinfacht komplexe Mathematik, um das mathematische Verständnis von Transformer-Modellen zu fördern.
- Er hilft insbesondere dabei, die Funktionsweise des Self-Attention-Mechanismus und des Feed-forward-Neuronalen-Netzes zu verstehen.
- Indem gezeigt wird, wie Techniken wie Residualverbindungen und Layer-Normalisierung zur Stabilität und Leistung neuronaler Netze beitragen, liefert er Einblicke darin, wie Lernprobleme tiefer neuronaler Netze gelöst werden können.
1 Kommentare
Hacker-News-Kommentare
Das „Mysterium“ der Transformer besteht darin, dass sie in jeder Schicht statt statischer Gewichte und einer linearen Folge von Werten 3 verschiedene Matrizen verwenden, die aus demselben Input über die Multiplikation mit gelernten Gewichten gewonnen werden, und diese Matrizen dann miteinander multiplizieren. Das ermöglicht mehr Parallelverarbeitung, aber die Attention-Formel ist sehr statisch und daher stark eingeschränkt.
Wer einen trockeneren, formelleren und knapperen Ansatz möchte, sollte John Thickstuns „The Transformer Model in Equations“ lesen. Der gesamte Inhalt passt unter Verwendung mathematischer Standardnotation auf nur eine Seite.
Beim Lesen des Artikels kommen Fragen auf.
Ich würde gern ein Paper oder einen Artikel dazu finden, warum Transformer, obwohl sie einfach als „Next-Token-Predictor“ funktionieren, trotzdem mit Wörtern oder Subwords/Tokens umgehen können, die nicht im Trainingsdatensatz vorkamen.
Transformer-Tutorials könnten die neuen Monad-Tutorials sein. Es ist ein schwer verständliches Konzept, aber wie bei vielen Teilen der Informatik muss man sich abmühen und Beispiele üben, um es zu verstehen.
Ich kenne einige der Wörter.
Als jemand, der schon einmal ein ANN von Grund auf ohne TensorFlow geschrieben hat, finde ich diese Erklärung immer noch verwirrend.
Die Quarto-Website gefällt mir. Ich sehe, dass mehr Python-Nutzer Quarto zum Publizieren verwenden.
Ich frage mich, ob es in Schritt 7 des Decoders statt
Z_encoder_decoder = layer_norm(Z_encoder_decoder + Z)nichtZ_encoder_decoder = layer_norm(Z_encoder_decoder + Z_self_attention)heißen sollte und ob in Schritt 8 des Decoderslayer_normfehlt.Ich frage mich, ob LLMs neuronale Netze verwenden und was genau ein „Neuron“ ausmacht. Also ob es eine Code-Struktur gibt, die ein Neuron abbildet, oder ob es „einfach nur“ komplexe Mathematik ist.