跳转到主要内容

基于模拟的推理。

项目描述

PyPI version Contributions welcome Tests codecov GitHub license DOI

sbi:基于模拟的推理

入门 | 文档

sbi是一个为基于模拟的推理而设计的Python包,旨在满足研究人员和实践者的需求。无论您需要精细控制还是易于使用的界面,sbi都能满足您的需求。

使用sbi,您可以使用贝叶斯推理进行参数推理:给定一个模拟现实世界过程的模拟器,SBI根据观察数据估计模拟器参数的完整后验分布。这个分布表示最可能的参数值,同时量化不确定性,并揭示参数之间的潜在相互作用。

sbi的关键特性

sbi结合了灵活性和易用性

  • 低级接口:对于需要最大程度控制推理过程的人来说,sbi提供低级接口,允许您微调工作流程的许多方面。
  • 高级接口:如果您更倾向于简单和高效,sbi还提供了高级接口,可快速轻松地实现复杂的推理任务。

此外,sbi支持一系列最先进推理算法(以下列出了实现的方法)

  • 摊销方法:这些方法可以在多个观察之间重用后验估计器,无需重新训练。
  • 顺序方法:这些方法专注于单个观察,优化所需的模拟次数。

除了推理之外,sbi还提供

  • 验证工具:内置方法来验证和验证推断后验的准确性。
  • 绘图和分析工具:全面的功能用于可视化和分析结果,帮助您轻松解释后验分布。

开始使用sbi非常简单,只需几行代码

from sbi.inference import NPE
# Given: parameters theta and corresponding simulations x
inference = NPE(prior=prior)
inference.append_simulations(theta, x).train()
posterior = inference.build_posterior()

安装

sbi需要Python 3.9或更高版本。虽然GPU不是必需的,但在某些情况下可以提高性能。我们建议使用带有conda的虚拟环境进行简单设置。

要安装sbi,请按照以下步骤操作

  1. 创建Conda环境(如果使用Conda)

    conda create -n sbi_env python=3.9 && conda activate sbi_env
    
  2. 安装sbi:无论您是否使用conda,都可以使用pip安装sbi

pip install sbi
  1. 测试安装:打开Python提示并运行
from sbi.examples.minimal import simple
posterior = simple()
print(posterior)

教程

如果您是sbi的新用户,我们建议从我们的入门教程开始。

您也可以直接在浏览器中访问和运行这些教程,方法是在Codespace中打开它们。为此,单击GitHub存储库上的绿色“代码”按钮,并选择“使用Codespaces打开”。这提供了一个完全功能的环境,您可以在其中通过Jupyter笔记本探索sbi

推理算法

以下推理算法目前可用。您可以在此处找到运行每种方法的方法说明。

神经后验估计:摊销(NPE)和顺序(SNPE)

  • (S)NPE_A(包括摊销单轮NPE),来自Papamakarios G和Murray I的论文《使用贝叶斯条件密度估计的快速ε-free推理模拟模型》(NeurIPS 2016)。

  • (S)NPE_CAPT,来自Greenberg D,Nonnenmacher M和Macke J的论文《无似然推理的自动后验变换》(ICML 2019)。

  • TSNPE,来自Deistler M,Goncalves P和Macke J的论文《可扩展和无忧的基于模拟推理的截断提案》(NeurIPS 2022)。

  • FMPE,来自Wildberger J,Dax M,Buchholz S,Green S,Macke J H和Schölkopf B的论文《可扩展基于模拟推理的流匹配》(NeurIPS 2023)。

  • NPSE,来自Geffner T,Papamakarios G和Mnih A的论文《基于模拟推理的组合得分建模》(ICML 2023)。

神经似然估计:摊销(NLE)和顺序(SNLE)

  • (S)NLE或仅SNL,来自Papamakarios G,Sterrat DC和Murray I的论文《顺序神经似然》(AISTATS 2019)。

神经比率估计:摊销(NRE)和顺序(SNRE)

  • (S)NRE_AAALR,来自Hermans J,Begy V和Louppe G的论文《具有摊销近似似然比的无似然推理》(ICML 2020)。

  • (S)NRE_BSRE,来自Durkan C,Murray I和Papamakarios G的论文《关于对比学习用于无似然推理》(ICML 2020)。

  • (S)NRE_CNRE-C,来自Miller BK,Weniger C和Forré P的论文《对比神经比率估计》(NeurIPS 2022)。

  • BNRE,来自Delaunoy A,Hermans J,Rozet F,Wehenkel A和Louppe G的论文《通过平衡神经比率估计实现可靠的基于模拟的推理》(NeurIPS 2022)。

神经变分推理,摊销(NVI)和顺序(SNVI)

  • SNVI,来自Glöckler M,Deistler M,Macke J的论文《基于模拟推理的变分方法》(ICLR 2022)。

混合神经似然估计(MNLE)

  • MNLE,来自Boelts J,Lueckmann JM,Gao R,Macke J的论文《用于决策模型的可扩展和高效的基于模拟推理》(eLife 2022)。

反馈和建议

我们欢迎您对如何使用sbi来解决您的推理问题提出任何反馈(见讨论),并愿意接收错误报告、pull请求和其他反馈(见贡献)。我们希望保持一个积极的社区;请阅读我们的行为准则

致谢

sbidelfi包的继任者(使用PyTorch)。它最初是Conor M. Durkan的lfi的分支。作为社区项目运行。请参阅致谢

支持

sbi 已由德国联邦教育与研究部(BMBF)通过 ADIMEM 项目(FKZ 01IS18052 A-D)、SiMaLeSAM 项目(FKZ 01IS21055A)和图宾根人工智能中心(FKZ 01IS18039A)支持。自2024年起,sbi 由 appliedAI 欧洲研究所支持。

许可

Apache License 版本 2.0(Apache-2.0)

引用

如果您使用 sbi,请考虑引用 sbi 软件论文,除了描述您所使用的特定 sbi-算法(s)的原研文章。

@article{tejero-cantero2020sbi,
  doi = {10.21105/joss.02505},
  url = {https://doi.org/10.21105/joss.02505},
  year = {2020},
  publisher = {The Open Journal},
  volume = {5},
  number = {52},
  pages = {2505},
  author = {Alvaro Tejero-Cantero and Jan Boelts and Michael Deistler and Jan-Matthis Lueckmann and Conor Durkan and Pedro J. Gonçalves and David S. Greenberg and Jakob H. Macke},
  title = {sbi: A toolkit for simulation-based inference},
  journal = {Journal of Open Source Software}
}

上述引用指的是 sbi 项目的原始版本,并具有持久 DOI。此外,sbi 的新版本可通过 Zenodo 引用,我们在每个版本中创建一个新的 DOI。

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

sbi-0.23.2.tar.gz (497.5 kB 查看哈希)

上传时间 源代码

构建分发

sbi-0.23.2-py3-none-any.whl (364.8 kB 查看哈希)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面