Beam Search
Ein Decoding-Algorithmus für LLMs, der mehrere Kandidaten-Sequenzen parallel verfolgt und die wahrscheinlichste Gesamtsequenz auswählt – besser als Greedy, aber rechenintensiver.
Die einfachste Decoding-Strategie für LLMs – wählt bei jedem Schritt das wahrscheinlichste Token. Schnell und deterministisch, aber oft nicht optimal.
Greedy Decoding ist die einfachste Strategie zur Textgenerierung: Bei jedem Schritt wird das Token mit der höchsten Wahrscheinlichkeit gewählt. Keine Zufälligkeit, keine Alternativen.
Der Algorithmus:
Schritt 1: P("Der"=0.3, "Ein"=0.25, "Die"=0.2, ...) → wähle "Der"
Schritt 2: P("beste"=0.4, "schnellste"=0.35, ...) → wähle "beste"
Schritt 3: P("Weg"=0.3, "Ansatz"=0.25, ...) → wähle "Weg"
...
Das Problem:
Greedy findet lokale Optima, nicht globale. Jede Entscheidung ist isoliert optimal, aber die Gesamtsequenz ist es oft nicht.
def greedy_decode(model, prompt, max_length=50):
tokens = tokenize(prompt)
for _ in range(max_length):
# Wahrscheinlichkeiten für nächstes Token
probs = model.get_next_token_probs(tokens)
# Wähle das wahrscheinlichste
next_token = argmax(probs)
if next_token == EOS_TOKEN:
break
tokens.append(next_token)
return detokenize(tokens)
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("gpt2")
tokenizer = AutoTokenizer.from_pretrained("gpt2")
# Greedy Decoding (do_sample=False ist default)
output = model.generate(
input_ids,
max_length=50,
do_sample=False # Greedy
)
| Aspekt | Greedy | Beam Search | Sampling |
|---|---|---|---|
| Geschwindigkeit | ⚡ Schnell | 🐢 Langsam | ⚡ Schnell |
| Qualität | Variabel | Hoch | Variabel |
| Diversität | Keine | Keine | Hoch |
| Determinismus | ✅ | ✅ | ❌ |
Prompt: "Die Hauptstadt von Frankreich ist"
Greedy könnte wählen:
"Die" → "Hauptstadt" → "von" → "Frankreich" → "ist" → "eine" → "Stadt"
Statt der korrekten Antwort "Paris", weil "eine" lokal wahrscheinlicher war. Greedy Decoding ist wie ein Wanderer, der an jeder Kreuzung den steilsten Weg nach oben wählt – er erreicht schnell einen Gipfel, aber vielleicht nicht den höchsten.
Wählt bei jedem Schritt das Token mit höchster Wahrscheinlichkeit
Deterministisch: Gleiche Eingabe → gleiche Ausgabe
Schnell, aber findet oft nicht die beste Gesamtsequenz
Schnelle Prototypen
Einfachste Methode zum Testen von Prompts
Deterministische Ausgaben
Wenn exakt reproduzierbare Ergebnisse nötig sind
Einfache Aufgaben
Kurze Antworten, Klassifikation, Extraktion
Weil das lokal beste Token nicht zur global besten Sequenz führen muss. Beispiel: 'Der beste' (0.4×0.3=0.12) vs. 'Der schnellste' (0.35×0.5=0.175). Greedy wählt 'beste', obwohl 'schnellste' zur besseren Gesamtsequenz führt.
Für kurze, faktische Antworten, wenn Determinismus wichtig ist, oder als Baseline zum Vergleich. Für längere, kreative Texte sind Sampling-Methoden besser.
Praktisch ja. Temperatur 0 macht die Wahrscheinlichkeitsverteilung so spitz, dass fast immer das wahrscheinlichste Token gewählt wird. Technisch ist es aber immer noch Sampling.