Self-Consistency

Eine Prompting-Technik, bei der mehrere Antworten generiert und die häufigste als Ergebnis gewählt wird – für zuverlässigere Reasoning-Ergebnisse.

Fortgeschritten2 Min Lesezeit

Erklärung starten

Auf einen Blick

3 Punkte

  1. Generiert mehrere Reasoning-Pfade für dieselbe Frage
  2. Wählt die häufigste finale Antwort (Majority Voting)
  3. Besonders effektiv bei Mathe, Logik und Faktenfragen

Sofortantwort

Self-Consistency einfach erklärt

Mehrere Antworten generieren, häufigste wählen – robusteres Reasoning.

Kurz gesagt
Generiert mehrere Reasoning-Pfade für dieselbe Frage
Typischer Einsatz
Mathematische Probleme, Faktenfragen, Logik-Rätsel
Wichtig zu wissen
Besonders effektiv bei Mathe, Logik und Faktenfragen

Self-Consistency im Überblick

Self-Consistency verbessert LLM-Antworten, indem mehrere Antworten generiert und die häufigste gewählt wird. Statt einer Antwort zu vertrauen, nutzt du die “Weisheit der Masse” – aus demselben Modell.

Der Prozess:

Frage: "Was ist 17 × 24?"

Sample 1: "17 × 24 = 17 × 20 + 17 × 4 = 340 + 68 = 408" ✓
Sample 2: "17 × 24 = 400 + 8 = 408" ✓
Sample 3: "17 × 24 = 17 × 25 - 17 = 425 - 17 = 408" ✓
Sample 4: "17 × 24 = 20 × 24 - 3 × 24 = 480 - 72 = 408" ✓
Sample 5: "17 × 24 = 17 × 24 = 388" ✗ (Rechenfehler)

Majority Vote: 408 (4 von 5)
→ Finale Antwort: 408

Warum funktioniert das?

SzenarioEinzelne AntwortSelf-Consistency
Richtige Antwort80% Chance95%+ Chance
HalluzinationMöglichUnwahrscheinlich (inkonsistent)
RechenfehlerMöglichWird überstimmt

Technisch betrachtet

Implementierung

Einfache Version:

def self_consistency(prompt, model, n_samples=5):
    answers = []
    
    for _ in range(n_samples):
        response = model.generate(
            prompt,
            temperature=0.7  # Varianz für unterschiedliche Pfade
        )
        answer = extract_final_answer(response)
        answers.append(answer)
    
    # Majority Vote
    from collections import Counter
    most_common = Counter(answers).most_common(1)[0][0]
    
    return most_common

Mit OpenAI API:

response = openai.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": prompt}],
    n=5,  # 5 Samples in einem Call
    temperature=0.7
)

answers = [choice.message.content for choice in response.choices]

Temperatur-Einstellung

TemperaturEffektFür Self-Consistency
0.0Deterministisch❌ Alle Antworten gleich
0.5-0.7Moderate Varianz✓ Ideal
1.0+Hohe Varianz⚠️ Zu viel Rauschen

Warum nicht Temperatur 0? Bei T=0 sind alle Samples identisch – kein Voting möglich. Varianz ist nötig, um verschiedene Reasoning-Pfade zu explorieren.

Weighted Voting

Statt einfachem Majority Vote können Antworten gewichtet werden:

def weighted_consistency(prompt, model, n_samples=5):
    answers_with_confidence = []
    
    for _ in range(n_samples):
        response = model.generate(prompt, return_logprobs=True)
        answer = extract_answer(response)
        confidence = calculate_confidence(response.logprobs)
        answers_with_confidence.append((answer, confidence))
    
    # Gewichtetes Voting
    weighted_votes = defaultdict(float)
    for answer, confidence in answers_with_confidence:
        weighted_votes[answer] += confidence
    
    return max(weighted_votes, key=weighted_votes.get)

Wann Self-Consistency nutzen?

Gut geeignet:

  • Mathematische Probleme
  • Logik-Rätsel
  • Faktenfragen mit eindeutiger Antwort
  • Code mit klarem Output

Weniger geeignet:

  • Kreative Aufgaben (keine “richtige” Antwort)
  • Offene Fragen
  • Subjektive Bewertungen

Konsistenz als Konfidenz-Maß

def consistency_score(answers):
    """
    Wie einig sind sich die Samples?
    1.0 = alle gleich, 0.0 = alle unterschiedlich
    """
    from collections import Counter
    counts = Counter(answers)
    most_common_count = counts.most_common(1)[0][1]
    return most_common_count / len(answers)

# Beispiel
answers = ["408", "408", "408", "408", "388"]
score = consistency_score(answers)  # 0.8

if score < 0.5:
    print("Warnung: Niedrige Konsistenz, Antwort unsicher")

Kosten-Optimierung

StrategieBeschreibung
Adaptive SamplingStarte mit 3, erhöhe bei niedriger Konsistenz
Early StoppingStoppe wenn 3 von 5 übereinstimmen
Kleineres ModellFür Samples kleineres Modell, für Final größeres
Batch Requestsn-Parameter statt einzelne Calls

01Einsatzbereiche

Wann ist Self-Consistency sinnvoll?

Geeignet für

  • Mathematische ProblemeMehrere Lösungswege, konsistente Antwort gewinnt
  • FaktenfragenReduziert Halluzinationen durch Konsistenzprüfung
  • Logik-RätselVerschiedene Reasoning-Ansätze, robusteres Ergebnis
  • Code-GenerierungMehrere Implementierungen, häufigste Lösung wählen

↑ Inhalt

02Werkzeuge

Womit Self-Consistency umgesetzt wird

↑ Inhalt

Merksatz

Self-Consistency ist wie eine Jury-Abstimmung

Statt einem Richter (eine Antwort) entscheiden mehrere unabhängig – und die Mehrheitsmeinung ist meist zuverlässiger als eine Einzelmeinung.

  1. Generiert mehrere Reasoning-Pfade für dieselbe Frage
  2. Wählt die häufigste finale Antwort (Majority Voting)
  3. Besonders effektiv bei Mathe, Logik und Faktenfragen

04Redaktion

Herkunft und Stand

Redaktion und Aktualität

Ebenex RedaktionRedaktion

Veröffentlicht
Aktualisiert

Dieses Feld entwickelt sich schnell. Oben stehen Veröffentlichung und letzte Änderung; ein Prüfdatum kommt dazu, sobald die Erklärung nach ihrer letzten Änderung geprüft wurde.

↑ Inhalt

05FAQ

Häufige Fragen zu Self-Consistency

Wie viele Samples brauche ich?

Typisch 5-20. Mehr Samples = robuster, aber teurer. Für einfache Aufgaben reichen 5, für komplexe 10-20. Ungerade Zahlen vermeiden Ties.

Ist Self-Consistency teurer?

Ja, linear mit Anzahl Samples. 10 Samples = 10x Kosten. Trade-off zwischen Qualität und Budget. Für kritische Aufgaben lohnt es sich.

Funktioniert das mit allen LLMs?

Am besten mit Modellen, die gutes Reasoning können. Bei schwachen Modellen kann Majority Voting auch falsche Antworten verstärken.

Was wenn alle Antworten unterschiedlich sind?

Dann ist die Frage möglicherweise zu schwer oder mehrdeutig. Niedrige Konsistenz ist ein Signal für Unsicherheit.

↑ Inhalt

06Weiterlernen

Was möchtest du als Nächstes verstehen?

  • Grundlage nachholen

    Chain-of-Thought

    Modell denkt Schritt für Schritt, um besser zu argumentieren.

  • Technisch vertiefen

    Temperatur

    Ein Parameter, der die Kreativität der Textausgabe eines Modells beeinflusst.

↑ Inhalt