
Baal是一个活跃的学习库,支持工业应用和研究用途。
在https://baal.readthedocs.io上阅读文档。
我们的论文可以在Arxiv上阅读。它包括提示和技巧,使积极学习在生产中可用。
有关巴尔和贝叶斯活跃学习的快速介绍,请参阅以下链接:
Baal最初是在ElementAi开发的(2021年被ServiceNow收购),但现在是独立的。
Baal需要Python>=3.8 。
使用PIP安装Baal: pip install baal
我们将诗歌作为我们的包装经理。从来源安装巴尔: poetry install
主动学习是机器学习的一种特殊情况,其中学习算法能够交互性地查询用户(或其他信息源)以在新数据点获得所需的输出(以更深入地了解该概念,请参阅我们的教程)。
目前,BAAL支持以下可以执行主动学习的方法。
如果您想提出新方法,请提交问题。
蒙特卡洛辍学方法是贝叶斯神经网络的已知近似值。在此方法中,辍学层用于训练和测试时间。通过多次运行模型,而随机降低权重,我们使用启示术中的不确定性测量之一来计算预测的不确定性。
该框架由四个主要部分组成,如以下流程图所示:
要开始,请将数据集包含在我们的ActiveLearningDataSet类中。这将确保数据集分为training和pool组。 pool组表示尚未标记的训练集的一部分。
我们提供了类似于keras.Model的轻巧对象模型引用器,以使训练和测试模型变得更加容易。如果您的模型还没有准备好积极学习,我们提供了准备它们的模块。
例如, McDropoutModule包装器更改了在训练和推理时间中使用的现有辍学层,并且ModelWrapper使指定在训练和推理中运行的迭代次数。
最后, ActiveLearningloop自动计算不确定性并标记池中最不确定的项目。
总之,您的脚本应该与此相似:
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 ()有关完整的实验,请参见实验/vgg_mcdropout_cifar10.py 。
docker build [--target base_baal] -t baal .
docker run --rm baal --gpus all python3 experiments/vgg_mcdropout_cifar10.py只需克隆回购,创建自己的实验脚本,类似于实验/vgg_mcdropout_cifar10.py的示例。确保使用BAAL框架的四个主要部分。快乐的跑步实验
要贡献,请参见贡献。
“有激情,却和平;宁静,却情绪化;混乱,秩序。”
巴尔团队测试并实施了有关不确定性估计和积极学习的最新论文。
当前的维护者:
如果您在一个项目之一中使用了Baal,那么如果您使用此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/}},
}
要获取有关此API许可的信息,请阅读许可证