Pyro 入门:教程、操作指南和示例

欢迎!本页收集了 Pyro 社区编写的教程。如果您在此处遇到任何查找或理解困难,请随时在我们的论坛上提问!

新用户:从零到一

如果您是概率编程或变分推断的新手,建议您从 入门教程 系列开始阅读,尤其是 Pyro 简介。如果您不熟悉 PyTorch,也可以阅读官方介绍 “使用 PyTorch 进行深度学习。”

之后,您就可以开始使用 Pyro 了!(没错,真的!)请按照首页上的说明安装 Pyro,并仔细查阅 实用的 Pyro 和 PyTorch 系列,特别是第一个贝叶斯回归教程。本教程逐步讲解如何使用 Pyro 解决一个简单的贝叶斯机器学习问题,将入门教程中的概念落实到可运行的代码中。有兴趣与现有 PyTorch 训练和推理基础设施集成的用户,还应阅读PyroModule 教程并查看SVI 与 PyTorch 集成SVI 与 Lightning 集成示例。

大多数达到此阶段的用户也会发现我们的Pyro 中张量形状指南是必不可少的阅读材料。Pyro 大量利用 PyTorch 和其他数组库内置的“数组广播”行为来并行化模型和推断算法。虽然最初可能难以理解这种行为,但应用其中的直觉和经验法则将大大有助于使您的体验更顺畅,并避免令人讨厌的形状错误。

核心功能:深度学习、离散变量和自定义推断

熟悉这些入门材料后,您就可以立即深入探索 Pyro 的两大优势:与深度学习的集成以及离散潜变量的自动化精确推断。前者在 深度生成模型 系列中通过大量示例进行描述。所有示例都是对变分自编码器基本思想的详细阐述,该思想在该系列的第一个教程中有详细介绍。

Pyro 在隐马尔可夫模型等离散潜变量模型方面的能力在 离散潜变量 系列中进行了概述。在您自己的工作中利用这一点需要仔细阅读该系列开篇的我们的概述和编程指南

Pyro 的另一个特点是其可编程性,这是 自定义推断 系列教程的主题。处理只需要特别关注模型一部分的大型模型用户可能对 pyro.contrib.easyguide 感兴趣,该模块在该系列的第一个教程中介绍。同时,对开发变分推断算法感兴趣的机器学习研究人员可以仔细阅读实现自定义变分目标的指南,以及一个配套示例,该示例详细介绍了如何实现“Boosting BBVI”

特别热心的用户和潜在贡献者,尤其是那些有兴趣为 Pyro 核心组件做贡献的用户,甚至可能对 Pyro 本身如何在底层工作感兴趣,这在 理解 Pyro 的内部机制 系列中有所描述。该系列的mini-pyro 示例包含一个完整的、注释详尽的小型 Pyro 语言实现,只需几百行代码,可以作为对真实系统的更易于理解的介绍。

特定问题工具

Pyro 是一个成熟的开源软件,提供了“开箱即用”的功能。除了核心建模和推断机制外,它还包括一个大型工具包,提供专用的领域或问题特定的建模功能。

一个特别突出的领域是通过 pyro.contrib.forecasting 进行时间序列建模,这是一个用于将多元时间序列的层级全贝叶斯模型扩展到数千或数百万个时间序列和数据点的库。这在 应用:时间序列 系列中有所描述。

另一个优势领域是使用高斯过程进行概率机器学习。pyro.contrib.gp,在 应用:高斯过程 系列中有所描述,是 Pyro 内的一个库,实现了多种与 Pyro 推断引擎兼容的精确或近似高斯过程模型。Pyro 也完全兼容 GPyTorch,这是一个用于可扩展高斯过程的专用库,如他们的 Pyro 示例系列中所述。

教程列表

索引和表格