English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

gast
1 / ?
terug naar lessen

Een Embedding Is een Lookup, Geen Functie

Een Eerste Laag Na een Tokenizer

Een tokenizer geeft een model integer-ID’s: [256, 1842, 7301, ...]. Een eerste ding dat een transformer doet: elke ID omzetten in een vector van d_model floats. Die vector leeft in een d_model-dimensionale ruimte (768 dimensies voor ANDREA-120M).


Een embedding-laag is een lookup-tabel, geen functie. Stel je een gigantische matrix voor:


vorm: (V, d_model)
rij 0:    [e_0_0, e_0_1, ..., e_0_767]
rij 1:    [e_1_0, e_1_1, ..., e_1_767]
...
rij 8448: [e_8448_0, e_8448_1, ..., e_8448_767]

Token-ID i selecteert rij i. Directe array-toegang. Geen rekenkundige bewerkingen, geen activatiefunctie. Alleen een index.


Token & position embedding flow


Trainbare floats

Elke entry in die tabel begint als een kleine willekeurige float (meestal getrokken uit een normale verdeling geschaald met 1/sqrt(d_model)). Backpropagation werkt elke rij bij telkens wanneer zijn token-ID in een batch voorkomt. Na training krijgen vergelijkbare tokens (cat, dog, pet) vergelijkbare vectoren; niet-gerelateerde tokens (cat, Tuesday, xylophone) liggen ver uit elkaar in de vectorruimte.


ANDREA-120M Token Embedding Kosten


HoeveelheidWaarde
V8.449
d_model768
Parameters6.488.832

Ruwe schatting: 6,5 miljoen parameters bevinden zich alleen al in een token-embeddingtabel, ongeveer 5,4 % van de totale grootte van ANDREA-120M. Elke vocabulaire-ingang krijgt deze 768 floats.

Grootte van embeddingtabellen

Bereken het aantal parameters voor token-embeddings voor twee toekomstige varianten. (a) ANDREA-480M: V = 16.641 (een tokenizer met 16.384 segmenten plus 256 bytes plus 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4.353, d_model = 384. Toon de vermenigvuldiging V × d_model voor elk.

Dot-producten meten gelijkenis

Vectoren als pijlen

Een 768-dimensionale vector leeft in een ruimte die mensen niet kunnen visualiseren, maar dezelfde algebra werkt in elke dimensie. Twee belangrijke operaties zijn relevant voor transformers:


Grootte (lengte van een pijl):


||v|| = sqrt(v_0² + v_1² + ... + v_767²)

Inwendig product (uitlijning tussen twee pijlen):


u · v = u_0 × v_0 + u_1 × v_1 + ... + u_767 × v_767

Wat een inwendig product je vertelt

Twee feiten die in elke dimensie gelden:


- u · v = ||u|| × ||v|| × cos(theta), waarbij theta de hoek tussen hen is.

- Vectoren die in dezelfde richting wijzen geven grote positieve inproducten.

- Vectoren die in tegengestelde richtingen wijzen geven grote negatieve inproducten.

- Vectoren onder een rechte hoek geven een inproduct van nul.


Inproduct = ongenormaliseerde gelijkenis. Twee getrainde token-embeddings voor cat & dog krijgen een hoog inproduct omdat backpropagation ze dichter bij elkaar duwde (beide voorspellen contexten gerelateerd aan huisdieren). cat & Tuesday eindigen bijna orthogonaal omdat ze verschillende contexten voorspellen.


Waarom een Transformer Zich Bekommert

Activiteit 5 (grow_a_language_model_attention) bouwt aandacht op uit dot-producten: een query-vector dot-producted met key-vectoren levert scores op die aangeven welke vorige tokens van belang zijn voor het voorspellen van de volgende. Embeddings en dot-producten samen dragen elke interactie binnen een transformer.

Voorspel Overeenkomst

Na training eindigt de embedding van ANDREA-120M voor `believ` (tokenrij 4287, hypothetisch) ongeveer uitgelijnd met `know`, `understand`, `learn`. Zonder exacte waarden te berekenen, voorspel een volgorde van grootste dot-product naar kleinste: `believ · know`, `believ · stone`, `believ · understand`. Rechtvaardig je volgorde met één zin per paar.

ANDREA gebruikt geleerde positie-embeddings

Een probleem

Een token-embedding vertelt een model welk woord zich op deze positie bevindt. Het vertelt een model niet waar dat woord zich bevindt. Zonder positie-informatie behandelt een transformer the cat sat on a mat en mat a on sat cat the identiek: dezelfde set tokens, geen volgordesignaal.


Er bestaan drie oplossingen in de transformer-literatuur:


Sinusoidal (Vaswani 2017). Een vaste wiskundige formule gebaseerd op sinus- en cosinusfuncties. Positie 0 krijgt een specifieke 768-vector; positie 1 krijgt een andere; nooit getraind, nooit bijgewerkt. Generaliseert naar elke positie via de formule.


RoPE (Rotary Position Embedding). Roteert query- en key-vectoren op basis van positie. Gebruikt door LLaMA en Qwen. Geen extra parameters; rotatie is ingebouwd in de attention.


Learned. Een aparte embedding-tabel met vorm (T, d_model) waarbij T de contextlengte is. Elke rij wordt getraind via backpropagation, net als token-embeddings.


ANDREA's Choice: Learned

ANDREA erft een learned-position-aanpak van microGPT, die het weer erfde van nanoGPT, dat het erfde van GPT-2. Een redenatie:


- Simplicity. Geen speciale wiskunde in attention. Een position table ziet eruit als een token table.

- Compatibiliteit met custom CUDA. ANDREA's microgpt_cuda.cu engine behandelt twee embedding lookups identiek; geen sin/cos kernels nodig.

- Voldoende voor vaste context. ANDREA beperkt T tot 1024. Een learned table werkt prima voor sequences van vaste lengte.


ANDREA-120M Position Embedding Cost


HoeveelheidWaarde
T (context)1,024
d_model768
Parameters786,432

0.79M parameters voor positie. Gecombineerd met token embeddings: 6.49M + 0.79M = 7.27M embedding parameters totaal voor ANDREA-120M.


Hoe Ze Combineren

Op elke positie t in een invoerreeks:


x_t = token_embedding[token_id_t] + position_embedding[t]

Twee 768-vectoren, elementgewijs opgeteld. Het resultaat, x_t, stroomt een eerste transformerblok in. Een model scheidt ze nooit meer; het leert om het gecombineerde signaal te gebruiken.

Geleerd versus sinusoïdaal

Vergelijk twee position-embeddingstrategieën voor een hypothetisch ANDREA-model. Strategie A: geleerd, T = 1024. Strategie B: sinusoïdaal, T willekeurig (werkt voor elke sequentielengte). Noem één voordeel van elk. Geef daarna aan welke ANDREA kiest en één reden vanuit een CUDA-/engineeringperspectief.

Waar Embeddingparameters Zitten

Een Volledige ANDREA-120M Embeddinglaag


ComponentShapeParameters
Token embedding table8,449 × 7686,488,832
Position embedding table1,024 × 768786,432
Totaal7,275,264

Ongeveer 7,3M parameters. ANDREA-120M's totale parameteraantal: ~120M. Embedding-laag alleen: 6%. De overige 94% bevindt zich in transformerblokken (attention + MLP, behandeld in activiteiten 5-7).


Ontkoppelde vs Gekoppelde Embeddings

Veel transformermodellen (inclusief GPT-2) koppelen een token-embedding aan een uiteindelijke output-projectie: dezelfde V × d_model-matrix wordt gebruikt bij de input en bij de output (logits over de woordenschat). Deze koppeling bespaart V × d_model parameters en verbetert vaak de kwaliteit.


ANDREA gebruikt ontkoppelde embeddings: de input-embedding en de output-projectie worden getraind als aparte matrices. Activiteit 7 (grow_a_language_model_transformer_block) behandelt een laatste laag.


Een Forward Pass Tot Nu Toe

Input: token-ID's [256, 1842, 7301, ...] (1024 stuks). Elke ID zoekt een 768-vector op. Elke positie zoekt een 768-vector op. Som elementgewijs. Resultaat: een (1024, 768)-matrix x van token-+-positie-vectoren. x stroomt naar transformatorblok 1.


Activiteit 5 (grow_a_language_model_attention) behandelt wat blok 1 doet: geschaalde dot-product attention met causale mask en softmax.

Voorspel de structuur van embeddings

Reflectie: ANDREA-120M heeft 8449 token-embeddings en 1024 positie-embeddings, die eenzelfde 768-dimensionale ruimte delen. Wat zou je na training verwachten: (a) hoe ziet een token-embeddingmatrix eruit (clusterpatronen?), of (b) hoe ziet een positie-embeddingmatrix eruit (vloeiende gradiënt?). Kies één en voorspel in één of twee zinnen. Er is geen fout antwoord; redeneren telt.