등각 예측을 사용하는 이미지 분류기에 대한 불확실성 세트
@article{angelopoulos2020sets,
title={Uncertainty Sets for Image Classifiers using Conformal Prediction},
author={Angelopoulos, Anastasios N and Bates, Stephen and Malik, Jitendra and Jordan, Michael I},
journal={arXiv preprint arXiv:2009.14193},
year={2020}
}
이 코드베이스는 PyTorch 분류기를 수정하여 사용자가 지정한 확률로 실제 클래스를 포함하는 예측 세트를 출력합니다. 이는 함께 제공되는 논문에서 소개하는 RAPS(Regularized Adaptive Prediction Set)라는 방법을 사용합니다. 이 절차는 Platt 스케일링만큼 간단하고 빠르지만 모든 모델과 데이터 세트에 대해 공식적인 유한 표본 적용 범위를 보장합니다.
Imagenet의 예측 세트 예 테스트 시간 이미지의 난이도에 따라 세트 크기가 어떻게 변경되는지 설명하기 위해 우리 방법으로 생성된 95% 예측 세트와 함께 여우 다람쥐 클래스의 세 가지 예를 보여줍니다. 우리는 RAPS
및 등각 분류를 탐색할 수 있는 Colab을 작성했습니다. Colab을 실행하기 위해 아무것도 설치할 필요가 없습니다. 노트북은 사전 학습된 모델에서 예측 세트를 구성하는 과정을 안내합니다. 또한 해당 RAPS
세트와 함께 ImageNet의 예제를 시각화하고 정규화 매개변수를 가지고 놀 수 있습니다.
아래 방패를 클릭하면 Colab에 액세스할 수 있습니다.
자신의 프로젝트에서 우리 코드를 사용하고 실험을 재현하고 싶다면 아래 도구를 제공합니다. 코드베이스는 패키지는 아니지만 패키지처럼 사용하기 쉽고 위의 Colab 노트북에서 그렇게 했습니다.
루트 디렉터리에서 종속성을 설치하고 다음을 실행하여 예제를 실행합니다.
git clone https://github.com/aangelopoulos/conformal-classification
cd conformal-classification
conda env create -f environment.yml
conda activate conformal
python example.py 'path/to/imagenet/val/'
90% 예측 세트를 출력하도록 사전 학습된 분류기를 수정하는 최소 예제를 보려면 example.py
살펴보세요.
자신의 모델 에서 우리 코드베이스를 사용하려면 먼저 파일 상단에 다음을 배치하세요.
from conformal.py import *
from utils.py import *
그런 다음 다음과 같은 라인을 사용하여 등각 교정을 위한 홀드아웃 세트를 만듭니다.
calib, val = random_split(mydataset, [num_calib,total-num_calib])
마지막으로 모델을 만들 수 있습니다.
model = ConformalModel(model, calib_loader, alpha=0.1, lamda_criterion='size')
ConformalModel
객체는 부울 플래그를 randomized
사용합니다. randomized=True
인 경우 테스트 시 세트가 무작위로 지정되지 않습니다. 이는 보수적인 적용 범위로 이어지지만 결정론적인 동작으로 이어집니다.
ConformalModel
객체는 두 번째 부울 플래그인 allow_zero_sets
사용합니다. allow_zero_sets=True
인 경우 테스트 시 크기가 0인 세트는 허용되지 않습니다. 이는 보수적인 적용 범위로 이어지지만 크기가 0인 세트는 없습니다.
alpha
, kreg
및 lamda
수동으로 선택하는 방법은 아래 설명을 참조하세요.
example.py
의 출력은 다음과 같아야 합니다.
Begin Platt scaling.
Computing logits for model (only happens once).
100%|███████████████████████████████████████| 79/79 [02:24<00:00, 1.83s/it]
Optimal T=1.1976691484451294
Model calibrated and conformalized! Now evaluate over remaining data.
N: 40000 | Time: 1.686 (2.396) | Cvg@1: 0.766 (0.782) | Cvg@5: 0.969 (0.941) | Cvg@RAPS: 0.891 (0.914) | Size@RAPS: 2.953 (2.982)
Complete!
괄호 안의 값은 실행 평균입니다. 앞의 값은 가장 최근 배치에만 적용됩니다. 타이밍 값은 시스템에 따라 다르지만 나머지 숫자는 정확히 동일해야 합니다. 터미널 창이 작은 경우 진행 표시줄이 여러 줄에 걸쳐 인쇄될 수 있습니다.
실험의 예상 결과는 experiments/outputs
에 저장되며 이는 우리 논문에 보고된 결과와 정확히 동일합니다. 종속성을 설치한 후 './experiments/'에서 Python 스크립트를 실행하여 결과를 재현할 수 있습니다. 표 2에서는 ImageNet-V2의 matched-frequencies
버전을 사용했습니다.
alpha
, kreg
및 lamda
선택 alpha
허용할 수 있는 최대 오류 비율입니다. 따라서 목표 범위는 1-alpha
입니다. 원하는 적용 범위가 더 엄격하기 때문에 alpha
작을수록 일반적으로 세트가 더 커집니다.
'kreg'와 'lamda'를 선택하는 두 가지 최적의 절차를 포함했습니다. 작은 크기로 세트를 원할 경우 'lamda_criterion='size''로 설정하세요. 대략적인 조건부 적용 범위를 설정하려면 'lamda_criterion='adaptiveness''를 설정하세요.
MIT 라이센스