记忆点:多路径降低偶然错误,但多数票不天然等于真相。
💡 答案要点
Self-Consistency(自洽性) = 多次推理投票选最优解
核心思想: 同一个问题让模型推理多次,选择出现最多的答案
工作流程:
1. 使用CoT Prompt生成多个推理路径(如5-10次)
2. 每次推理可能得到不同的中间步骤和答案
3. 统计最终答案,选择出现频率最高的示例:
问题: 小明有15个苹果,吃了一些后剩9个,吃了几个?
推理1: 15 - x = 9, x = 6 ✓
推理2: 15 - x = 9, x = 6 ✓
推理3: 吃了9个,剩6个 ✗ (错误)
推理4: 15 - x = 9, x = 6 ✓
推理5: 15 - 9 = 6 ✓
投票结果: "6个" 出现4次 → 选择此答案性能提升:
| 任务 | CoT | CoT + Self-Consistency | 提升 |
|---|---|---|---|
| 数学推理(GSM8K) | 65% | 83% | +18% |
| 常识推理(CommonsenseQA) | 72% | 85% | +13% |
| 符号推理 | 58% | 74% | +16% |
实现代码:
python
import openai
from collections import Counter
def self_consistency(question, n=5):
answers = []
for i in range(n):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{
"role": "user",
"content": f"{question}\n\n请一步步思考并给出最终答案。"
}],
temperature=0.7 # 非零温度,允许多样性
)
# 提取最终答案
answer = extract_final_answer(response)
answers.append(answer)
# 投票选择最常见答案
most_common = Counter(answers).most_common(1)[0][0]
return most_common优势:
- ✅ 显著提升推理准确率
- ✅ 对错误推理路径有鲁棒性
- ✅ 无需额外训练
劣势:
- ❌ 成本增加(调用N次API)
- ❌ 延迟增加(串行推理)
优化技巧:
- 并行化推理(异步调用)
- 根据任务难度动态调整N (简单任务3次,复杂任务10次)
- Early stopping (如果前3次一致就停止)
面试话术:
示例表达(仅在能用本人经历或可复现实验佐证时使用): "Self-Consistency利用了'正确答案往往有多条推理路径,错误答案路径单一'的特点。我们在数学题场景用Self-Consistency,准确率从68%提升到82%,成本增加3倍但值得。"
