AI・機械学習
上級

LLM信頼度校正(エルエルエムシンライドコウセイ)

LLM信頼度校正(Confidence Calibration)とは、大規模言語モデルが出力する確率値や確信度スコアを実際の正答率と一致するように調整する技術の総称である。校正が不十分なモデルは過信または過小評価を起こし、下流タスクの意思決定品質を著しく損なう。Temperature Scaling、Platt Scaling、Isotonic Regression等の事後校正手法と、学習時に校正損失を組み込む手法に大別される。

0 回閲覧
0 いいね

LLM信頼度校正とは

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]) &amp; (confidences &lt;= 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つのカテゴリに分類される。

1. 事後校正(Post-hoc Calibration)

学習済みモデルの出力logitに変換関数を適用する手法群。モデル本体を再学習する必要がなく少量の検証データ(1,000-10,000サンプル)で校正パラメータを推定できる。

  • Temperature Scaling: 単一パラメータTでlogitを除算。最もシンプルで効果的
  • Platt Scaling: logitに対してロジスティック回帰を適用。2パラメータで変換
  • Isotonic Regression: 単調非減少の区分線形関数で確率を変換
  • Beta Calibration: Beta分布パラメータで確率を変換。Platt Scalingの一般化

2. 学習時校正(Train-time Calibration)

  • Label Smoothing: ターゲットラベルを(1-ε, ε/(K-1))に平滑化。ε=0.1が一般的
  • Focal Loss: 簡単なサンプルの重みを下げ過信を抑制
  • MMCE Loss: Maximum Mean Calibration Errorをペナルティとして追加

3. 言語化校正(Verbalized Calibration)

LLM自身に確信度を言語で表現させるアプローチ。APIベースのモデルに適用可能。

4. アンサンブル校正(Ensemble Calibration)

  • Deep Ensemble: 異なる初期値で学習した複数モデルの予測分布を平均化
  • MC Dropout: 推論時にDropoutを有効化し複数回の推論結果からばらつきを推定

LLMにおける校正の課題

トークンレベル vs シーケンスレベル

LLMの出力確率はトークン単位で計算されるが、ユーザーが求める「回答全体の確信度」はシーケンスレベルの概念である。5トークンの回答で各トークン確信度が0.95の場合、単純積は0.95^5 ≈ 0.774となり実際の回答レベルの正答率と乖離する。

APIの制約

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 &lt; self.threshold else "auto_respond"
        return {"answer": raw_output, "confidence": calibrated, "action": action}

運用上の推奨事項:

  1. 検証データの定期更新: 分布シフトに対応し校正パラメータは月次で再推定する
  2. ドメイン別校正: タスクドメインごとに校正パラメータを分離する
  3. 校正モニタリング: 本番環境でのECEを継続的に監視し閾値超過時にアラート発報する
  4. フォールバック設計: 校正確信度が低い回答には人間のレビューを挟む

よくある質問(FAQ)

Q1: LLMの信頼度校正はなぜ重要ですか?

A1: LLMが出力する確信度が実際の正答率と乖離していると下流の意思決定システムが誤った判断を下すリスクがある。例えば医療チャットボットが「確信度95%」と表示した回答の実際の正答率が70%だった場合、患者や医師が誤った情報を信頼してしまう。校正により確信度の信頼性が向上し「いつモデルを信頼すべきか」「いつ人間の判断を仰ぐべきか」の判断基準が明確になる。RAGパイプラインでは校正された確信度に基づく回答の自動承認と人間レビューの切り分け(Selective Prediction)が有効である。

Q2: Temperature Scalingだけで十分ですか?

A2: Temperature Scalingは単一パラメータの調整のみで実装が簡単であり多くのケースで十分な校正改善を達成する。GPT-4oやLlama 3.1等のlogit公開モデルではまずTemperature Scalingを試すべきである。ただし確信度分布が複雑な形状を持つ場合はIsotonic RegressionやBeta Calibrationの方が適合する。Claude等のlogit非公開モデルではVerbalized Confidenceと自己一貫性の組み合わせが現実的な選択肢となる。

Q3: 信頼度校正とハルシネーション検出の関係は?

A3: 信頼度校正とハルシネーション検出は密接に関連するが異なる概念である。ハルシネーション検出は「生成内容が事実に反するかどうか」を判定するタスクであり校正は「モデルの確信度が正確かどうか」を調整するタスクである。Manakul et al.(2023)の研究では校正済みのトークン確率がハルシネーション検出のAUROCを0.72から0.84に改善した。ただしLLMは自信満々にハルシネーションを生成する傾向があるため校正のみに依存せず外部知識ベースとの照合を併用すべきである。

Q4: マルチモーダルLLMでも信頼度校正は適用できますか?

A4: 適用可能だが追加の考慮が必要である。マルチモーダルLLMでは画像入力の不確実性とテキスト生成の不確実性が複合するため単一モダリティのモデルよりも校正が困難になる。モダリティ別に校正パラメータを分離し画像品質スコアを追加の特徴量として校正モデルに入力するアプローチが有効である。