Verbalized Confidence(言語化された確信度)とは、LLMに対して自身の回答への確信度を自然言語で表現させるアプローチであり、logitやトークン確率へのアクセスが不要なブラックボックス校正手法である。プロンプトで確信度を明示的に質問するか推論プロセス中に不確実性を言語化させることでAPIベースのクローズドモデルでも信頼度情報を取得できる。
Verbalized Confidence(言語化された確信度)はLLMが自身の出力に対する確信度を数値(例: 85%)や定性表現(例:「非常に自信がある」)として自然言語で出力するアプローチである。2023年以降、商用LLM APIがlogit情報を制限または非公開とするケースが増えたことを背景にブラックボックスモデルでも適用可能な校正手法として急速に注目を集めている。
従来のTemperature ScalingやPlatt Scaling等の事後校正手法はモデルの内部表現(logit)へのアクセスを前提としておりClaude API等のlogit非公開プラットフォームでは適用できなかった。Verbalized Confidenceはこの制約を回避しプロンプトエンジニアリングのみで確信度情報を引き出せる。
Tian et al.(2023)「Just Ask for Calibration」ではGPT-4に「0から100の間で確信度を数値化してください」と指示するだけでECEがベースライン0.22から0.12に改善された。Lin et al.(2023)「Generating with Confidence」では言語化確信度とself-consistencyを組み合わせてECE 0.06を達成した。
Verbalized Confidenceの実装には主に4つのアプローチが存在する。
回答生成後に確信度を数値で尋ねるシンプルなアプローチ。
System: 回答後にその回答への確信度を0〜100%の数値で表明してください。
User: 日本で最も高い山は何ですか?
Assistant: 富士山です。標高3,776mで日本最高峰です。
確信度: 99%
数値ではなく定性的なスケールで確信度を表現させる。
| スケール | 数値マッピング | 説明 |
|---|---|---|
| 確実 | 95-100% | 疑いの余地がほぼない |
| 非常に自信がある | 85-94% | 高い確信を持っている |
| やや自信がある | 70-84% | 概ね正しいと思う |
| 半々 | 45-69% | 正しいかどうか不確実 |
| あまり自信がない |
| 25-44% |
| 間違っている可能性が高い |
| ほぼ分からない | 0-24% | 推測に近い |
推論過程で不確実性を明示的に言語化させるアプローチである。モデルに「不確実な点を挙げてから回答せよ」と指示することで確信度の自己認識を促す。Xiong et al.(2024)の研究ではCoT校正によりGPT-4のECEが0.19から0.09に改善された。
同一プロンプトに対して複数回(通常5-20回)サンプリングし、回答の一致率を確信度の代理指標として利用する。Wang et al.(2023)が提案した手法で、20回サンプリングのうち18回同じ回答なら確信度90%と推定する。言語化とは異なりモデルの内部的なばらつきを直接測定するためより信頼性が高い。
def self_consistency_confidence(client, prompt, n_samples=10):
responses = []
for _ in range(n_samples):
resp = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}],
temperature=0.7
)
responses.append(resp.choices[0].message.content.strip())
from collections import Counter
counts = Counter(responses)
most_common_answer, most_common_count = counts.most_common(1)[0]
confidence = most_common_count / n_samples
return {"answer": most_common_answer, "confidence": confidence, "samples": n_samples}
Verbalized Confidenceの校正品質を既存手法と比較した結果を示す(GPT-4o、TriviaQAデータセット)。
| 手法 | ECE | MCE | AUROC | 必要なAPI呼び出し数 |
|---|---|---|---|---|
| Temperature Scaling(logprobs) | 0.04 | 0.12 | 0.89 | 1回 |
| 直接数値質問 | 0.12 | 0.28 | 0.78 | 1回 |
| スケール質問 | 0.14 | 0.31 | 0.75 | 1回 |
| CoT校正 | 0.09 | 0.21 | 0.83 | 1回 |
| 自己一貫性(10回) | 0.06 | 0.15 | 0.87 | 10回 |
| 自己一貫性(20回) | 0.05 | 0.13 | 0.88 | 20回 |
| CoT + 自己一貫性(5回) | 0.06 | 0.16 | 0.86 | 5回 |
Verbalized Confidenceの品質はプロンプト設計に大きく依存する。以下のガイドラインが実験的に有効であることが確認されている。
LLMはユーザーの期待に合わせて確信度を過大に表明する傾向がある。特に「この回答は正しいですか?」と確認すると実際の不確実性に関わらず高い確信度を返すことが多い。対策としてシステムプロンプトで「批判的に自己評価せよ」と指示するか自己一貫性ベースの手法を併用する。
LLMが出力する確信度は50%、70%、80%、90%、95%、99%等のキリの良い数値に偏る傾向がある。この離散化バイアスにより連続的な校正が困難になる。対策として10段階のスケール(10%, 20%, ..., 100%)に制約する方法が提案されている。
同じ質問に対してGPT-4oが「確信度85%」、Claudeが「確信度60%」と返すことがあり、モデル間で確信度のスケールが異なる。マルチモデルシステムでは各モデルの確信度を標準化する追加の校正層が必要である。
A1: 有用な場合がある。logprobsのトークンレベル確率とVerbalized Confidenceのシーケンスレベル確信度は異なる情報を捉えるため両者を組み合わせることでECEがさらに改善するケースが報告されている。具体的にはlogprobs確率とVerbalized確信度の加重平均(重みはドメイン別に最適化)がTriviaQAベンチマークでECE 0.03を達成した。
A2: 直接数値質問は追加トークン数が10-20程度(「確信度: 85%」等)でありコストはほぼ無視できる。CoT校正は推論過程の言語化で100-300トークン追加されるためコスト増は5-15%程度。自己一貫性ベースはN回のAPI呼び出しが必要でコストがN倍になる。品質とコストのバランスを考慮するとCoT校正 + 3回自己一貫性の組み合わせが実用的な最適解である。
A3: 対応可能だが言語による校正品質の差が存在する。英語で訓練されたモデルは英語での確信度表明が最も校正されており日本語や中国語等の非英語言語では過信傾向がやや強まることが報告されている。対策として確信度の質問部分を英語で行い回答本文は対象言語で生成する「バイリンガル校正」アプローチが提案されている。