开始使用 Pyro

【摘要】Pyro 是 Uber 公司开源的一种概率建模语言,由剑桥大学 zoubin 教授作为首席科学家主持开发,可以使用 Pytorch 深度学习框架、贝叶斯概率统计等技术来估计类型广泛的概率模型。
【原文】https://nbviewer.org/github/QuantEcon/QuantEcon.notebooks/blob/master/IntroToStan_basics_workflow.ipynb
【时间】 2016
【作者】Jim Savage, Lendable Inc.

1 开始使用 Pyro

1.1 零基础的用户

如果您不熟悉概率编程或变分推断,可以从阅读 系列介绍性教程 开始。如果您是 PyTorch 的新手,还可以从阅读 使用 PyTorch 进行深度学习 中受益。

之后,您就可以开始使用 Pyro 了!

按照首页的说明安装 Pyro 并仔细阅读 Practical Pyro 和 PyTorch 系列 教程,尤其是第一个贝叶斯回归教程 。该教程通过使用 Pyro 一步步解决一个简单的贝叶斯机器学习问题,在可运行的代码中组织和展示了 系列介绍性教程 中的主要概念。另外,对使用 C++ 训练模型提供预测感兴趣的行业用户还应该阅读 PyroModule 教程

大多数达到这一步的用户还会在 张量形状指南 中获得一些必要知识。 Pyro 广泛使用了 数组广播(Array Broadcasting) 机制来并行化模型和推断算法。最初你可能难以理解这种行为,但使用一段时间后,你会体验到这是一种流畅而且避免形状错误的好方法。

1.2 核心能力 — 深度学习、离散隐变量和自定义变分推断

熟悉了本介绍性材料后,您就可以直接深入利用 Pyro 的两个最大优势了:一是与深度学习的集成;二是对离散隐变量的自动推断

前者在 深度生成模型系列 中有大量案例描述。所有案例都是对变分自编码器( VAE )基本思想的说明和应用, 变分自编码器将在 本系列第一个教程 中详细介绍。

Pyro 的离散隐变量模型(如隐马尔可夫模型)能力在 离散隐变量系列 中有总结。在您自己的工作中使用它时,需要仔细阅读我们的概述和编程指南

Pyro 的另一个特点是可编程性,这也是 自定义推断系列教程 的主题。 使用大型模型但其中只有一部分需要特别指定的用户可能对 本系列的第一个教程 中介绍的 pyro.contrib.easyguide 感兴趣。同时,对开发变分推断算法感兴趣的机器学习研究人员可能希望仔细阅读 实现自定义变分目标的指南 ,以及一个实现 Boosting BBVI 的完整配套示例。

特别热情的用户和潜在的贡献者,尤其是那些有兴趣为 Pyro 核心组件做出贡献的人,甚至可能对 Pyro 本身的工作原理感兴趣,在 了解 Pyro 的内部结构系列 中有部分描述。 mini-pyro 示例仅用几百行代码就包含了 Pyro 语言的一个小版本的完整且包含大量注释的实现,可以作为更易于理解的介绍。

1.3 面向特定问题的建模工具包

Pyro 是一款 “自带电池” 的成熟开源软件。除了用于建模和推断的核心机制外,它还包括一个面向专业领域或特定问题的大型建模工具包。

Pyro 的一个优势领域是通过 pyro.contrib.forecasting 工具包 进行时间序列建模。这是一个能够将多元时间序列的多尺度分层、完全贝叶斯等模型扩展到数千或数百万个序列和数据点的库。关于此部分的详解,见 时间序列应用教程

Pyro 的另一个优势领域是通过 pyro.contrib.gp 工具包高斯过程的概率机器学习。该工具包用于实现与 Pyro 推断引擎兼容的各种精确或近似高斯过程模型。关于此部分的详情,见 高斯过程应用系列 。 Pyro 还与 GPyTorch 完全兼容,GPyTorch 是用于可扩展高斯过程的一个专用库,详情见 Pyro 示例系列

2 教程列表

2.1 介绍性教程

2.2 Pyro 和 PyTorch实践

2.3 深度生成模型

2.4 离散隐变量

2.5 自定义推断算法

2.6 应用: 时间序列建模

2.7 应用: 高斯过程建模

2.8 应用:流行病学

2.9 应用:生物学序列

2.10 应用:实验设计

2.11 应用:目标跟踪

2.12 其他推断算法

3 开发者文档