Conformal Prediction
컨포멀 예측이 AI에 분포 가정 없는 불확실성을 제공하는 방식을 알아보세요. 신뢰할 수 있는 모델 결과를 보장하기 위해 Ultralytics YOLO26으로 예측 집합을 구현해보세요.
컨포멀 예측은 머신러닝 (ML)의 통계적 프레임워크로, 모델 예측에 대한 분포에 구애받지 않는 불확실성 측정을 제공합니다. 하나의 특정 클래스 레이블과 같은 단일 점 예측을 출력하는 대신, 컨포멀 예측기는 사용자가 지정한 확률(예: 90% 또는 95%)로 실제 값을 포함하는 예측 집합 또는 구간을 출력합니다. 이 프레임워크는 모델 아키텍처를 변경하지 않고도 모든 인공지능 (AI) 모델에 적용되어 공식적인 통계적 보장을 제공합니다. 최신 도구와 연구의 전체 목록은 Awesome Conformal Prediction 저장소에서 확인할 수 있습니다.
컨포멀 예측의 작동 방식#
기본 메커니즘은 비순응성 점수를 사용하여 새로운 예측이 과거 예시와 비교했을 때 얼마나 이례적인지 평가하는 데 기반합니다.
- 모델 학습: 먼저 표준 학습 데이터셋을 사용하여 기준 모델을 학습합니다.
- 캘리브레이션 단계: 별도로 분리해 둔 캘리브레이션 데이터셋을 학습된 모델에 입력합니다. 이미지 분류의 역확률과 같은 비순응성 점수를 각 예측에 대해 계산합니다.
- 분위수 계산: 목표 신뢰 수준(예: 95%)을 결정하고, 이러한 캘리브레이션 점수의 해당 분위수를 찾아 예측 집합을 구성합니다.
- 추론 적용: 실시간 추론 중에 새로운 입력을 평가하고, 점수가 캘리브레이션 분위수보다 낮은 모든 가능한 레이블을 포함합니다.
이 접근 방식의 수학적 증명은 A Gentle Introduction to Conformal Prediction 튜토리얼에서 살펴보거나, 시간적 불확실성을 처리하는 시계열 예측 접근 방식에 대해 알아볼 수 있습니다.
컨포멀 예측과 관련 용어의 차이#
이 프레임워크를 모델 테스트 중 사용되는 표준 지표와 구분하는 것이 중요합니다.
- 컨포멀 예측과 신뢰도 점수 비교: 표준 신뢰도 점수는 모델의 내부 확신을 반영하지만, 캘리브레이션이 제대로 되지 않는 경우가 많고 수학적 보장이 없습니다. 컨포멀 예측은 이러한 원시 점수를 보장된 집합으로 변환합니다. 기존의 조정 방법은 scikit-learn의 확률 캘리브레이션을 참조하세요.
- 컨포멀 예측과 정확도 비교: 정확도는 전체 데이터셋에서 모델이 얼마나 자주 올바르게 예측하는지를 설명하는 전역적인 과거 지표인 반면, 컨포멀 추론은 새로 이루어지는 각각의 예측에 대해 국소적이고 인스턴스별 구간을 제공합니다.
실제 적용 사례#
컨포멀 예측은 모델의 사각지대를 파악하는 것이 중요한 고위험 분야에서 필수적입니다.
- 의료 진단: 의료 분야에서 AI를 활용하여 스캔을 분석할 때 모델은 잠재적으로 잘못된 하나의 클래스를 출력하는 대신 가능한 진단의 집합을 출력할 수 있습니다. 이를 통해 의료진은 실행 가능한 모든 가능성을 조사할 수 있으며, 신뢰할 수 있는 유전체 의학 및 영상에 관한 최근 연구를 뒷받침합니다.
- 자율주행: 자동차 시스템에서 AI를 사용할 때 객체 감지에 예측 구간을 적용하면 보행자 주변에 공간적 신뢰 영역이 생성되어, 차량의 제동 시스템이 최악의 움직임을 고려하면서 안전하게 대응할 수 있습니다.
예측 집합 구현#
MAPIE (모델 비종속 예측 구간 추정기)와 같은 라이브러리는 Python용 기본 제공 도구를 제공하며, 회귀 작업에서는 컨포멀 분위수 회귀를 자주 활용합니다. Ultralytics YOLO26과 같은 고급 모델의 확률을 사용하여 기본적인 컨포멀 예측 로직을 구현할 수도 있습니다. 다음 예제는 YOLO26 분류 확률을 사용하여 예측 집합을 구성하며, 누적 임계값에 도달할 때까지 상위 클래스를 포함하는 로직을 모방합니다.
from ultralytics import YOLO
# Load an Ultralytics YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Perform inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
# Simple conformal-style prediction set logic based on cumulative probability
target_coverage = 0.95
prediction_set = []
cumulative_prob = 0.0
# Sort probabilities in descending order using the results object
probs = results[0].probs
sorted_indices = probs.top5
for idx in sorted_indices:
class_name = results[0].names[idx]
class_prob = probs.data[idx].item()
prediction_set.append((class_name, round(class_prob, 3)))
cumulative_prob += class_prob
# Stop adding to the set once we reach the 95% coverage threshold
if cumulative_prob >= target_coverage:
break
print(f"95% Prediction Set: {prediction_set}")신뢰할 수 있는 시스템을 개발하려면 캘리브레이션을 저해하는 데이터 드리프트를 방지할 수 있는 견고한 데이터 관행이 필요합니다. Ultralytics Platform과 같은 도구는 최신 분류 데이터셋을 수집하고, 모델을 재학습하며, 모델 배포를 안전하게 관리하는 과정을 간소화합니다. 데이터셋 편향 이해에 관한 가이드에서 균형 잡힌 데이터를 큐레이션하는 방법을 자세히 알아보거나, 매년 개최되는 COPA conference에서 발표되는 최신 발전 사항을 추적할 수 있습니다.









