
Self-Consistency
"一つの正答に向かう複数の道があるとき、最も多く選択された道が正しい道である可能性が高い。"
Introduction
Self-ConsistencyはChain-of-Thought(CoT)プロンプティングの限界を克服するために開発されたデコーディング戦略です。既存のCoTが一つの推論経路のみを生成するのとは異なり、複数の多様な推論経路を生成し、最も一貫性のある回答を選択する方式で動作します。
核心アイデア: 複雑な問題は通常複数の方法で解決でき、正しい推論過程は異なる経路を経ても同じ答えに到達する可能性が高いということです。
Motivation
言語モデルの推論能力限界
言語モデルが多様な自然言語処理(NLP)タスクで優れた成功を示したにもかかわらず、推論能力は依然として限界として指摘されます。単純にモデルの規模を拡大するだけではこのような制約を克服することが困難であることが観察されました。
Chain-of-Thought(CoT)プロンプティングの「単純な貪欲デコーディング(naive greedy decoding)」限界:
Wei et al.(2022)が提案したCoTプロンプティングは、LLMが問題解決過程を模倣する一連の短い文章(推論過程)を生成するよう誘導し、多段階推論タスクの性能を大幅に向上させました。しかし、この論文はCoTプロンプティングで使用される**「単純な貪欲デコーディング」戦略を代替**する必要があると指摘します。
貪欲デコーディングは反復性(repetitiveness)と局所最適性(local-optimality)問題を引き起こす可能性があります。つまり、常に最適な全体推論経路を見つけることができず、特定の地点で最適と判断される一つの経路のみを辿るため、潜在的により良い他の経路を見逃す可能性があります。
単一サンプル生成の不確実性/エラー可能性
言語モデルは完璧ではなく、単一推論経路を生成する際に不正確であったり中間段階でミスを犯す可能性があります。この方法は正確な推論過程は多様であっても最終回答に対する合意がより大きいという直感を活用してこのような問題を解決しようとします。
Method
1. CoTプロンプティングでモデルに質問
2. 複数の多様な推論経路生成(例:8個)
3. 各経路から導出された最終回答を収集
4. 最も頻繁に現れる回答を最終答として選択(多数決)実際の例示:

Details
追加訓練不要
既存モデルをそのまま使用可能
別途の検証モデルやファインチューニングなしに即座に適用
サンプル個数最適化
推奨サンプル個数:
- 単純な問題: 5-10個
- 複雑な問題: 20-40個
- コスト考慮時: 10個内外で開始
回答パーシング戦略
数学問題: 「答えはXです」パターンから数字抽出
多肢選択: 選択肢文字抽出
自由回答: 全体文字列比較
📊 性能向上データ
論文で報告された性能向上:
GSM8K(数学): +17.9%絶対性能向上
SVAMP(数学): +11.0%向上
AQuA(数学): +12.2%向上
StrategyQA(常識推論): +6.4%向上
ARC-challenge: +3.9%向上
いつ使用すべきか?
a. 数学的推論が必要な問題
✅ 適合する例示:
- ワード問題(word problems)
- 多段階計算
- 論理的推論問題
❌ 不適合な例示:
- 単純四則演算
- 暗記型問題b. 多様なアプローチ方法が存在する問題
✅ 良い例示:
"一つの箱にりんご12個、オレンジ8個があります。
果物を3人が等しく分け合うとき、一人当たり何個ずつ持っていけるでしょうか?"
アプローチ1: (12 + 8) ÷ 3 = 20 ÷ 3 = 6.67個
アプローチ2: 総20個 → 3人で分けると各自6個ずつ、2個余りc. 常識推論が必要な問題
質問: "アイスクリームを冷凍庫から取り出して部屋に置くとどうなるでしょうか?"
多様な推論経路:
- 温度差 → 熱伝達 → 融解
- 固体→液体相変化過程
- 時間経過による変化Best Practices
サンプリング戦略最適化
5個程度でまず開始し、その後性能向上がさらに必要であれば経路を増やす!
回答集計および検証戦略
1. 基本多数決方式
def aggregate_answers(answers):
from collections import Counter
counter = Counter(answers)
return counter.most_common(1)[0][0]2. 一貫性スコアモニタリング
def calculate_consistency(answers):
from collections import Counter
counter = Counter(answers)
max_count = counter.most_common(1)[0][1]
total_count = len(answers)
return max_count / total_count
# 一貫性が低い場合(< 0.6)問題再検討必要 or プロンプト改善検討Limitations
計算コスト増加(Computational Cost)
自己一貫性方法は単一推論経路をデコーディングする既存の貪欲デコーディング(greedy decoding)方式に比べてより多くの計算コストを発生させます。これは多様な推論経路を複数回サンプリングする必要があるためです。しかし論文では、ほとんどの場合性能が速やかに飽和するため、コストをあまりかけずに大部分の性能向上を得るために少数の経路(例:5個または10個)をサンプリングすることから始められると言及しています。
不完全または非論理的な推論経路生成可能性
言語モデルは時々正確でないまたは非論理的な推論経路を生成する可能性があります。例えば、StrategyQAの例示でモデルが生成した人口統計数字が正確でない場合がありました。この論文はモデルの推論過程生成(rationale generations)をよりよく根拠付けする追加的な研究が必要だと指摘します。
固定回答セットへの適用制限
自己一貫性方法は主に最終回答が固定された回答セットから出る問題(例:多肢選択、算術問題の数値回答)に適用できます。原則的には多重生成物間の一貫性測定基準がよく定義できれば自由形式テキスト生成問題に拡張できると言及されていますが、現在のところその活用範囲に制約があります。