LLM信頼度校正(Confidence Calibration)とは、大規模言語モデルが出力する確率値や確信度スコアを実際の正答率と一致するように調整する技術の総称である。校正が不十分なモデルは過信または過小評価を起こし、下流タスクの意思決定品質を著しく損なう。Temperature Scaling、Platt Scaling、Isotonic Regression等の事後校正手法と、学習時に校正損失を組み込む手法に大別される。
LLM信頼度校正(Confidence Calibration)は、モデルが「この回答の確信度は90%です」と出力した場合に、実際にその回答が正解である確率も90%前後になるよう、出力確率分布を調整する技術体系である。理想的に校正されたモデルでは、確信度p%で出力した回答群のうち実際にp%が正解となる。この性質を「完全校正(Perfect Calibration)」と呼ぶ。
2024-2025年にかけてGPT-4o、Claude 3.5 Sonnet、Gemini 1.5 Pro等の最先端LLMが急速に普及したが、これらのモデルは一般に過信(Overconfident)傾向を示す。Kadavath et al.(2022)の研究ではGPT系モデルが95%以上の確信度を出力する場面で実際の正答率は70-80%程度に留まることが示された。この過信問題は医療診断支援、法律文書レビュー、金融リスク評価といった高リスク応用領域で深刻なリスクとなる。
| 応用領域 | 校正不良のリスク | 要求される校正精度 |
|---|---|---|
| 医療診断支援 | 誤診による患者被害 | ECE < 0.02 |
| 自動運転判断 | 衝突事故 | ECE < 0.01 |
| 金融リスク評価 | 不適切な投融資判断 | ECE < 0.03 |
| 法律文書レビュー | 法的リスクの見落とし | ECE < 0.05 |
| カスタマーサポート | 誤回答による信頼失墜 | ECE < 0.10 |
| 教育支援 | 誤った学習指導 | ECE < 0.08 |
信頼度校正の品質を定量化する最も基本的な指標がECE(Expected Calibration Error)である。全予測をM個のビン(確信度区間)に分割し、各ビンにおける平均確信度と実際の正答率の乖離を加重平均する。
ECE = Σ(m=1 to M) (|B_m| / n) × |acc(B_m) - conf(B_m)|
B_mはm番目のビンのサンプル集合、nは全サンプル数、acc(B_m)はビン内正答率、conf(B_m)はビン内平均確信度である。
| 指標 | 定義 | 特徴 |
|---|---|---|
| ECE | ビン別乖離の加重平均 | 最も標準的、ビン数依存 |
| MCE | ビン別乖離の最大値 | 最悪ケースを捕捉 |
| ACE | 等サンプル数ビンでのECE | ビン幅の偏り解消 |
| SCE | クラス別ECEの平均 | 多クラス問題に適合 |
| Brier Score | (p - y)^2の平均 | 校正と識別力の複合指標 |
import numpy as np
def compute_ece(confidences, accuracies, n_bins=15):
bin_boundaries = np.linspace(0, 1, n_bins + 1)
ece = 0.0
for i in range(n_bins):
mask = (confidences > bin_boundaries[i]) & (confidences <= bin_boundaries[i + 1])
if mask.sum() == 0:
continue
bin_acc = accuracies[mask].mean()
bin_conf = confidences[mask].mean()
ece += (mask.sum() / len(confidences)) * abs(bin_acc - bin_conf)
return ece
LLMの信頼度校正手法は適用タイミングと手法の性質に基づいて4つのカテゴリに分類される。
学習済みモデルの出力logitに変換関数を適用する手法群。モデル本体を再学習する必要がなく少量の検証データ(1,000-10,000サンプル)で校正パラメータを推定できる。
LLM自身に確信度を言語で表現させるアプローチ。APIベースのモデルに適用可能。
LLMの出力確率はトークン単位で計算されるが、ユーザーが求める「回答全体の確信度」はシーケンスレベルの概念である。5トークンの回答で各トークン確信度が0.95の場合、単純積は0.95^5 ≈ 0.774となり実際の回答レベルの正答率と乖離する。
| LLMプロバイダ | logit提供 | 制限 |
|---|---|---|
| OpenAI (GPT-4o) | あり | トップ20トークンまで |
| Anthropic (Claude) | なし | 言語化校正のみ適用可 |
| Google (Gemini) | あり | トップ40トークンまで |
| Meta (Llama) | あり(フル) | オープンウェイト |
| Mistral | あり | トップ10トークンまで |
LLMの校正品質はプロンプトの書き方に強く依存する。System Promptでの指示、Few-shotの例示パターン、Chain-of-Thoughtの有無により同一モデルでもECEが0.05〜0.25の範囲で変動する。
class CalibrationPipeline:
def __init__(self, model, calibrator, threshold=0.7):
self.model = model
self.calibrator = calibrator
self.threshold = threshold
def predict_with_confidence(self, prompt):
raw_output = self.model.generate(prompt)
raw_conf = self.model.get_logprobs(prompt)
calibrated = self.calibrator.transform(raw_conf)
action = "escalate_to_human" if calibrated < self.threshold else "auto_respond"
return {"answer": raw_output, "confidence": calibrated, "action": action}
運用上の推奨事項:
A1: LLMが出力する確信度が実際の正答率と乖離していると下流の意思決定システムが誤った判断を下すリスクがある。例えば医療チャットボットが「確信度95%」と表示した回答の実際の正答率が70%だった場合、患者や医師が誤った情報を信頼してしまう。校正により確信度の信頼性が向上し「いつモデルを信頼すべきか」「いつ人間の判断を仰ぐべきか」の判断基準が明確になる。RAGパイプラインでは校正された確信度に基づく回答の自動承認と人間レビューの切り分け(Selective Prediction)が有効である。
A2: Temperature Scalingは単一パラメータの調整のみで実装が簡単であり多くのケースで十分な校正改善を達成する。GPT-4oやLlama 3.1等のlogit公開モデルではまずTemperature Scalingを試すべきである。ただし確信度分布が複雑な形状を持つ場合はIsotonic RegressionやBeta Calibrationの方が適合する。Claude等のlogit非公開モデルではVerbalized Confidenceと自己一貫性の組み合わせが現実的な選択肢となる。
A3: 信頼度校正とハルシネーション検出は密接に関連するが異なる概念である。ハルシネーション検出は「生成内容が事実に反するかどうか」を判定するタスクであり校正は「モデルの確信度が正確かどうか」を調整するタスクである。Manakul et al.(2023)の研究では校正済みのトークン確率がハルシネーション検出のAUROCを0.72から0.84に改善した。ただしLLMは自信満々にハルシネーションを生成する傾向があるため校正のみに依存せず外部知識ベースとの照合を併用すべきである。
A4: 適用可能だが追加の考慮が必要である。マルチモーダルLLMでは画像入力の不確実性とテキスト生成の不確実性が複合するため単一モダリティのモデルよりも校正が困難になる。モダリティ別に校正パラメータを分離し画像品質スコアを追加の特徴量として校正モデルに入力するアプローチが有効である。