Språkmodeller — träning och generering
Kunna förklara nästa-token-träning, perplexitet, sampling (temperatur, top-p) och skillnaden mellan bas- och instruktionsmodell.
Förkunskaper
- DLoss-funktionerkrävs
- DTokeniseringkrävs
- DTransformers — arkitekturenkrävs
Intuition
En språkmodell är en funktion från en token-sekvens till en sannolikhetsfördelning över nästa token. Träning: visa den enorma mängder text, straffa den (cross-entropy) varje gång rätt nästa token fick låg sannolikhet. Inget facit skrivs av människor — texten är facit. Det kallas självövervakad träning.
Perplexitet = exp(medel-cross-entropy): «hur många lika troliga alternativ modellen i snitt tvekar mellan». 20 är bra på engelska, 2 är misstänkt (memorering eller läckt testdata).
Generering: dra en token ur fördelningen, lägg till, upprepa. Temperatur skalar logits före softmax: T→0 blir girig (alltid troligaste), T = 1 modellens egen fördelning, T > 1 plattare/kreativare. Top-p: dra bara ur den minsta mängd tokens vars sannolikhet summerar till p — klipper bort svansen av dumheter.
Basmodell fortsätter text. Instruktionsmodell är därefter tränad på (fråga, bra svar)-par och ofta preferensdata (RLHF/DPO) — den svarar i stället för att fortsätta.
Kod
import numpy as np
def softmax(z):
z = z - z.max(); e = np.exp(z); return e / e.sum()
logits = np.array([3.0, 2.0, 0.5, -1.0]) # nästa-token-logits för 4 tokens
for T in (0.2, 1.0, 2.0):
print(T, np.round(softmax(logits / T), 3))
# 0.2 [0.993 0.007 0. 0. ] ← nästan girig
# 1.0 [0.68 0.25 0.056 0.013]
# 2.0 [0.48 0.29 0.14 0.065] ← plattare
def top_p(p, thr=0.9):
idx = np.argsort(p)[::-1]; cum = np.cumsum(p[idx])
keep = idx[: int(np.searchsorted(cum, thr)) + 1]
q = np.zeros_like(p); q[keep] = p[keep]; return q / q.sum()
print(np.round(top_p(softmax(logits)), 3)) # [0.731 0.269 0. 0.] — svansen bort
# perplexitet ur token-sannolikheter för rätt token:
p_ratt = np.array([0.4, 0.1, 0.6, 0.05])
print(np.exp(-np.mean(np.log(p_ratt)))) # ≈ 5.3
Formellt
Modellen parametriserar . Träningsmålet är över korpusen; hela sekvensens sannolikhet är kedjeregeln . Perplexitet på en testtext med tokens: — den är tokenizer-beroende, så jämför bara modeller med samma tokenizer. Temperatur: . Skalningslagar (Kaplan 2020, Hoffmann 2022) visar att testloss faller som en potensfunktion av parametrar, data och beräkning, med ett optimalt data/parameter-förhållande (~20 tokens per parameter i Chinchilla).
Behärskning innebär
- Förklarar nästa-token-träning och perplexitet
- Beskriver temperatur och top-p och deras effekt
- Skiljer bas- och instruktionsmodell
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Dive into Deep Learning (CC BY-SA 4.0) — CC BY-SA 4.0
- arXiv — Language Models are Few-Shot Learners — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Training Compute-Optimal Large Language Models — arXiv (öppen åtkomst; licens per artikel)
Leder till
- EBas- kontra instruktionsmodeller
- EFinjustering av språkmodeller
- EFlerspråkighet och svenska modeller
- EHallucinationer — orsaker och motmedel
- EModellutvärdering
- EPerplexitet
- ERAG — retrieval-augmented generation
- ESampling: temperatur, top-k, top-p, beam
- ESpråkmodeller för kod
- EVerktygsanvändning (tool use)
- FBildbeskrivning och visuella frågor
- FFörträning i praktiken
Del av målen (21)
- Språkmodeller i praktiken
- Multimodala system
- Finjustera och driva egna modeller
- Bygg ett RAG-system som går att lita på
- Kör modeller billigare: kvantisering
- Evals i praktiken
- Bygg en agent som går att lita på
- Bygg ett minnessystem för en agent
- AI-säkerhet i praktiken
- Finjustera en modell med LoRA
- Ansvarsfull AI i praktiken
- AI i produktion
- Bygg ett NLP-system end-to-end
- Generativa modeller i djupet
- AI-tjänst i drift
- Bygg en AI-tjänst som håller i drift
- Djup reinforcement learning
- Frontier Lab — självständigt forskningsprojekt
- Reproducera ett paper
- Statistik för experiment
- Tolka en språkmodell