Die ordnungsgemäße Schätzung der prädiktiven Unsicherheit ist für Anwendungen, die kritische Entscheidungen beinhalten, von grundlegender Bedeutung. Unsicherheit kann verwendet werden, um die Zuverlässigkeit von Modellvorhersagen zu bewerten, menschliche Eingriffe auszulösen oder zu entscheiden, ob ein Modell sicher in freier Wildbahn eingesetzt werden kann.
Fortuna ist eine Bibliothek für Unsicherheitsquantifizierung, die es den Benutzern erleichtert, Benchmarks auszuführen und Produktionssysteme zu Unsicherheiten zu bringen. Fortuna bietet Kalibrierungs- und konforme Methoden aus vorgebliebenen Modellen, die in jedem Rahmen geschrieben wurden, und unterstützt mehrere Bayesian-Inferenzmethoden aus Deep-Learning-Modellen, die in Flachs geschrieben wurden. Die Sprache ist so konzipiert, dass Praktiker, die mit der Quantifizierung der Unsicherheit nicht vertraut sind, intuitiv sein und sehr konfigurierbar ist.
Überprüfen Sie die Dokumentation für QuickStart, Beispiele und Referenzen.
Fortuna bietet drei verschiedene Verwendungsmodi an: aus Unsicherheitsschätzungen, von Modellausgaben und von Flachsmodellen. Diese dienen Benutzern gemäß den Einschränkungen, die von ihren eigenen Anwendungen diktiert wurden. Ihre Pipelines sind in der folgenden Abbildung abgebildet, die jeweils von einem der grünen Panels ausgehen.

Ausgehend von Unsicherheitsschätzungen hat minimale Kompatibilitätsanforderungen und es ist die schnellste Interaktion mit der Bibliothek. Dieser Nutzungsmodus bietet konforme Vorhersagemethoden sowohl für die Klassifizierung als auch für die Regression. Diese nehmen Unsicherheitsschätzungen in der Eingabe an und geben strenge Sätze von Vorhersagen zurück, die eine benutzergegebene Wahrscheinlichkeitsniveau beibehalten. Bei eindimensionalen Regressionsaufgaben können konforme Sets als kalibrierte Versionen von Vertrauen oder glaubwürdige Intervalle angesehen werden.
Wenn die Unsicherheitsschätzungen, die Sie in Eingaben angeben, ungenau sind, können konforme Sets groß und unbrauchbar sein. Wenn Ihre Anwendung dies zulässt, berücksichtigen Sie bitte die aus Modellausgaben und aus den Nutzungsmodellen von Flachsmodellen.
Beispiel. Angenommen, Sie möchten glaubwürdige Intervalle mit error kalibrieren, die jeweils einer anderen Testeingangsvariablen entsprechen. Wir gehen davon aus, dass glaubwürdige Intervalle als Arrays der unteren und oberen Grenzen übergeben werden, jeweils test_lower_bounds und test_upper_bounds . Sie haben auch untere und obere Grenzen glaubwürdiger Intervalle, die für mehrere Validierungseingänge berechnet wurden, jeweils val_lower_bounds bzw. val_upper_bounds . Das entsprechende Array der Validierungsziele wird mit val_targets bezeichnet. Der folgende Code erzeugt konforme Vorhersageintervalle , dh kalibrierte Versionen von You -Test -Testintervallen.
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 ) Ausgehend von den Modellausgaben geht davon aus, dass Sie bereits ein Modell in einem Framework geschult haben und mit Modellausgaben in numpy.ndarray -Format für jeden Eingabedatenpunkt zum Fortuna gelangen. Mit diesem Nutzungsmodus können Sie Ihre Modellausgaben kalibrieren, Unsicherheit schätzen, Metriken berechnen und konforme Sets erhalten.
Im Vergleich zu den Nutzungsmodus aus Unsicherheitsschätzungen bietet dieser eine bessere Kontrolle, da sichergestellt werden kann, dass die Schätzungen der Unsicherheit angemessen kalibriert wurden. Wenn das Modell jedoch mit klassischen Methoden trainiert worden wäre, kann die daraus resultierende Quantifizierung des Modells (auch bekannt als epistemische) Unsicherheit schlecht sein. Um dieses Problem zu mildern, berücksichtigen Sie bitte den Nutzungsmodus aus Flachsmodellen.
Beispiel. Angenommen, Sie haben Validierungs- und Testmodellausgänge bzw. val_outputs bzw. test_outputs . Darüber hinaus haben Sie einige Arrays der Validierungs- und Zielvariablen, jeweils val_targets bzw. test_targets . Der folgende Code enthält ein minimales Klassifizierungsbeispiel, um kalibrierte Vorhersage -Entropie -Schätzungen zu erhalten.
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 )Ausgehend von Flachsmodellen weist Sie höhere Kompatibilitätsanforderungen als die aus Unsicherheitsschätzungen und aus den Nutzungsmodi der Modellausgaben auf, da Deep -Learning -Modelle in Flachs geschrieben werden müssen. Sie können jedoch das Standardmodelltraining durch skalierbare Bayes'sche Inferenzverfahren ersetzen, was die Quantifizierung der prädiktiven Unsicherheit erheblich verbessern kann.
Beispiel. Angenommen, Sie haben ein Flachsklassifizierungsmodell für Deep -Learning model von Eingängen zu Protokolls, wobei die Ausgabedimension von output_dim angegeben ist. Darüber hinaus verfügen Sie über einige Trainings-, Validierungs- und Kalibrierungs -Tensorflow -Datenloader train_data_loader , val_data_loader bzw. test_data_loader . Der folgende Code enthält ein minimales Klassifizierungsbeispiel, um kalibrierte Wahrscheinlichkeitsschätzungen zu erhalten.
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 ())Hinweis: Vor der Installation Fortuna müssen Sie JAX in Ihrer virtuellen Umgebung installieren.
Sie können Fortuna durch Eingabe installieren
PIP Installieren Sie AWS-Fortuna
Alternativ können Sie das Paket mit Gedichten erstellen. Wenn Sie sich dafür entscheiden, diese Weise zu verfolgen, installieren Sie zuerst die Gedichte und fügen Sie sie Ihrem Weg hinzu (siehe hier). Geben Sie dann ein
Poesie installieren
Alle Abhängigkeiten werden in ihren erforderlichen Versionen installiert. Erwägen Sie dem obigen Befehl die folgenden Flags hinzuzufügen:
-E transformers , wenn Sie Modelle und Datensätze vom Umarmungsgesicht verwenden möchten.-E sagemaker wenn Sie die Abhängigkeiten installieren möchten, die für den Ausführen von Fortuna bei Amazon Sagemaker erforderlich sind.-E docs Wenn Sie Sphinx -Abhängigkeiten installieren möchten, um die Dokumentation zu erstellen.-E notebooks Wenn Sie mit Jupyter -Notizbüchern arbeiten möchten. Schließlich können Sie entweder auf das Virtualenv zugreifen, das Poesie durch Eingeben von poetry shell erstellt hat, oder Befehle im Virtualenv mit dem Befehl run , z. B. poetry run python , ausführen.
Im Verzeichnis /Beispiele finden Sie mehrere Verwendungsbeispiele.
Wir bieten eine einfache Pipeline an, mit der Sie mit minimalem Aufwand Fortuna bei Amazon Sagemaker betreiben können.
config_dir der absolute Pfad zum Hauptkonfigurationsverzeichnis und config_filename , das ist der Name der Hauptkonfigurationsdatei (ohne .yaml -Erweiterung) ein, geben Sie Python ein und führen Sie Folgendes aus: from fortuna . sagemaker import run_training_job
run_training_job ( config_dir = config_dir , config_filename = config_filename )Fortuna zitieren:
@Article {detommaso2023fortuna,
Titel = {Fortuna: Eine Bibliothek zur Unsicherheit Quantifizierung in Deep Learning},
Autor = {DETOMMASO, GIANLUCA UND GASPARIN, ALBERTO UND DONINI, MICHELE UND SEEGEGER, MATTHIAS UND WILSON, ANDREW GORDON und ARCHBEAUT, CEDRIC},
Journal = {Arxiv Preprint Arxiv: 2302.04019},
Jahr = {2023}
}
Wenn Sie zum Projekt beitragen möchten, lesen Sie bitte unsere Beitragsrichtlinien.
Dieses Projekt ist unter der Lizenz Apache-2.0 lizenziert. Weitere Informationen finden Sie unter Lizenz.