贝叶斯主动学习库。
baal的Python项目详细描述
贝叶斯主动学习
在
BaaL是一个在 ElementAI。此存储库包含技术 以及可重用的组件,使所有人都可以进行主动学习。在
阅读https://baal.readthedocs.io上的文档。在
我们的论文可以在arXiv上阅读。它包括使主动学习在生产中可用的技巧和技巧。在
您也可以阅读我们的blog post。在
安装及要求
BaaL需要Python>=3.6
。在
要使用pip安装baal:pip install baal
要从源安装baal:pip install -e .
有关要求,请参见:requirements.txt。在
什么是主动学习?在
主动学习是机器学习的一个特例 算法能够交互式地查询用户(或其他一些信息) 在新的数据点获得所需的输出 (要更深入地理解这个概念,请参阅我们的tutorial)。在
BaaL框架
目前,BaaL支持以下方法来执行主动学习。在
- 蒙特卡洛辍学(Gal等人,2015年)
- MCDropConnect(Mobiny等人,2019年)
请参阅我们的路线图below。
montecarlo Dropout方法是贝叶斯神经网络的一种已知近似方法 网络。该方法在训练和测试中都使用了脱落层 时间。通过多次运行模型,同时随机降低权重,我们使用heuristics.py中的一个不确定度测量来计算预测的不确定性。在
框架由四个主要部分组成,如以下流程图所示:
- 动态学习数据集
- 启发式
- 模型包装器
- 主动学习回路
在
首先,将数据集包装到我们的ActiveLearningDataset类中。这将确保将数据集拆分为
training
和pool
集。pool
集表示训练集的一部分
被贴上标签。在
我们提供了一个类似于keras.Model
的轻量级对象ModelWrapper,以便于模型的训练和测试。如果您的模型没有准备好进行主动学习,我们提供模块来准备它们。在
例如,MCDropoutModule包装器更改了现有的dropout层
用于训练和推理时间,ModelWrapper
使
指定在训练和推理时运行的迭代次数。在
总之,您的脚本应该类似于:
dataset=ActiveLearningDataset(your_dataset)dataset.label_randomly(INITIAL_POOL)# label some datamodel=MCDropoutModule(your_model)model=ModelWrapper(model,your_criterion)active_loop=ActiveLearningLoop(dataset,get_probabilities=model.predict_on_dataset,heuristic=heuristics.BALD(shuffle_prop=0.1),ndata_to_label=NDATA_TO_LABEL)foral_stepinrange(N_ALSTEP):model.train_on_dataset(dataset,optimizer,BATCH_SIZE,use_cuda=use_cuda)ifnotactive_loop.step():# We're done!break
对于一个完整的实验,我们提供experiments/来理解如何 写一个积极的训练过程。通常,我们使用ActiveLearningLoop 提供于src/baal/active/active_loop.py。 此类提供了获取未标记池的预测的功能 在每(几个)个历元之后,对下一组要标记的数据项进行排序 基于池的计算不确定度。在
路线图(根据社区的不同而有所变化)
- [x] 使用MCDropout首次发布FOSS(Gal等人,2015年)
- [x] MCDropConnect(Mobiny等人,2019年)
- []贝叶斯层(Shridhar等人,2019年)
- []无监督方法
- []NNGP(Panov等人,2019年)
- []SWAG(Zellers等人,2018年)
重新运行我们的实验
^{pr2}$使用BaaL进行实验
只需克隆repo,并创建类似于 示例位于experiments/vgg_experiment.py。确保使用四个主要部件 巴力框架。快乐跑步实验
Dev安装
只需构建Dockerfile,如下所示:
git clone git@github.com:ElementAI/baal.git nvidia-docker build [--target base_baal] -t baal-dev .
现在你已经具备了开始为巴力贡献力量的所有要求。耶!
贡献!
要投稿,请参阅CONTRIBUTING.md。在
我们是谁!
“还有激情然而,平静,平静;平静。”
在ElementAI,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},
year={2019},
howpublished={\url{https://github.com/ElementAI/baal/}},
}
许可证
要获取有关此API许可证的信息,请阅读LICENCE
- 项目
标签: