Bab 7: Self-Consistency¶
Kalau jawaban LLM kadang benar kadang salah, jangan tanya sekali. Tanya 5 kali, ambil yang paling sering keluar.
Self-Consistency adalah upgrade sederhana tapi powerful dari CoT. Konsepnya: multiple sampling + majority vote.
Setelah Bab 7, kamu akan bisa:
- Memahami kenapa LLM tidak deterministic
- Pakai self-consistency untuk meningkatkan akurasi reasoning
- Tahu trade-off antara cost vs accuracy
- Aplikasikan di task kritis
7.1. Masalah: LLM Tidak Deterministic¶
Tanya pertanyaan yang sama 5 kali ke LLM, kamu bisa dapat 5 jawaban berbeda. Ini disengaja — model punya parameter temperature yang mengontrol seberapa random output.
- Temperature 0 = deterministic (jawaban yang sama tiap kali)
- Temperature 1 = creative (variasi tinggi)
- Default biasanya 0.7-0.8 = balance
Untuk task reasoning, randomness ini bisa jadi masalah. Mungkin 4 dari 5 kali jawabannya benar, 1 kali salah. Bagaimana kalau kamu kebetulan dapat yang salah?
7.2. Solusi: Vote dari Multiple Samples¶
Self-Consistency = jalankan prompt sama beberapa kali, ambil jawaban yang paling sering muncul.
flowchart TB
Prompt["Prompt CoT yang sama"]
Run1["Run 1<br/>Reasoning A<br/>→ Jawaban: 11"]
Run2["Run 2<br/>Reasoning B<br/>→ Jawaban: 11"]
Run3["Run 3<br/>Reasoning C<br/>→ Jawaban: 13"]
Run4["Run 4<br/>Reasoning D<br/>→ Jawaban: 11"]
Run5["Run 5<br/>Reasoning E<br/>→ Jawaban: 11"]
Vote{"Majority vote<br/>11: 4 votes<br/>13: 1 vote"}
Final["Jawaban final: 11"]
Prompt --> Run1
Prompt --> Run2
Prompt --> Run3
Prompt --> Run4
Prompt --> Run5
Run1 --> Vote
Run2 --> Vote
Run3 --> Vote
Run4 --> Vote
Run5 --> Vote
Vote --> Final
style Prompt fill:#1a1a1a,stroke:#6366f1,color:#fafafa
style Run1 fill:#1a1a1a,stroke:#10b981,color:#fafafa
style Run2 fill:#1a1a1a,stroke:#10b981,color:#fafafa
style Run3 fill:#1a1a1a,stroke:#ef4444,color:#fafafa
style Run4 fill:#1a1a1a,stroke:#10b981,color:#fafafa
style Run5 fill:#1a1a1a,stroke:#10b981,color:#fafafa
style Vote fill:#1a1a1a,stroke:#f59e0b,color:#fafafa
style Final fill:#1a1a1a,stroke:#10b981,color:#fafafa
Cara baca diagram
Diagram ini menjelaskan mekanisme self-consistency.
Step demi step:
- Prompt (indigo) — prompt CoT yang sama, tidak diubah
- 5 runs — jalankan prompt 5 kali. Karena temperature > 0, tiap run dapat reasoning yang sedikit berbeda, kadang jawaban juga beda
- Majority vote (amber) — hitung jawaban final dari tiap run, ambil yang paling sering muncul
- Final answer (hijau) — jawaban yang dipakai
Insight kunci:
LLM cenderung konvergen ke jawaban benar lewat banyak path reasoning yang berbeda. Kalau jawaban benar, banyak reasoning berbeda akan tetap menuju ke sana. Kalau jawaban salah, biasanya cuma 1 path (yang error). Majority vote menyaring noise.
Bayangkan analogi quiz:
- Tanya 1 expert: 80% akurasi
- Tanya 5 expert independen, ambil jawaban majority: ~95% akurasi
Bahkan kalau tiap expert tidak 100% benar, agregasi dari beberapa expert menghasilkan akurasi tinggi. Sama prinsipnya.
Trade-off: cost. 5 kali run = 5 kali bayar. Untuk task kritis (medical, legal, finance) — worth it. Untuk task biasa — overkill.
7.3. Cara Pakai¶
Manual¶
Jalankan prompt CoT yang sama 3-5 kali. Catat jawaban masing-masing. Pilih yang paling sering muncul.
Prompt (CoT):
Q: Roger punya 5 bola tenis. Dia beli 2 kaleng @ 3 bola.
Total bola sekarang?
Mari kita pikirkan langkah demi langkah.
Run 5x. Output: - Run 1: 11 - Run 2: 11 - Run 3: 11 - Run 4: 11 - Run 5: 13
Jawaban: 11 (4/5 votes).
Programmatik (Python)¶
import openai
from collections import Counter
def self_consistency(prompt, n=5):
answers = []
for _ in range(n):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.7, # tinggi supaya ada variasi
)
answer = extract_answer(response.choices[0].message.content)
answers.append(answer)
# Majority vote
vote = Counter(answers)
return vote.most_common(1)[0][0]
def extract_answer(text):
"""Extract jawaban final dari output CoT."""
# Custom regex sesuai format yang kamu pakai
# ...
pass
7.4. Kapan Pakai Self-Consistency?¶
✓ Pakai¶
- High-stakes decisions — medical, legal, financial advice
- Math/logic problems yang kritis
- Customer-facing AI yang harus reliable
- Validation answer dari prompt baru sebelum production
✗ Skip¶
- Creative tasks — kamu mau variasi, bukan konvergensi
- Simple Q&A dengan akurasi sudah tinggi
- Cost-sensitive apps
- Latency-sensitive apps (5x time)
7.5. Optimasi¶
Tip 1: Tidak harus 5 runs. Eksperimen — 3 runs sering cukup untuk task simple.
Tip 2: Naikkan temperature untuk variasi reasoning yang lebih luas (0.7-0.9).
Tip 3: Cache result kalau prompt sering diulang.
Tip 4: Self-consistency cuma untuk task yang punya jawaban definitive — math, classification. Untuk task open-ended (creative writing), tidak masuk akal.
7.6. Kombinasi: CoT + Self-Consistency + Few-Shot¶
Power tool: gabung 3 teknik.
[FEW-SHOT EXAMPLES dengan CoT]
Q: [contoh]
Reasoning: ...
Jawaban: X
Q: [contoh 2]
Reasoning: ...
Jawaban: Y
Q: {{ pertanyaan_baru }}
Reasoning:
Run 5x. Majority vote.
Akurasi maksimal, cost juga maksimal. Reserve untuk task paling kritis.
7.7. Latihan¶
7.1 — Math Validation¶
Pilih 5 word problem math SMP. Run prompt CoT 3x masing-masing. Catat jawaban. Berapa yang stabil vs varies?
7.2 — Cost-Benefit¶
Hitung cost prompt (token usage). Bandingkan single-run vs 5-run. Apakah worth it untuk use case kamu?
7.3 — Edge Cases¶
Cari problem yang LLM sering bingung. Test self-consistency. Apakah majority vote benar?
Self-Consistency Pattern¶
Kapan Pakai¶
✓ High-stakes (medical, legal, finance) ✓ Math/logic kritis ✓ Production validation
Kapan Skip¶
✗ Creative tasks ✗ Cost-sensitive ✗ Latency-sensitive ✗ Open-ended writing
Tips¶
- Temperature 0.7-0.9 untuk variasi
- 3-5 runs sweet spot
- Cache untuk prompt repeated
- Cuma untuk task dengan jawaban definitive