E· Universitetsprakmodeller· ca 60 min· utvecklande· verifierad 2026-09-20
Sampling: temperatur, top-k, top-p, beam
Kunna implementera dekodningsstrategier och förklara deras effekt på variation och kvalitet.
Förkunskaper
Intuition
Modellen ger en sannolikhet per möjligt nästa token. Dekodningsstrategin avgör hur ett väljs.
| Strategi | Hur | Ger |
|---|---|---|
| Girig | alltid högst sannolikhet | deterministiskt, repetitivt |
| Temperatur | skala logits med 1/T före softmax | T<1 försiktigare, T>1 mer varierat |
| Top-k | dra bara bland de k troligaste | klipper svansen, fast k |
| Top-p (nucleus) | dra bland de minsta som summerar till p | adaptivt — smalt när modellen är säker |
| Beam search | håll b delsekvenser, behåll de bästa | bäst för översättning, tråkigt för fri text |
Standardval: T ≈ 0,7 och top-p ≈ 0,9 för kreativ text; T = 0 (girig) för klassificering, extraktion och kod som ska vara reproducerbar.
Kod
import numpy as np
def softmax(z):
z = z - z.max(); e = np.exp(z); return e / e.sum()
def sampla(logits, T=1.0, top_k=None, top_p=None, rng=np.random.default_rng(0)):
if T <= 0:
return int(np.argmax(logits)) # girig
p = softmax(logits / T)
if top_k:
klipp = np.argsort(p)[:-top_k]
p[klipp] = 0
if top_p:
ordning = np.argsort(p)[::-1]
kum = np.cumsum(p[ordning])
behall = ordning[: int(np.searchsorted(kum, top_p)) + 1]
mask = np.zeros_like(p, dtype=bool); mask[behall] = True
p[~mask] = 0
p = p / p.sum()
return int(rng.choice(len(p), p=p))
logits = np.array([4.0, 3.5, 1.0, 0.5, -2.0])
print(softmax(logits).round(3)) # [0.55 0.334 0.027 0.017 0.001]
print(sampla(logits, T=0)) # 0 (girig)
print([sampla(logits, T=1.0, top_p=0.9) for _ in range(5)])
Beam search svaghet: den maximerar sekvensens totala sannolikhet, och den mest sannolika texten är ofta generisk och repetitiv («Jag vet inte. Jag vet inte.»). Människor skriver inte maximalt sannolika meningar — därför används sampling för fri text och beam bara där det finns ett «rätt» svar.
Behärskning innebär
- Implementerar temperatur, top-k och top-p
- Väljer strategi efter uppgift
- Förklarar beam search och dess svaghet
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — The Curious Case of Neural Text Degeneration (nucleus sampling) — arXiv (öppen åtkomst; licens per artikel)
- Hugging Face — dokumentation (Apache-2.0) — Apache-2.0