予測不確実性の適切な推定は、重要な決定を伴うアプリケーションでは基本的です。不確実性を使用して、モデル予測の信頼性を評価したり、人間の介入を引き起こしたり、モデルを野生で安全に展開できるかどうかを決定できます。
Fortunaは不確実性の定量化のライブラリであり、ユーザーがベンチマークを簡単に実行し、生産システムに不確実性をもたらすことができます。 Fortunaは、あらゆるフレームワークで記述された事前に訓練されたモデルから始まるキャリブレーションとコンフォーマルの方法を提供し、さらに、亜麻で書かれた深い学習モデルから始まるいくつかのベイズ推論方法をサポートします。この言語は、不確実性の定量化に不慣れな開業医にとって直感的であるように設計されており、高度に構成可能です。
クイックスタート、例、参照については、ドキュメントを確認してください。
Fortunaは、不確実性の推定、モデル出力、Flaxモデルの3つの異なる使用モードを提供します。これらは、独自のアプリケーションによって決定される制約に従ってユーザーにサービスを提供します。それらのパイプラインは、それぞれが緑のパネルの1つから始まる次の図に描かれています。

不確実性から始まる推定値は最小限の互換性要件であり、ライブラリとの対話の最も速いレベルです。この使用モードは、分類と回帰の両方のコンフォーマル予測方法を提供します。これらは、入力に不確実性の推定値をとっており、ユーザーが提供する確率を保持する予測の厳密なセットを返します。一次元回帰タスクでは、コンフォーマルセットは、自信または信頼できる間隔の校正バージョンと見なされる場合があります。
入力で提供される不確実性が不正確であると推定される場合、コンフォーマルセットは大きくて使用できない可能性があることに注意してください。このため、アプリケーションで許可されている場合は、From Model OutputsとFlaxモデルの使用モードを検討してください。
例。それぞれが異なるテスト入力変数に対応するカバレッジエラーerrorを使用して、信頼できる間隔を調整するとします。信頼できる間隔は、それぞれtest_lower_boundsとtest_upper_boundsの下限と上限の配列として渡されると想定しています。また、いくつかの検証入力に対して計算された信頼できる間隔の下限と上限がそれぞれval_lower_boundsとval_upper_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 )Flaxモデルから始まることは、不確実性の推定値から、および亜麻で記述された深い学習モデルが必要なため、モデル出力の使用モードよりも高い互換性要件があります。ただし、標準モデルトレーニングをスケーラブルなベイジアン推論手順に置き換えることができます。これにより、予測不確実性の定量化が大幅に改善される可能性があります。
例。入力からロジットまでのFLAX分類ディープラーニングモデルmodelがあり、 output_dimによって出力寸法が与えられるとします。さらに、トレーニング、検証、およびキャリブレーションTensorFlowデータローダー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をインストールできます
ピップインストールAWS-Fortuna
または、詩を使用してパッケージを構築することもできます。この方法で追求することを選択した場合は、最初に詩をインストールしてパスに追加します(こちらを参照)。次に、入力します
詩のインストール
すべての依存関係は、必要なバージョンにインストールされます。上記のコマンドに次のフラグを追加することを検討してください。
-E transformers 、顔からモデルとデータセットを使用したい場合。-E sagemaker Amazon SagemakerでFortunaを実行するために必要な依存関係をインストールする場合。-E docsスフィンクス依存関係をインストールしてドキュメントを作成する場合。-E notebooks Jupyterノートブックを使用したい場合。最後に、 poetry shellを入力することによって作成された詩が作成したVirtualEnvにアクセスするか、 run poetry run pythonを使用してVirtualenv内のコマンドを実行することができます。
/Examplesディレクトリにいくつかの使用例があります。
最小限の労力で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 )フォルトゥーナを引用するには:
@article {detommaso2023 Frougha、
title = {Fortuna:深い学習における不確実性の定量化のためのライブラリ}、
著者= {Detommaso、Gianluca and Gasparin、Alberto and Donini、Michele、Seeger、Matthias and Wilson、Andrew Gordon and Archambeau、Cedric}、
journal = {arxiv preprint arxiv:2302.04019}、
年= {2023}
}
プロジェクトに貢献したい場合は、貢献ガイドラインを参照してください。
このプロジェクトは、Apache-2.0ライセンスの下でライセンスされています。詳細については、ライセンスを参照してください。