
Baal est une bibliothèque d'apprentissage active qui soutient à la fois les applications industrielles et les utilisations de recherche.
Lisez la documentation sur https://baal.readthedocs.io.
Notre article peut être lu sur Arxiv. Il comprend des conseils et des astuces pour rendre l'apprentissage actif utilisable en production.
Pour une introduction rapide à l'apprentissage actif de Baal et bayésien, veuillez consulter ces liens:
Baal a été initialement développé à Elementai (acquis par ServiceNow en 2021), mais est désormais indépendant.
Baal nécessite Python>=3.8 .
Pour installer Baal à l'aide de PIP: pip install baal
Nous utilisons la poésie comme gestionnaire de packages. Pour installer Baal à partir de Source: poetry install
L'apprentissage actif est un cas particulier d'apprentissage automatique dans lequel un algorithme d'apprentissage est en mesure d'interroger de manière interactive l'utilisateur (ou une autre source d'information) pour obtenir les sorties souhaitées aux nouveaux points de données (pour comprendre le concept plus en profondeur, reportez-vous à notre tutoriel ).
À l'heure actuelle, Baal prend en charge les méthodes suivantes pour effectuer un apprentissage actif.
Si vous souhaitez proposer de nouvelles méthodes, veuillez soumettre un problème.
La méthode d'abandon de Monte-Carlo est une approximation connue pour les réseaux de neurones bayésiens. Dans cette méthode, la couche d'abandon est utilisée à la fois en formation et en temps de test. En exécutant le modèle plusieurs fois tout en supprimant au hasard des poids, nous calculons l'incertitude de la prédiction en utilisant l'une des mesures d'incertitude dans heuristics.py.
Le cadre se compose de quatre pièces principales, comme le montre l'organigramme ci-dessous:
Pour commencer, enveloppez votre ensemble de données dans notre classe ActiveLearningDataset . Cela garantira que l'ensemble de données est divisé en training et des ensembles pool . L'ensemble pool représente la partie de l'ensemble de formation qui n'a pas encore été étiqueté.
Nous fournissons un modèle de modèle d'objet léger similaire à keras.Model pour faciliter la formation et le test du modèle. Si votre modèle n'est pas prêt pour l'apprentissage actif, nous fournissons des modules pour les préparer.
Par exemple, l'emballage McDropoutModule modifie la couche d'abandon existante à utiliser à la fois dans la formation et le temps d'inférence et le ModelWrapper fait que le nombre d'itérations à fonctionner à la formation et à l'inférence.
Enfin, ActiveLearningLoop calcule automatiquement l'incertitude et étiquetez les éléments les plus incertains de la piscine.
En conclusion, votre script devrait être similaire à ceci:
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 ()Pour une expérience complète, voir Experiments / VGG_MCDROPOUT_CIFAR10.py .
docker build [--target base_baal] -t baal .
docker run --rm baal --gpus all python3 experiments/vgg_mcdropout_cifar10.pyClonez simplement le repo et créez votre propre script d'expérience similaire à l'exemple dans Experiments / VGG_MCDROPOUT_CIFAR10.py . Assurez-vous d'utiliser les quatre parties principales de Baal Framework. Expériences de course heureuses
Pour contribuer, voir contribution.md.
"Il y a de la passion, mais de la paix; sérénité, mais émotion; chaos, mais l'ordre."
L'équipe Baal teste et met en œuvre les articles les plus récents sur l'estimation de l'incertitude et l'apprentissage actif.
RETENUSEURS COURANTS:
Si vous avez utilisé Baal dans l'un de vos projets, nous apprécierions grandement si vous citez cette bibliothèque en utilisant ce bibtex:
@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/}},
}
Pour obtenir des informations sur la licence de cette API, veuillez lire la licence