【002】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 开发者文档