Estimasi yang tepat dari ketidakpastian prediktif sangat mendasar dalam aplikasi yang melibatkan keputusan penting. Ketidakpastian dapat digunakan untuk menilai keandalan prediksi model, memicu intervensi manusia, atau memutuskan apakah suatu model dapat digunakan dengan aman di alam liar.
Fortuna adalah perpustakaan untuk kuantifikasi ketidakpastian yang memudahkan pengguna untuk menjalankan tolok ukur dan membawa ketidakpastian ke sistem produksi. Fortuna menyediakan metode kalibrasi dan konformal mulai dari model pra-terlatih yang ditulis dalam kerangka apa pun, dan lebih lanjut mendukung beberapa metode inferensi Bayesian mulai dari model pembelajaran mendalam yang ditulis dalam rami. Bahasa ini dirancang untuk menjadi intuitif bagi para praktisi yang tidak terbiasa dengan kuantifikasi ketidakpastian, dan sangat dapat dikonfigurasi.
Periksa dokumentasi untuk quickStart, contoh dan referensi.
Fortuna menawarkan tiga mode penggunaan yang berbeda: dari perkiraan ketidakpastian, dari output model dan dari model rami. Ini melayani pengguna sesuai dengan kendala yang ditentukan oleh aplikasi mereka sendiri. Pipa mereka digambarkan pada gambar berikut, masing -masing mulai dari salah satu panel hijau.

Mulai dari perkiraan ketidakpastian memiliki persyaratan kompatibilitas minimal dan itu adalah tingkat interaksi tercepat dengan perpustakaan. Mode penggunaan ini menawarkan metode prediksi konformal untuk klasifikasi dan regresi. Ini mengambil estimasi ketidakpastian dalam input, dan mengembalikan set prediksi ketat yang mempertahankan tingkat probabilitas yang diberikan pengguna. Dalam tugas regresi satu dimensi, set konformal dapat dianggap sebagai versi kepercayaan diri yang dikalibrasi atau interval yang kredibel.
Pikiran bahwa jika ketidakpastian yang Anda berikan dalam input tidak akurat, set konformal mungkin besar dan tidak dapat digunakan. Untuk alasan ini, jika aplikasi Anda mengizinkannya, harap pertimbangkan output dari model dan dari mode penggunaan model Flax.
Contoh. Misalkan Anda ingin mengkalibrasi interval yang kredibel dengan error kesalahan cakupan, masing -masing sesuai dengan variabel input tes yang berbeda. Kami mengasumsikan bahwa interval yang kredibel dilewatkan sebagai array dari batas bawah dan atas, masing -masing test_lower_bounds dan test_upper_bounds . Anda juga memiliki batas bawah dan atas interval yang dapat dipercaya yang dihitung untuk beberapa input validasi, masing -masing val_lower_bounds dan val_upper_bounds . Array target validasi yang sesuai dilambangkan dengan val_targets . Kode berikut menghasilkan interval prediksi konformal , yaitu versi yang dikalibrasi dari Anda menguji interval yang kredibel.
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 ) Mulai dari output model mengasumsikan Anda telah melatih model dalam beberapa kerangka kerja, dan tiba di Fortuna dengan output model dalam format numpy.ndarray untuk setiap titik data input. Mode penggunaan ini memungkinkan Anda untuk mengkalibrasi output model Anda, memperkirakan ketidakpastian, menghitung metrik dan mendapatkan set konformal.
Dibandingkan dengan dari Mode Penggunaan Estimasi Ketidakpastian, yang satu ini menawarkan kontrol yang lebih baik, karena dapat memastikan estimasi ketidakpastian telah dikalibrasi dengan tepat. Namun, jika model telah dilatih dengan metode klasik, kuantifikasi yang dihasilkan dari ketidakpastian model (alias epistemik) mungkin buruk. Untuk mengurangi masalah ini, silakan pertimbangkan mode penggunaan dari model Flax.
Contoh. Misalkan Anda memiliki output model validasi dan uji, masing -masing val_outputs dan test_outputs . Selain itu, Anda memiliki beberapa array validasi dan variabel target, masing -masing val_targets dan test_targets . Kode berikut memberikan contoh klasifikasi minimal untuk mendapatkan estimasi entropi prediktif yang dikalibrasi.
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 )Mulai dari model Flax memiliki persyaratan kompatibilitas yang lebih tinggi daripada dari perkiraan ketidakpastian dan dari model output model, karena membutuhkan model pembelajaran mendalam yang ditulis dalam rami. Namun, ini memungkinkan Anda untuk mengganti pelatihan model standar dengan prosedur inferensi Bayesian yang dapat diskalakan, yang secara signifikan dapat meningkatkan kuantifikasi ketidakpastian prediktif.
Contoh. Misalkan Anda memiliki model model pembelajaran klasifikasi rami dari input ke logit, dengan dimensi output yang diberikan oleh output_dim . Selain itu, Anda memiliki beberapa pelatihan, validasi, dan kalibrasi data TensorFlow loader train_data_loader , val_data_loader dan test_data_loader , masing -masing. Kode berikut memberikan contoh klasifikasi minimal untuk mendapatkan estimasi probabilitas yang dikalibrasi.
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 ())Catatan: Sebelum menginstal Fortuna, Anda diharuskan menginstal Jax di lingkungan virtual Anda.
Anda dapat menginstal Fortuna dengan mengetik
Pip Instal AWS-Fortuna
Atau, Anda dapat membangun paket menggunakan puisi. Jika Anda memilih untuk mengejar cara ini, pertama -tama instal puisi dan tambahkan ke jalur Anda (lihat di sini). Lalu ketik
instalasi puisi
Semua dependensi akan dipasang pada versi yang diperlukan. Pertimbangkan menambahkan bendera berikut ke perintah di atas:
-E transformers Jika Anda ingin menggunakan model dan dataset dari memeluk wajah.-E sagemaker Jika Anda ingin menginstal dependensi yang diperlukan untuk menjalankan Fortuna di Amazon Sagemaker.-E docs jika Anda ingin menginstal dependensi sphinx untuk membangun dokumentasi.-E notebooks jika Anda ingin bekerja dengan jupyter notebooks. Akhirnya, Anda dapat mengakses virtualEnv yang dibuat dengan puisi dengan mengetik poetry shell , atau menjalankan perintah dalam virtualEnv menggunakan perintah run , misalnya poetry run python .
Beberapa contoh penggunaan ditemukan di Direktori /Contoh.
Kami menawarkan pipa sederhana yang memungkinkan Anda menjalankan Fortuna di Amazon Sagemaker dengan usaha minimal.
config_dir , itu adalah jalur absolut ke direktori konfigurasi utama, dan config_filename , itu adalah nama file konfigurasi utama (tanpa ekstensi .yaml), masukkan python dan jalankan yang berikut: from fortuna . sagemaker import run_training_job
run_training_job ( config_dir = config_dir , config_filename = config_filename )Untuk mengutip Fortuna:
@Article {detommaso2023fortuna,
title = {fortuna: perpustakaan untuk kuantifikasi ketidakpastian dalam pembelajaran mendalam},
penulis = {Detommaso, Gianluca dan Gasparin, Alberto dan Donini, Michele dan Seeger, Matthias dan Wilson, Andrew Gordon dan Archambeau, Cedric},
Journal = {arXiv preprint arxiv: 2302.04019},
tahun = {2023}
}
Jika Anda ingin berkontribusi pada proyek, silakan merujuk ke pedoman kontribusi kami.
Proyek ini dilisensikan di bawah lisensi APACHE-2.0. Lihat lisensi untuk informasi lebih lanjut.