Conformal Prediction
コンフォーマル予測は、あらゆるモデルのスコアを予測集合または区間に変換し、95%など指定した割合で正解を含むようにします。
コンフォーマル予測は、任意の学習済みモデルのスコアを予測セットまたは区間に変換し、ユーザーが選んだ割合、たとえば95%の頻度で真の答えを含むことを保証する不確実性定量化のフレームワークです。コンフォーマル画像分類器は、可能性が残るすべてのラベルを返します。画像が明確なら1つ、曖昧なら複数のラベルを返し、コンフォーマル回帰器は区間を返します。キャリブレーションデータと新しいデータが交換可能であれば、この保証はどのモデルやデータ分布にも成り立ちます。交換可能とは、同じ出所からの独立したサンプルであることを意味します。Vladimir Vovk、Alexander Gammerman、Glenn Shaferは1990年代後半からこの手法を開発し、2005年の著書Algorithmic Learning in a Random Worldにまとめました。Anastasios AngelopoulosとStephen Batesによる2021年のチュートリアル「A Gentle Introduction to Conformal Prediction」では、機械学習で使われる最新の手法を解説しています。
分割コンフォーマル予測の仕組み#
元の完全なコンフォーマル法では、候補となる回答ごとにモデルを再学習するため、深層学習には遅すぎます。2002年にHarris Papadopoulosらが提唱した分割型、または帰納的コンフォーマル予測では、学習済みモデルと、学習に使用していないキャリブレーション用データセットだけで済みます。
- 通常どおり、学習データでモデルを学習させます。
- モデルが見たことのないラベル付きキャリブレーション例n件に対して実行し、それぞれについて非適合度スコアを計算します。これは、正解がモデルにとって典型的でないほど大きくなる数値です。分類器では、正解クラスに割り当てられた確率を1から引いた値が、一般的なスコアです。
- これらのスコアのceil((n + 1) x (1 - alpha)) / n分位点を求め、qhatと呼びます。(n + 1)項は、保証を正確にする有限標本補正です。
- 新しい入力に対して、スコアがqhat以下の候補ラベルをすべて含めます。
この結果得られる集合には、少なくとも1 - alphaの確率で正解ラベルが含まれます。新しい例のスコアはn個のキャリブレーションスコアと交換可能であり、どの順位に入る可能性も等しいため、少なくとも1 - alphaの割合でqhat以下になります。
保証の対象#
この保証は周辺的なもので、すべての入力にわたる平均で成り立ちます。モデルは簡単なクラスを過剰にカバーし、希少なクラスを十分にカバーできない場合があるため、クラス条件付き(Mondrian)コンフォーマル予測では、クラスごとに個別のqhatをキャリブレーションします。仮定は交換可能性だけですが、データドリフトが発生するとこの仮定は成り立ちません。つまり、本番環境の画像がキャリブレーション画像と異なる場合です。そのため、キャリブレーション用データセットはデプロイ先のデータから作成し、そのデータが変化したら更新する必要があります。キャリブレーション用データセットのデータセットバイアスは、そのまま予測集合に引き継がれます。
有用な指標は集合サイズです。有効な手法はどれも目標カバレッジを達成するため、手法の優劣は集合をどれだけ小さくできるかで決まり、より精度の高いモデルほど集合が小さくなります。ImageNet分類器で評価されたAdaptive Prediction Sets(APS)とRegularized Adaptive Prediction Sets(RAPS)は、累積確率を使って集合サイズを難易度に対応させます。また、コンフォーマル化分位点回帰では、データのノイズが大きい領域ほど幅が広い区間が得られます。
コンフォーマル予測は、関連する3つの概念とは異なります。信頼度スコアは、保証が付随しない単一の数値です。温度スケーリングなどのキャリブレーション手法は、スコアを観測された精度によりよく一致させます。これによりコンフォーマル集合は小さくなりますが、単独ではカバレッジを保証しません。統計的信頼区間は平均などの母集団パラメーターに関する不確実性を表す一方、コンフォーマル集合は、新たな1つの結果がどこに入るかを表します。
実践での予測集合#
分類器が誤りを起こすよう、意図的に小さな学習セットを用いた、上記手順のscikit-learnでの実装例です。
import numpy as np
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# Split handwritten digits into training, calibration, and test sets
X, y = load_digits(return_X_y=True)
X_train, X_rest, y_train, y_rest = train_test_split(X, y, train_size=100, random_state=0)
X_cal, X_test, y_cal, y_test = train_test_split(X_rest, y_rest, train_size=500, random_state=0)
model = LogisticRegression(max_iter=2000).fit(X_train, y_train)
# Nonconformity score: 1 minus the probability given to the true class
scores = 1 - model.predict_proba(X_cal)[np.arange(len(y_cal)), y_cal]
# Finite-sample corrected quantile for 95% coverage
alpha, n = 0.05, len(y_cal)
qhat = np.quantile(scores, np.ceil((n + 1) * (1 - alpha)) / n, method="higher")
# Prediction set: every class whose score is at most qhat
sets = 1 - model.predict_proba(X_test) <= qhat
coverage = sets[np.arange(len(y_test)), y_test].mean()
print(f"Top-1 accuracy: {model.score(X_test, y_test):.3f}")
print(f"Set coverage: {coverage:.3f}, average set size: {sets.sum(axis=1).mean():.2f}")最上位の予測だけを見ると正解率は91.6%ですが、コンフォーマル集合には1,197枚のテスト画像のうち96.5%で正解の数字が含まれており、目標の95%を上回っています。ラベル数の平均は1.27です。MAPIEなどのライブラリには、分類、回帰、時系列向けのこれらの手順がパッケージ化されています。
用途#
- 医用画像解析:既知の誤り率を持つ、もっともらしい所見の集合により、スキャンの判定が難しい場合に医療従事者へ知らせることができます。また、ラベルが1つだけの集合は、モデルが確実に処理できる症例を示します。
- 大規模言語モデル(LLM):コンフォーマル法は、選択した割合で正解を含む出力となるよう、サンプリングした回答をいくつ返すか、またはどの主張を残すかをキャリブレーションします。これは、幻覚対策としての意味エントロピーを補完します。
- 物体検出:バウンディングボックスの予測値にコンフォーマルマージンを加えると、選択した割合で正解ボックスを含む領域が得られます。これは、歩行者を避けて進む自動運転車の計画に役立ちます。
画像分類器には、scikit-learnの例と同じ入力を与えます。Ultralytics YOLO26の分類モデルは、results[0].probs.data内の各画像についてsoftmaxベクトル全体を返します。そのため、ラベル付きのホールドアウト画像セットをスコアリングするとqhatが得られ、確率が1 - qhat以上のクラスはすべて予測集合に加わります。










