Transformer Explainer: Het LLM Transformer-model Visueel Uitgelegd
Wat is een Transformer?
Fundamenteel werken tekstgenererende Transformer-modellen volgens het principe van next-token prediction: gegeven een tekstprompt van de gebruiker, wat is het meest waarschijnlijke volgende token (een woord of een deel van een woord) dat op deze invoer volgt? De kerninnovatie en kracht van Transformers liggen in het gebruik van het self-attention-mechanisme. Hiermee kunnen ze volledige sequenties verwerken en lange-afstandsafhankelijkheden effectiever vastleggen dan voorgaande architecturen.
Modellen uit de GPT-2 familie zijn prominente voorbeelden van tekstgenererende Transformers. Transformer Explainer wordt aangedreven door het GPT-2 (small) model, dat 124 miljoen parameters heeft. Hoewel dit niet het nieuwste of krachtigste Transformer-model is, deelt het veel van dezelfde architecturale componenten en principes als de huidige state-of-the-art modellen, waardoor het een ideaal startpunt is om de basis te begrijpen.
Transformer Architectuur
Elke tekstgenererende Transformer bestaat uit deze drie kerncomponenten:
- Embedding: Tekstinput wordt opgedeeld in kleinere eenheden genaamd tokens, wat woorden of subwoorden kunnen zijn. Deze tokens worden omgezet in numerieke vectoren, genaamd embeddings, die de semantische betekenis van woorden vastleggen.
- Transformer Block: Dit is het fundamentele bouwblok van het model dat de inputdata verwerkt en transformeert. Elk blok bevat:
- Attention Mechanism: De kerncomponent van het Transformer-blok. Het stelt tokens in staat om te communiceren met andere tokens, waardoor contextuele informatie en relaties tussen woorden worden vastgelegd.
- MLP (Multilayer Perceptron) Layer: Een feed-forward netwerk dat onafhankelijk op elk token opereert. Waar het doel van de attention-laag is om informatie tussen tokens te routeren, is het doel van de MLP om de representatie van elk individueel token te verfijnen.
- Output Probabilities: De uiteindelijke lineaire lagen en softmax-lagen transformeren de verwerkte embeddings in waarschijnlijkheden, waardoor het model voorspellingen kan doen over het volgende token in een sequentie.
Embedding
Wanneer u tekst wilt genereren met een Transformer-model, voert u een prompt in, zoals: "Data visualization empowers users to". Deze invoer moet worden omgezet in een formaat dat het model kan begrijpen en verwerken. Dat is waar embedding om de hoek komt kijken: het transformeert de tekst in een numerieke representatie.
Om een prompt om te zetten naar een embedding, doorloopt het model de volgende stappen:
- Tokeniseren van de input.
- verkrijgen van token embeddings.
- Toevoegen van positionele informatie.
- Optellen van token- en positie-coderingen voor de finale embedding.
Afbeelding 1. Detailweergave van de Embedding-laag, die laat zien hoe de input-prompt wordt omgezet in een vectorrepresentatie. Het proces omvat (1) Tokenisatie, (2) Token Embedding, (3) Positional Encoding, en (4) Final Embedding.
Stap 1: Tokenisatie
Tokenisatie is het proces van het opbreken van de inputtekst in kleinere, hanteerbare stukken genaamd tokens. Deze tokens kunnen een heel woord of een subwoord zijn. De woorden "Data" en "visualization" komen overeen met unieke tokens, terwijl het woord "empowers" wordt gesplitst in twee tokens. De volledige vocabulaire van tokens wordt bepaald vóór het trainen van het model; de vocabulaire van GPT-2 bevat 50.257 unieke tokens.
Stap 2: Token Embedding
GPT-2 (small) representeert elk token in de vocabulaire als een 768-dimensionale vector (de dimensie hangt af van het model). Deze embedding-vectoren zijn opgeslagen in een matrix van 50.257 x 768, wat ongeveer 39 miljoen parameters beslaat. Deze uitgebreide matrix stelt het model in staat om semantische betekenis toe te kennen aan elk token: tokens met een vergelijkbaar gebruik of betekenis in de taal worden dicht bij elkaar geplaatst in deze hoogdimensionale ruimte, terwijl ongelijksoortige tokens verder uit elkaar staan.
Stap 3: Positionele Codering (Positional Encoding)
De Embedding-laag codeert ook informatie over de positie van elk token in de input-prompt. Verschillende modellen gebruiken verschillende methoden voor positionele codering. GPT-2 traint zijn eigen positionele coderingsmatrix vanaf nul en integreert deze direct in het trainingsproces.
Stap 4: Finale Embedding
Tot slot worden de token- en positie-coderingen bij elkaar opgeteld om de finale embedding-representatie te verkrijgen. Deze gecombineerde representatie legt zowel de semantische betekenis van de tokens als hun positie in de inputsequentie vast.
Transformer Block
De kern van de verwerking van de Transformer ligt in het Transformer-blok, dat bestaat uit multi-head self-attention en een Multi-Layer Perceptron (MLP) laag. De meeste modellen bestaan uit meerdere van deze blokken die sequentieel op elkaar zijn gestapeld. De token-representaties evolueren door de lagen heen, van het eerste blok naar het laatste, waardoor het model een complex begrip van elk token opbouwt. Deze gelaagde aanpak leidt tot representaties van hogere orde. Het GPT-2 (small) model bestaat uit 12 van deze blokken.
Multi-Head Self-Attention
Het self-attention-mechanisme stelt het model in staat om relaties tussen tokens in een sequentie vast te leggen, zodat de representatie van elk token wordt beïnvloed door de andere. Meerdere attention heads stellen het model in staat om deze relaties vanuit verschillende perspectieven te bekijken; bijvoorbeeld kan één head korte syntactische links vastleggen, terwijl een andere head de bredere semantische context volgt.
Stap 1: Query, Key en Value Matrices
$$QKV{ij} = ( \sum{d=1}^{768} \text{Embedding}{i,d} \cdot \text{Weights}{d,j}) + \text{Bias}_j$$
Afbeelding 2. Berekening van Query, Key en Value matrices vanuit de oorspronkelijke embedding.
De embedding-vector van elk token wordt getransformeerd in drie vectoren: Query (Q), Key (K) en Value (V). Deze vectoren worden afgeleid door de input-embedding-matrix te vermenigvuldigen met geleerde gewichtsmatrices voor Q, K en V.
Om dit intuïtief te begrijpen, kunnen we een analogie maken met een webzoekopdracht:
- Query (Q): De zoektekst die u in de zoekbalk typt. Dit is het token waarover u "meer informatie wilt vinden".
- Key (K): De titel van elke webpagina in de zoekresultaten. Het representeert de mogelijke tokens waarnaar de query kan kijken.
- Value (V): De eigenlijke inhoud van de getoonde webpagina's.
Zodra de juiste zoekterm (Query) is gekoppeld aan de relevante resultaten (Key), wil het model de inhoud (Value) van de meest relevante pagina's ophalen. Met deze QKV-waarden kan het model attention scores berekenen, die bepalen hoeveel focus elk token moet krijgen bij het genereren van voorspellingen.
Stap 2: Multi-Head Splitting
De Query-, Key- en Value-vectoren worden gesplitst in meerdere heads — in het geval van GPT-2 (small) zijn dit 12 heads. Elke head verwerkt een segment van de embeddings onafhankelijk, waardoor verschillende syntactische en semantische relaties worden vastgelegd. Dit ontwerp faciliteert het parallel leren van diverse linguïstische kenmerken.
Stap 3: Masked Self-Attention
In elke head worden masked self-attention berekeningen uitgevoerd. Dit mechanisme stelt het model in staat om sequenties te genereren door zich te concentreren op relevante delen van de input, terwijl toegang tot toekomstige tokens wordt voorkomen.
Afbeelding 3. Gebruik van Query, Key en Value matrices om masked self-attention te berekenen.
- Dot Product: Het dot-product van de Query- en Key-matrices bepaalt de attention score. Dit resulteert in een vierkante matrix die de relatie tussen alle input-tokens weerspiegelt.
- Scaling & Mask: De attention scores worden geschaald en er wordt een masker toegepast op de bovenste driehoek van de matrix om te voorkomen dat het model in de toekomst "gluurt". Deze waarden worden ingesteld op negatieve oneindigheid.
- Softmax & Dropout: Na het maskeren en schalen worden de scores via een softmax-operatie omgezet in waarschijnlijkheden, en optioneel geregulariseerd met dropout. Elke rij van de matrix telt op tot één en geeft de relevantie van elk token links van het huidige token aan.
Stap 4: Output en Concatenatie
Het model vermenigvuldigt de masked self-attention scores met de Value-matrix om de uiteindelijke output van het self-attention-mechanisme te krijgen. De outputs van de 12 heads worden geconcateneerd (aan elkaar geplakt) en door een lineaire projectie geleid.
MLP: Multi-Layer Perceptron
Afbeelding 4. Gebruik van de MLP-laag om self-attention representaties naar hogere dimensies te projecteren om de representatiecapaciteit van het model te vergroten.
Na de self-attention fase gaan de geconcateneerde outputs naar de Multilayer Perceptron (MLP) laag. De MLP bestaat uit twee lineaire transformaties met een GELU-activatiefunctie ertussen.
- Expansie: De eerste lineaire transformatie vergroot de dimensionaliteit van de input viermaal, van 768 naar 3072. Deze stap stelt het model in staat om token-representaties in een hoger-dimensionale ruimte te projecteren, waar rijkere en complexere patronen kunnen worden vastgelegd.
- Compressie: De tweede lineaire transformatie brengt de dimensionaliteit terug naar de oorspronkelijke grootte van 768. Dit houdt de representaties hanteerbaar terwijl de nuttige niet-lineaire transformaties behouden blijven.
In tegenstelling tot het self-attention-mechanisme, dat informatie over tokens heen integreert, verwerkt de MLP tokens onafhankelijk.
Output-waarschijnlijkheden
Nadat de input door alle Transformer-blokken is verwerkt, gaat de output door een finale lineaire laag. Deze projecteert de representaties naar een 50.257-dimensionale ruimte, waarbij elk token in de vocabulaire een waarde krijgt genaamd een logit.
Vervolgens wordt de softmax-functie toegepast om de logits om te zetten in een waarschijnlijkheidsverdeling die in totaal één is. Dit stelt het model in staat om het volgende token te samplen op basis van de waarschijnlijkheid.
Afbeelding 5. Elk token in de vocabulaire krijgt een waarschijnlijkheid op basis van de output-logits van het model. Deze waarschijnlijkheden bepalen de kans dat een token het volgende woord in de sequentie is.
De finale stap is het genereren van het volgende token door te samplen uit deze verdeling. Hierbij speelt de hyperparameter temperature een cruciale rol:
- Temperature = 1: Heeft geen effect op de softmax-outputs.
- Temperature < 1: Maakt het model zelfverzekerder en deterministischer door de waarschijnlijkheidsverdeling aan te scherpen, wat leidt tot meer voorspelbare outputs.
- Temperature > 1: Creëert een zachtere verdeling, wat meer willekeur in de gegenereerde tekst mogelijk maakt (vaak aangeduid als de "creativiteit" van het model).
Daarnaast kan het sampling-proces worden verfijnd met:
- Top-k sampling: Beperkt de kandidaat-tokens tot de k tokens met de hoogste waarschijnlijkheid.
- Top-p sampling: Overweegt de kleinste set tokens waarvan de cumulatieve waarschijnlijkheid een drempelwaarde $p$ overschrijdt.
Aanvullende Architecturale Kenmerken
Er zijn verschillende hulpfuncties die de prestaties van Transformer-modellen verbeteren. Hoewel ze minder centraal staan voor het basisbegrip, zijn ze cruciaal tijdens de trainingsfase.
Layer Normalization
Layer Normalization stabiliseert het trainingsproces en verbetert de convergentie door de inputs over de features te normaliseren. Dit vermindert de gevoeligheid voor initiële gewichten en helpt het model effectiever te leren. Het wordt tweemaal per Transformer-blok toegepast: één keer vóór het self-attention-mechanisme en één keer vóór de MLP-laag.
Dropout
Dropout is een regularisatietechniek die overfitting voorkomt door tijdens de training willekeurig een fractie van de modelgewichten op nul te zetten. Dit dwingt het model om robuustere kenmerken te leren. Tijdens de inferentie (het gebruik van het model) is dropout gedeactiveerd.
Residual Connections
Geïntroduceerd in het ResNet-model (2015), zijn residual connections "snelkoppelingen" die één of meer lagen omzeilen door de input van een laag direct op te tellen bij de output. Dit helpt het vanishing gradient-probleem te voorkomen, waardoor zeer diepe netwerken met veel gestapelde Transformer-blokken makkelijker te trainen zijn. In GPT-2 worden ze tweemaal per blok gebruikt: vóór en na de MLP.
Interactieve Functies
Transformer Explainer is interactief gebouwd om de interne werking van de Transformer te verkennen:
- Eigen tekst invoeren: Zie hoe het model tekst verwerkt en het volgende woord voorspelt.
- Temperature slider: Controleer de willekeur van de voorspellingen.
- Sampling methoden: Experimenteer met top-k en top-p waarden.
- Attention maps: Interacteer met kaarten om te zien hoe het model zich concentreert op verschillende tokens en contexten vastlegt.
Technische Implementatie
Transformer Explainer maakt gebruik van een live GPT-2 (small) model dat direct in de browser draait. Dit model is afgeleid van de PyTorch-implementatie van GPT uit het nanoGPT-project van Andrej Karpathy en is geconverteerd naar ONNX Runtime voor uitvoering in de browser. De interface is gebouwd met JavaScript, waarbij Svelte als front-end framework is gebruikt en D3.js voor de dynamische visualisaties.
Ontwikkelaars
Transformer Explainer is ontwikkeld door Aeree Cho, Grace C. Kim, Alexander Karpekov, Alec Helbling, Jay Wang, Seongmin Lee, Benjamin Hoover en Polo Chau aan het Georgia Institute of Technology.
Groetjes,