Embeddings och vikter – så räknar och lär sig språkmodellen
Följ ett token-ID till inlärda tal, räkna med en viktmatris och se varför nytt sammanhang inte är samma sak som att modellens vikter tränas om.
Se filmen: embeddings och vikter
Berättarrösten är AI-genererad. Fler filmer i Lisemarks videogalleri.
Kort sagt
Ett token-ID är ett nummer som pekar ut en textbit. Numret används för att hämta en rad i en embeddingtabell: en lista med inlärda tal som modellen kan räkna med.
Sedan omvandlar modellens vikter dessa tal genom många beräkningssteg. Resultaten längs vägen kallas aktiveringar. När du ändrar din fråga ändras normalt aktiveringarna – inte de lagrade vikterna.
Se filmen i Lisemarks videogalleri. Berättarrösten är AI-genererad. Börja gärna med föregående del: Tokens – så blir text modellens byggbitar.
När är detta användbart?
När du vill förstå skillnaden mellan att ge en modell mer sammanhang och att faktiskt träna den. Det hjälper också när någon säger att modellen ”lärde sig” något under en chatt: ett nytt svar bevisar inte att parametrarna har ändrats.
Från nummer till en rad med tal
Tänk på token-ID:t som ett radnummer, inte som en betydelse eller ett betyg. I filmens lilla låtsastabell hämtar kaffetokenen raden [1, 2]. Två dimensioner räcker för att visa principen; verkliga språkmodeller använder många fler.
Embeddingtabellens tal är själva inlärda parametrar, alltså en del av modellens vikter. En dimension behöver inte motsvara en enkel etikett som ”värme” eller ”dryck”.
Samma kaffetoken kan få samma startvektor i ”Jag gillar kaffe” och ”Jag undviker kaffe”. Men position och tillgängligt sammanhang påverkar de fortsatta beräkningarna. De interna representationerna kan därför bli olika utan att embeddingtabellen skrivs om.
Räkna själv: en vektor genom en viktmatris
Pedagogisk illustration med påhittade tal. Indatan är radvektorn [1, 2]. Viktmatrisen har två rader:
W = [ 2 -1 ]
[ 1 3 ]
Varje utvärde använder en kolumn i matrisen:
- Första kolumnen:
1 × 2 + 2 × 1 = 4. - Andra kolumnen:
1 × (−1) + 2 × 3 = 5. - Resultatet blir
[1, 2] × W = [4, 5].
Det här är en linjär omvandling utan bias, inte en hel språkmodell och inte en sannolikhetsfördelning. En transformer innehåller också bland annat attention, normalisering, icke-linjära funktioner och kopplingar som för information vidare.
Attention beräknar hur information från olika positioner blandas. Dessa indataberoende blandningskoefficienter är inte samma sak som de lagrade, inlärda viktmatriserna.
Hur ändras vikterna under träning?
Under träning jämförs en förutsägelse med ett mål. En förlustfunktion ger ett tal som beskriver felet. Gradienter visar hur parametrarna påverkar förlusten, och en optimerare använder dem för att ta ett litet uppdateringssteg.
Här är filmens separata miniexempel med en enda vikt:
Indata x = 1, vikt w = 2, mål = 3
Förutsägelse = x × w = 2
Förlust L = 0,5 × (förutsägelse − mål)² = 0,5
Gradient dL/dw = (x × w − mål) × x = −1
Steglängd = 0,1
Ny vikt = 2 − 0,1 × (−1) = 2,1
Ny förlust = 0,5 × (2,1 − 3)² = 0,405
Felet blev mindre i just detta steg. Det är ett litet räkneexempel, inte ett löfte om att varje träningssteg i en stor modell förbättrar alla svar. Även embeddingtabellen kan tränas när dess parametrar ingår i optimeringen.
Vad förändras när du chattar?
| Del | Vad det är | Ändras normalt av en ny fråga? |
|---|---|---|
| Lagrade vikter | Inlärda parametrar, inklusive embeddingtabellen. | Nej, inte vid vanlig inferens. |
| Aktiveringar | Mellanresultat från beräkningen på aktuell indata. | Ja. |
| KV-cache | Sparade beräknade nycklar och värden som kan återanvändas under generering. | Den kan byggas ut eller ersättas med sammanhanget. |
Inferens betyder här att använda den färdiga modellen. En KV-cache sparar beräkningar, men är inte en ny uppsättning inlärda modellvikter. En tjänst kan dessutom spara historik eller minnesanteckningar utanför modellen; inte heller det är i sig en viktuppdatering. Eventuell senare träning på användardata är en separat fråga om tjänstens villkor och inställningar.
Viktigaste fallgropen
Att kalla allt för ”minne” eller ”vikter”. Håll isär parametrarna som styr beräkningen, resultaten av beräkningen och sparad information runt modellen. Då blir det lättare att förstå vad ett system faktiskt ändrar.
Vidare läsning
- Föregående del: Tokens – så blir text modellens byggbitar.
- Fördjupning: Vektorer, attention och kontext i transformers – praktisk grund för LLM-förståelse.
Vad du kan göra nu
Täck över resultatet [4, 5] och räkna fram de två utvärdena kolumn för kolumn. Byt sedan indatan till [2, 1] men behåll samma matris: du får [5, 1]. Indatan och aktiveringen ändras, medan vikterna är exakt desamma.