BayesFlow: AMORTIZED BAYESIAN WORKFLOWS WITH NEURAL NETWORKS

BayesFlow:使用神经网络的摊销贝叶斯工作流程

https://arxiv.org/pdf/2306.16015

打开网易新闻 查看精彩图片

现代贝叶斯推断涉及一系列计算技术,用于估计、验证和从概率模型中得出结论,作为数据分析原则性工作流程的一部分(Bürkner 等人,2022;Gelman 等人,2020;Schad 等人,2021)。贝叶斯工作流程中的典型问题包括对各种模型类型的难以处理的后验分布进行近似,以及根据模型的复杂性和预测性能对同一过程的竞争模型进行比较。然而,尽管贝叶斯方法在理论上具有吸引力和实用性,但实际执行贝叶斯工作流程常常受到计算瓶颈的限制:获取单个后验分布可能已经需要很长时间,以至于为了模型验证或校准而进行的重复估计变得完全不可行。

1摘要

BayesFlow 提供了一个框架,用于基于模拟训练成熟的神经网络架构,如变压器(Vaswani 等人,2017)和归一化流(Papamakarios 等人,2021),用于摊销数据压缩和推断。在 BayesFlow 中实现的摊销贝叶斯推断(ABI)使用户能够训练自定义神经网络以模拟模型,并重新使用这些网络进行任何后续的模型应用。由于训练好的网络几乎可以立即执行推断(通常远低于一秒),因此神经网络的预先训练很快就被摊销了。例如,摊销推断使我们能够在几秒钟内测试模型恢复其参数的能力(Schad 等人,2021),或评估其基于模拟的校准(Säilänöja 等人,2022;Talts 等人,2018),即使这可能需要估计数千个后验分布。BayesFlow 提供了一个用户友好的 API,它封装了神经网络架构和训练过程的细节,这些对于从业者来说不太相关,并提供了跨多个应用领域表现良好的稳健默认实现。同时,BayesFlow 实现了模块化的软件架构,允许机器学习科学家修改管道中的每个组件,以适应自定义应用以及贝叶斯推断前沿的研究。

2 需求陈述

BayesFlow 体现了专为构建和验证基于神经网络的摊销贝叶斯工作流程而设计的功能。图 1 概述了在摊销后验和似然估计背景下典型的摊销工作流程。一个与先验耦合的模拟器定义了一个生成式贝叶斯模型。生成模型可能依赖于各种(可选的)上下文变量,如变化的观测数量、设计矩阵或位置编码。模型的生成范围和上下文变量的范围决定了摊销的范围,即神经近似器可以在不重新训练的情况下应用于哪种类型的数据。神经近似器通过一个配置器与模型输出(参数、数据)和上下文变量交互。配置器负责执行不属于模型但可能有助于神经网络训练和收敛的转换(例如,输入归一化、双精度到浮点转换等)。

打开网易新闻 查看精彩图片

目前,该软件具有四个关键功能,用于增强贝叶斯工作流程,这些功能已在参考文献中描述:

1. 摊销后验估计:训练一个生成网络,以高效地推断所有现有和未来与模拟模型兼容的数据的完整后验(即解决逆问题)(Radev, Mertens, et al., 2020)。

2. 摊销似然估计:训练一个生成网络,以高效地模拟一个模拟模型(即解决正向问题),适用于所有可能的参数配置或与外部概率程序交互(Boelts et al., 2022; Radev et al., 2023)。

3. 摊销模型比较:训练一个神经分类器,以识别一组竞争候选模型中的“最佳”模型(Elsemüller et al., 2023; Radev, D’Alessandro, et al., 2020; Schmitt et al., 2022),或结合摊销后验和似然估计来计算贝叶斯证据和样本外预测性能(Radev et al., 2023)。

4. 模型错误指定检测:确保所得到的后验是对不可处理的目标后验的忠实近似,即使在模拟不完全代表现实的情况下也是如此(Radev et al., 2023; Schmitt et al., 2021)。

BayesFlow 已被用于各种应用研究领域的摊销贝叶斯推断,如流行病学(Radev et al., 2021)、认知建模(Sokratous et al., 2023; von Krause et al., 2022; Wieschen et al., 2020)、计算精神病学(D’Alessandro et al., 2020)、神经科学(Ghaderi-Kangavari et al., 2022)、粒子物理学(Bieringer et al., 2021)、基于代理的经济计量模型(Shiono, 2021)、地震成像(Siahkoohi et al., 2023)、用户行为(Moon et al., 2023)、结构健康监测(Zeng et al., 2023)、航空航天(Tsilifis et al., 2022)和风力涡轮机设计(Noever-Castelos et al., 2022)、微机电系统测试(Heringhaus et al., 2022)以及分数布朗运动(Verdier et al., 2022)。

该软件建立在 TensorFlow(Abadi et al., 2016)之上,从而实现了对 GPU 和 TPU 加速的现成支持。此外,它可以无缝地与 TensorFlow Probability(Dillon et al., 2017)交互,以实现灵活的潜在分布和各种联合先验。

3 相关软件

当非摊销推断过程不会造成计算瓶颈时,近似贝叶斯计算(ABC)可能是一个合适的工具。如果需要分析单个数据集,如果已经准备好并行计算的基础设施,或者如果不需要重复重新拟合模型(例如,交叉验证),则可能适用这种情况。存在多种成熟的 Python ABC 包,如 PyMC(Salvatier et al., 2016)、pyABC(Schälte et al., 2022)或 ELFI(Lintusaari et al., 2018)。与这些包不同,BayesFlow 专注于摊销推断,但也可以与 ABC 采样器交互(例如,使用 BayesFlow 学习 ABC 分析的有信息摘要统计量)。

在基于模拟的推断中使用神经网络时,sbi 工具包使用不同的推断算法(如神经后验估计(Papamakarios et al., 2021)、顺序神经后验估计(Greenberg et al., 2019)和顺序神经似然估计(Papamakarios et al., 2019))实现似然和后验估计。BayesFlow 和 sbi 可以被视为互补的工具包,其中 sbi 为标准建模场景实现各种不同的近似器,而 BayesFlow 专注于具有用户友好默认设置和可选定制的摊销工作流程。Swyft 库专注于物理学和天文学中的贝叶斯参数推断。Swyft 使用了一种特定的基于模拟的神经推断技术,即截断边际神经比率估计(Miller et al., 2021)。该方法通过使用神经密度估计器学习似然到证据的比率,改进了标准 ABC 的马尔可夫链蒙特卡罗(MCMC)方法。最后,Lampe 库为 sbi 库中的后验估计方法提供了一部分实现,旨在公开所有组件(例如,网络架构、优化器),以提供一个可定制的接口来创建神经近似器。所有这些库都是建立在 PyTorch 之上的。

4 可用性、开发和文档

BayesFlow 可通过 PyPI 通过 pip install bayesflow 安装,开发版本可通过 GitHub 获取。GitHub Actions 通过自动代码测试和文档管理持续集成。文档托管在 www.bayesflow.org。目前,BayesFlow 提供了七个教程笔记本。这些笔记本展示了软件的不同方面,从玩具示例到应用建模场景,并说明了后验估计和模型比较工作流程。