Top-p (Nucleus Sampling)
Eine Sampling-Methode bei der Textgenerierung, die nur die wahrscheinlichsten Tokens berücksichtigt, deren kumulative Wahrscheinlichkeit einen Schwellenwert p erreicht.
Eine Sampling-Strategie für LLMs, die nur die wahrscheinlichsten Tokens berücksichtigt, deren kumulative Wahrscheinlichkeit einen Schwellenwert p erreicht – die Grundlage für natürliche, diverse Textgenerierung.
Nucleus Sampling löst ein Problem der Textgenerierung: Wie wählt das Modell das nächste Wort?
Das Problem mit den Alternativen:
Nucleus Sampling (Top-p) als Lösung:
Kontext: "Die Hauptstadt von Frankreich ist ___"
Token-Wahrscheinlichkeiten:
Paris: 0.92
die: 0.03
eine: 0.02
bekanntlich: 0.01
... 0.02
Top-p = 0.95 → Kandidatenpool: {Paris (0.92), die (0.03)}
→ Fast immer "Paris", aber nicht zu 100 % deterministisch
Adaptivität in Aktion:
Kontext: "Mein Lieblings___"
Token-Wahrscheinlichkeiten:
essen: 0.15
film: 0.12
buch: 0.11
tier: 0.10
sport: 0.09
...
Top-p = 0.95 → Kandidatenpool: ~15 Tokens
→ Viel mehr Variation, weil der Kontext mehrdeutig ist
def nucleus_sampling(logits, p=0.9, temperature=1.0):
# 1. Temperatur anwenden
scaled = logits / temperature
probs = softmax(scaled)
# 2. Absteigend sortieren
sorted_probs, sorted_indices = sort(probs, descending=True)
# 3. Kumulative Summe berechnen
cumsum = cumulative_sum(sorted_probs)
# 4. Alles über Schwellenwert p maskieren
mask = cumsum - sorted_probs > p
sorted_probs[mask] = 0
# 5. Neu normalisieren und samplen
sorted_probs = sorted_probs / sum(sorted_probs)
return sample(sorted_indices, sorted_probs)
| Strategie | Pool-Größe | Adaptiv | Kreativität | Standard für |
|---|---|---|---|---|
| Greedy | 1 | Nein | Keine | Übersetzung |
| Top-k | k (fix) | Nein | Mittel | Ältere Modelle |
| Top-p | Variabel | Ja | Hoch | Chat-LLMs |
| Beam Search | k Beams | Nein | Keine | Summarization |
Nucleus Sampling ist wie ein DJ, der nur die besten Songs einer Playlist spielt: Statt aus allen 10.000 Songs zufällig zu wählen, nimmt er die Top-Songs, die zusammen 90 % der Hörer-Beliebtheit ausmachen – und wählt dann zufällig daraus.
Dynamischer Kandidatenpool: Nur Tokens bis zur kumulativen Wahrscheinlichkeit p
Adaptiv: Bei klarem Kontext wenige Kandidaten, bei Mehrdeutigkeit viele
Standard-Methode für ChatGPT, Claude und die meisten Chat-LLMs
Chat-Anwendungen
Natürliche, nicht-repetitive Konversationen generieren
Kreatives Schreiben
Diverse Texte mit kontrollierbarer Kreativität erzeugen
Code-Generierung
Korrekte Code-Vorschläge mit leichter Variation
Top-k wählt immer exakt k Kandidaten (z. B. die Top 50 Tokens). Top-p wählt dynamisch so viele Tokens, bis die kumulative Wahrscheinlichkeit p erreicht ist. Top-p passt sich daher besser an den Kontext an.
OpenAI empfiehlt, nur einen der beiden Parameter anzupassen und den anderen auf dem Standardwert zu lassen. Beide gleichzeitig zu ändern kann zu unvorhersehbaren Ergebnissen führen.
Für die meisten Anwendungen: 0.9–0.95. Für kreative Texte: 0.95–1.0. Für faktische/technische Antworten: 0.7–0.85. Der Standardwert bei den meisten APIs ist 1.0 (alle Tokens berücksichtigt).