Lighning-UQ-Box:深度学习中不确定性量化的工具箱
项目描述
lightning-uq-box
lightning-uq-box 是一个 PyTorch 库,提供了一系列用于现代神经网络架构的不确定性量化(UQ)技术。
我们希望为协作开源努力提供一个起点,使从业者更容易将UQ纳入他们的工作流程,并消除可能的学习障碍。此外,我们希望这可以成为比较UQ框架中方法的途径,并可能促进神经网络新UQ方法的开发。
该项目目前正在积极开发中,但我们仍然希望尽早得到反馈、功能请求或贡献。请查看贡献指南获取更多信息。
此库的目标有三点
- 提供适用于现代深度神经网络的多种不确定性量化方法的实现,这些方法与各种神经网络架构兼容,并有不同的理论基础
- 简化在给定数据集上比较UQ方法的过程
- 关注实验的可重复性,使用最少模板代码和标准评估协议
为此,每种UQ方法本质上都是一个Lightning模块,它可以与Lightning数据模块和训练器一起使用,以执行您所需任务的训练、评估和推理。该库还利用Lightning命令行界面(CLI)来提高实验的可重复性和大规模实验的设置。
安装
$ pip install lightning-uq-box
UQ方法
在下表中,您可以查看Lightning-UQ-Box通过以下指标支持哪些UQ方法/任务组合
- ✅ 支持的
- ❌ 不适合此任务
- ⏳ 进行中
当然,实现的方法并不是详尽的,因为新方法的数量持续增加。有关我们正在跟踪或计划支持的方法概述,请参阅此问题。
UQ方法的分类
以下章节旨在通过某些共同点对不同的UQ方法进行概述。我们同意可能还有其他分组,并欢迎建议以改进此概述。我们还在API文档中遵循此分组,以便更容易导航。
单前向传递方法
不确定性量化方法(UQ方法) | 回归 | 分类 | 分割 | 像素级回归 |
---|---|---|---|---|
分位数回归(QR) | ✅ | ❌ | ❌ | ⏳ |
深度证据(DE) | ✅ | ⏳ | ⏳ | ⏳ |
均值方差估计(MVE) | ✅ | ❌ | ❌ | ⏳ |
近似贝叶斯方法
不确定性量化方法(UQ方法) | 回归 | 分类 | 分割 | 像素级回归 |
---|---|---|---|---|
贝叶斯神经网络VI ELBO(BNN_VI_ELBO) | ✅ | ✅ | ✅ | ⏳ |
贝叶斯神经网络VI(BNN_VI) | ✅ | ⏳ | ⏳ | ⏳ |
深度核学习(DKL) | ✅ | ✅ | ❌ | ❌ |
确定性不确定性估计(DUE) | ✅ | ✅ | ❌ | ❌ |
拉普拉斯近似(Laplace) | ✅ | ✅ | ❌ | ❌ |
蒙特卡洛Dropout(MC-Dropout) | ✅ | ✅ | ✅ | ⏳ |
随机梯度Langevin动力学(SGLD) | ✅ | ✅ | ⏳ | ⏳ |
谱归一化高斯过程(SNGP) | ✅ | ✅ | ❌ | ❌ |
随机权重平均高斯(SWAG) | ✅ | ✅ | ✅ | ⏳ |
深度集成 | ✅ | ✅ | ✅ | ⏳ |
生成模型
不确定性量化方法(UQ方法) | 回归 | 分类 | 分割 | 像素级回归 |
---|---|---|---|---|
分类与回归扩散(CARD) | ✅ | ✅ | ❌ | ❌ |
概率UNet | ❌ | ❌ | ✅ | ❌ |
分层概率UNet | ❌ | ❌ | ✅ | ❌ |
事后方法
不确定性量化方法(UQ方法) | 回归 | 分类 | 分割 | 像素级回归 |
---|---|---|---|---|
测试时间增强(TTA) | ✅ | ✅ | ⏳ | ⏳ |
温度缩放 | ❌ | ✅ | ⏳ | ❌ |
符合性分位数回归(Conformal QR) | ✅ | ❌ | ❌ | ⏳ |
正则化自适应预测集(RAPS) | ❌ | ✅ | ❌ | ❌ |
教程
我们尝试提供许多不同的教程,以便用户可以更好地理解实现的方法,并了解它们如何应用于不同的问题。前往教程页面开始。如果您在教程页面顶部导航到火箭图标,也可以在Google Colab上启动这些教程。
文档
我们旨在提供所有包含UQ方法的详尽文档,包括一些理论背景,以及说明这些方法在玩具数据集上应用的教程。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
lightning-uq-box-0.1.0.tar.gz (117.7 kB 查看哈希)
构建分布
lightning_uq_box-0.1.0-py3-none-any.whl (162.2 kB 查看哈希)