
Baal ist eine aktive Lernbibliothek, die sowohl industrielle Anwendungen als auch Forschung usecasen unterstützt.
Lesen Sie die Dokumentation unter https://baal.readthedocs.io.
Unser Papier kann auf Arxiv gelesen werden. Es enthält Tipps und Tricks, um aktives Lernen in der Produktion verwendbar zu machen.
Eine kurze Einführung in Baal und Bayesian Active Learning finden Sie unter folgenden Links:
Baal wurde zunächst bei Elementai (im Jahr 2021 von Servicenow erworben) entwickelt, ist aber jetzt unabhängig.
Baal benötigt Python>=3.8 .
So pip install baal
Wir verwenden Poesie als unseren Paketmanager. So installieren Sie Baal aus Quelle: poetry install
Active Learning ist ein spezieller Fall von maschinellem Lernen, bei dem ein Lernalgorithmus in der Lage ist, den Benutzer (oder eine andere Informationsquelle) interaktiv abzufragen, um die gewünschten Ausgänge an neuen Datenpunkten zu erhalten (um das Konzept ausführlicher zu verstehen, siehe unserem Tutorial ).
Derzeit unterstützt Baal die folgenden Methoden, um aktives Lernen durchzuführen.
Wenn Sie neue Methoden vorschlagen möchten, geben Sie bitte ein Problem ein.
Die Monte-Carlo-Dropout -Methode ist eine bekannte Annäherung an Bayes'sche neuronale Netzwerke. Bei dieser Methode wird die Dropout -Schicht sowohl in der Trainings- als auch in der Testzeit verwendet. Indem wir das Modell mehrmals ausführen, während wir zufällig Gewichte fallen lassen, berechnen wir die Unsicherheit der Vorhersage anhand einer der Unsicherheitsmessungen in der Heuristik.
Der Rahmen besteht aus vier Hauptteilen, wie im folgenden Flussdiagramm gezeigt:
Wickeln Sie Ihren Datensatz in unsere ActiveRearNingDataset -Klasse ein. Dadurch wird sichergestellt, dass der Datensatz in training und pool aufgeteilt wird. Der pool repräsentiert den Teil des Trainingssatzes, der noch nicht gekennzeichnet werden muss.
Wir bieten ein leichtes Objektmodellwrapper, das keras.Model ähnlich ist, damit das Modell einfacher trainiert und testen kann. Wenn Ihr Modell nicht für aktives Lernen bereit ist, stellen wir Module zur Vorbereitung zur Verfügung.
Beispielsweise ändert der McDropoutModule -Wrapper die vorhandene Ausfallschicht, die sowohl in der Trainings- als auch in der Inferenzzeit verwendet werden soll, und der ModelWrapper gibt die Anzahl der Iterationen an, die bei Training und Inferenz ausgeführt werden sollen.
Schließlich berechnet ActiveRearningLoop die Unsicherheit automatisch und kennzeichnet die unsichersten Elemente im Pool.
Zusammenfassend sollte Ihr Skript dem ähnlich sein:
dataset = ActiveLearningDataset ( your_dataset )
dataset . label_randomly ( INITIAL_POOL ) # label some data
model = MCDropoutModule ( your_model )
wrapper = ModelWrapper ( model , args = TrainingArgs (...))
experiment = ActiveLearningExperiment (
trainer = wrapper , # Huggingface or ModelWrapper to train
al_dataset = dataset , # Active learning dataset
eval_dataset = test_dataset , # Evaluation Dataset
heuristic = BALD (), # Uncertainty heuristic to use
query_size = 100 , # How many items to label per round.
iterations = 20 , # How many MC sampling to perform per item.
pool_size = None , # Optionally limit the size of the unlabelled pool.
criterion = None # Stopping criterion for the experiment.
)
# The experiment will run until all items are labelled.
metrics = experiment . start ()Für ein vollständiges Experiment finden Sie Experimente/vgg_mcdropout_cifar10.py .
docker build [--target base_baal] -t baal .
docker run --rm baal --gpus all python3 experiments/vgg_mcdropout_cifar10.pyKlonen Sie einfach das Repo und erstellen Sie Ihr eigenes Experimentskript ähnlich wie das Beispiel bei Experimenten/vgg_mcdropout_cifar10.py . Stellen Sie sicher, dass Sie die vier Hauptteile des Baal -Frameworks verwenden. Glückliche Laufexperimente
Um einen Beitrag zu leisten, siehe Beitrag.md.
"Es gibt Leidenschaft, doch Frieden; Gelassenheit, doch Emotion; Chaos, doch Ordnung."
Das Baal -Team testet und implementiert die neuesten Artikel zur Unsicherheitsschätzung und zum aktiven Lernen.
Aktuelle Betreuer:
Wenn Sie Baal in einem Ihrer Projekte verwenden, würden wir uns sehr schätzen, wenn Sie diese Bibliothek mit diesem Bibtex zitieren:
@misc{atighehchian2019baal,
title={Baal, a bayesian active learning library},
author={Atighehchian, Parmida and Branchaud-Charron, Frederic and Freyberg, Jan and Pardinas, Rafael and Schell, Lorne
and Pearse, George},
year={2022},
howpublished={url{https://github.com/baal-org/baal/}},
}
Um Informationen zur Lizenz dieser API zu erhalten, lesen Sie bitte die Lizenz