AI・機械学習
上級

Self-Consistency Decoding(セルフコンシステンシーデコーディング)

LLM に同一の問題に対して複数の Chain-of-Thought 推論パスを独立に生成させ、最終回答の多数決(Majority Voting)で最も一貫した答えを選択する推論強化手法。

0 回閲覧
0 いいね

Self-Consistency Decoding とは

Self-Consistency(SC)は、Wang et al.(2023)が提案した推論精度向上手法で、同じ問題に対して LLM に複数回の Chain-of-Thought(CoT)推論を独立に生成させ、各パスの最終回答を多数決で集約する。「正しい推論は異なる経路を辿っても同じ答えに収束する」という直感に基づいている。

従来の CoT との違い

手法推論パス数回答選択精度コスト
Standard CoT1Greedy(最尤)基準1x
Self-Consistency5〜40Majority Voting高い5〜40x
Best-of-NNVerifier で選択最高N x + Verifier

アルゴリズム

  1. 問題と CoT プロンプト(Few-shot or Zero-shot)を用意
  2. Temperature > 0(通常 0.5〜0.7)でサンプリングし、N 個の推論パスを独立に生成
  3. 各推論パスから最終回答を抽出
  4. 最も多く出現した回答を採用(多数決)

Temperature を 0(Greedy Decoding)にすると毎回同じ出力になるため、多様な推論パスを得るにはサンプリングが必須。

ベンチマーク結果

GSM8K(小学生算術)での PaLM 540B の結果:

手法パス数精度
Standard Prompting117.9%
CoT (Greedy)156.5%
CoT + SC568.2%
CoT + SC1072.0%
CoT + SC4074.4%

CoT 単体から SC を追加することで +18pt の改善。パス数を増やすほど精度は向上するが、収穫逓減がある。

最適なパス数

パス数とコストのトレードオフを考慮する必要がある。

  • 5 パス: コスト 5 倍で精度の大部分(約 80%)を獲得。実用上のスイートスポット
  • 10 パス: 追加の改善は小さいが安定性が向上
  • 40 パス: 理論的な上限に近づくが、コスト対効果は低下
  • 実務推奨: 5〜10 パスが精度とコストのバランスが良い

Weighted Self-Consistency

単純な多数決ではなく、各パスの確率(Log-Likelihood)で重み付けする手法も提案されている。高い確率のパスにより大きな投票権を与えることで、少ないパス数でも精度を改善できる。

Universal Self-Consistency

自由記述タスク(要約・翻訳など)では回答が文字列として一致しないため、単純な多数決が使えない。Universal Self-Consistency(USC)は、LLM 自体を「ジャッジ」として使い、複数の回答候補から最も一貫したものを選択する。

実装上の考慮事項

API コスト

  • GPT-4 で 10 パスの SC を実行すると、出力トークンが 10 倍になる
  • 入力トークン(プロンプト)は共通なのでキャッシュ可能
  • バッチ API を使えばレイテンシは並列実行で軽減可能

回答の抽出

  • 数値回答: 正規表現で最終数値を抽出し多数決
  • 選択肢: 選択肢ラベル(A/B/C/D)を抽出し多数決
  • 自由記述: USC またはクラスタリングベースの集約が必要

FAQ

Q1: Self-Consistency は小型モデルでも効果があるか?

A1: CoT 自体が機能するモデルサイズ(概ね 7B 以上の Instruct モデル)であれば SC も効果がある。ただし、ベースモデルの CoT 精度が低すぎると(例: 20% 未満)、多数決しても誤答が多数派になるため改善しない。

Q2: Temperature はいくつに設定すべきか?

A2: 0.5〜0.7 が推奨。低すぎると推論パスの多様性が不足し SC の効果が薄れる。高すぎると品質の低いパスが増え多数決の精度が下がる。タスクに応じて実験的に調整する。

Q3: 実行時間を短縮する方法は?

A3: 各パスは独立なので完全に並列実行可能。OpenAI Batch API や vLLM の並列推論を使えば、N パスをほぼ 1 パス分の壁時計時間で実行できる。コストは N 倍だがレイテンシは増えない。