예측 불확실성의 적절한 추정은 중요한 결정을 포함하는 응용 분야에서 기본적입니다. 불확실성은 모델 예측의 신뢰성을 평가하거나, 인간 개입을 유발하거나, 모델을 야생에 안전하게 배치 할 수 있는지 여부를 결정하는 데 사용될 수 있습니다.
Fortuna는 불확실성 정량화를위한 도서관으로, 사용자가 벤치 마크를 쉽게 실행하고 생산 시스템에 불확실성을 가져올 수 있습니다. Fortuna는 모든 프레임 워크에 작성된 미리 훈련 된 모델에서 시작하여 교정 및 적합성 방법을 제공하며, 아마로 작성된 딥 러닝 모델에서 시작하여 몇 가지 베이지안 추론 방법을 추가로 지원합니다. 이 언어는 불확실성 정량화에 익숙하지 않은 실무자에게 직관적으로 설계되었으며 구성 가능합니다.
QuickStart, 예제 및 참조는 문서를 확인하십시오.
Fortuna는 불확실성 추정, 모델 출력 및 아마 모델의 세 가지 사용 모드를 제공합니다. 이들은 자신의 응용 프로그램에 의해 지시 된 제약 조건에 따라 사용자에게 서비스를 제공합니다. 그들의 파이프 라인은 각각 녹색 패널 중 하나에서 시작하는 다음 그림에 묘사되어 있습니다.

불확실성 추정에서 시작하여 호환성 요구 사항이 최소화되며 라이브러리와 가장 빠른 상호 작용 수준입니다. 이 사용 모드는 분류 및 회귀 모두에 대한 적합성 예측 방법을 제공합니다. 이들은 입력에서 불확실성 추정치를 취하고 사용자가 제공 한 확률 수준을 유지하는 엄격한 예측 세트를 반환합니다. 1 차원 회귀 작업에서, 컨 포멀 세트는 신뢰 또는 신뢰할 수있는 간격의 보정 된 버전으로 생각 될 수 있습니다.
입력에 제공하는 불확실성이 부정확 한 경우, 적합성 세트는 크고 사용할 수 없을 수 있습니다. 이러한 이유로 응용 프로그램에서 허용되는 경우 모델 출력 및 아마 모델 사용 모드에서 나온 것입니다.
예. 커버리지 오류 error 로 신뢰할 수있는 간격을 교정하려고한다고 가정하십시오. 각각의 다른 테스트 입력 변수에 해당합니다. 신뢰할 수있는 간격은 각각 test_lower_bounds 및 test_upper_bounds 의 하한 및 상한의 배열로 전달된다고 가정합니다. val_upper_bounds 여러 가지 유효성 검사 입력에 대해 계산 된 신뢰할 수있는 간격의 낮은 및 상한이 val_lower_bounds . 해당 유효성 검사 대상 배열은 val_targets 로 표시됩니다. 다음 코드는 적합한 예측 간격 , 즉 교정 버전의 신뢰할 수있는 간격을 생성합니다.
from fortuna . conformal import QuantileConformalRegressor
conformal_intervals = QuantileConformalRegressor (). conformal_interval (
val_lower_bounds = val_lower_bounds , val_upper_bounds = val_upper_bounds ,
test_lower_bounds = test_lower_bounds , test_upper_bounds = test_upper_bounds ,
val_targets = val_targets , error = error ) 모델 출력에서 시작하여 일부 프레임 워크에서 이미 모델을 교육했으며 각 입력 데이터 포인트에 대해 numpy.ndarray 형식의 모델 출력을 사용하여 Fortuna에 도착한다고 가정합니다. 이 사용 모드를 사용하면 모델 출력을 보정하고, 불확실성을 추정하고, 메트릭을 계산하고, 컨 포멀 세트를 얻을 수 있습니다.
불확실성 추정치 사용 모드와 비교할 때 불확실성 추정치가 적절하게 교정되었는지 확인할 수 있으므로 더 나은 제어를 제공합니다. 그러나 모델이 고전적인 방법으로 훈련 된 경우, 모델의 수량화 (일명 전염병) 불확실성이 좋지 않을 수 있습니다. 이 문제를 완화하려면 From Flax 모델 사용 모드를 고려하십시오.
예. val_outputs 및 test_outputs 와 같은 유효성 검사 및 테스트 모델 출력이 있다고 가정합니다. 또한 val_targets 및 test_targets 와 같은 유효성 검사 및 대상 변수의 배열이 있습니다. 다음 코드는 교정 된 예측 엔트로피 추정치를 얻기 위해 최소 분류 예제를 제공합니다.
from fortuna . output_calib_model import OutputCalibClassifier
calib_model = OutputCalibClassifier ()
status = calib_model . calibrate ( outputs = val_outputs , targets = val_targets )
test_entropies = calib_model . predictive . entropy ( outputs = test_outputs )아마 모델에서 시작하여 불확실성 추정치와 모델 출력 사용 모드보다 호환성 요구 사항이 더 높습니다. 그러나 표준 모델 교육을 확장 가능한 베이지안 추론 절차로 대체 할 수있어 예측 불확실성의 정량화를 크게 향상시킬 수 있습니다.
예. output_dim 에 의해 출력 차원이 제공되는 입력에서 로그까지의 아마 분류 딥 러닝 모델 model 있다고 가정 해 봅시다. 또한, 당신은 각각 교육, 검증 및 교정 텐서 플로 데이터 로더 train_data_loader , val_data_loader 및 test_data_loader 가 있습니다. 다음 코드는 교정 된 확률 추정치를 얻기 위해 최소 분류 예제를 제공합니다.
from fortuna . data import DataLoader
train_data_loader = DataLoader . from_tensorflow_data_loader ( train_data_loader )
calib_data_loader = DataLoader . from_tensorflow_data_loader ( val_data_loader )
test_data_loader = DataLoader . from_tensorflow_data_loader ( test_data_loader )
from fortuna . prob_model import ProbClassifier
prob_model = ProbClassifier ( model = model )
status = prob_model . train ( train_data_loader = train_data_loader , calib_data_loader = calib_data_loader )
test_means = prob_model . predictive . mean ( inputs_loader = test_data_loader . to_inputs_loader ())참고 : Fortuna를 설치하기 전에 가상 환경에 JAX를 설치해야합니다.
입력하여 Fortuna를 설치할 수 있습니다
PIP 설치 AWS-FORTUNA
또는시를 사용하여 패키지를 만들 수 있습니다. 이 방법을 추구하기로 선택한 경우 먼저시를 설치하여 경로에 추가하십시오 (여기 참조). 그런 다음 입력하십시오
시 설치
모든 종속성은 필요한 버전으로 설치됩니다. 위의 명령에 다음 플래그를 추가하는 것을 고려하십시오.
-E transformers 포옹 얼굴에서 모델과 데이터 세트를 사용하려는 경우.-E sagemaker Amazon Sagemaker에서 Fortuna를 실행하는 데 필요한 종속성을 설치하려면.-E docs .-E notebooks . 마지막으로, poetry shell 입력하여 생성 된시에 대한 virtualenv에 액세스하거나 run 명령, 예를 들어, poetry run python 사용하여 virtualenv 내에서 명령을 실행할 수 있습니다.
몇 가지 사용 예제는 /예제 디렉토리에 있습니다.
우리는 최소한의 노력으로 Amazon Sagemaker에서 Fortuna를 실행할 수있는 간단한 파이프 라인을 제공합니다.
config_dir 가 주어지면, 이는 기본 구성 디렉토리의 절대 경로이며 config_filename (.YAML 확장자없이)의 기본 구성 파일의 이름입니다. Python을 입력하고 다음을 실행하십시오. from fortuna . sagemaker import run_training_job
run_training_job ( config_dir = config_dir , config_filename = config_filename )Fortuna를 인용하기 위해 :
@article {detommaso2023 fortlea,
Title = {Fortuna : 딥 러닝에서 불확실성 정량화를위한 라이브러리},
저자 = {Detommaso, Gianluca and Gasparin, Alberto and Donini, Michele and Seeger, Matthias and Wilson, Andrew Gordon and Archambeau, Cedric},
저널 = {arxiv preprint arxiv : 2302.04019},
연도 = {2023}
}
프로젝트에 기여하려면 기여 가이드 라인을 참조하십시오.
이 프로젝트는 Apache-2.0 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스를 참조하십시오.