TensorFlow Probability 是一个用于 TensorFlow 中概率推理和统计分析的库。作为 TensorFlow 生态系统的一部分,TensorFlow Probability 提供了概率方法与深度网络的集成、使用自动微分的基于梯度的推理,以及通过硬件加速(GPU)和分布式计算实现的大规模数据集和模型扩展能力。
要开始使用 TensorFlow Probability,请查看安装指南并浏览 Python 笔记本教程。
组件
我们的概率机器学习工具结构如下
第 0 层:TensorFlow
数值运算——特别是 LinearOperator 类——支持矩阵无关的实现,可以利用特定结构(对角矩阵、低秩矩阵等)进行高效计算。它由 TensorFlow Probability 团队构建和维护,是核心 TensorFlow 中 tf.linalg 的一部分。
第 1 层:统计构建模块
- 分布 (
tfp.distributions):包含大量概率分布及相关统计信息的集合,支持批处理和广播语义。 - 双射器 (Bijectors) (
tfp.bijectors):随机变量的可逆且可组合的变换。双射器提供了丰富的变换分布类,从经典的对数正态分布到复杂的深度学习模型(如掩码自回归流)均可实现。
第 2 层:模型构建
- 联合分布(例如
tfp.distributions.JointDistributionSequential):针对一个或多个可能相互依赖的分布的联合分布。有关使用 TFP 的JointDistribution进行建模的介绍,请查看此 Colab 文档。 - 概率层 (
tfp.layers):对所代表的函数具有不确定性的神经网络层,是对 TensorFlow 层的扩展。
第 3 层:概率推理
- 马尔可夫链蒙特卡洛 (MCMC) (
tfp.mcmc):通过采样近似积分的算法。包括哈密顿蒙特卡洛 (HMC)、随机游走 Metropolis-Hastings,以及构建自定义转移核的能力。 - 变分推理 (
tfp.vi):通过优化方法近似积分的算法。 - 优化器 (
tfp.optimizer):随机优化方法,是对 TensorFlow 优化器的扩展。包括随机梯度朗之万动力学 (SGLD)。 - 蒙特卡洛 (
tfp.monte_carlo):用于计算蒙特卡洛期望的工具。
TensorFlow Probability 处于活跃开发阶段,接口可能会有所变动。
示例
除了导航栏中列出的 Python 笔记本教程外,还有一些示例脚本可供参考:
- 变分自编码器 (VAE) — 带有潜码和变分推理的表征学习。
- 向量量化自编码器 (VQ-VAE) — 带有向量量化的离散表征学习。
- 贝叶斯神经网络 — 权重具有不确定性的神经网络。
- 贝叶斯逻辑回归 — 用于二元分类的贝叶斯推理。
报告问题
请使用 TensorFlow Probability 问题跟踪器来报告 Bug 或提出功能需求。