TensorFlow Probability 是 TensorFlow 中用于概率推理和统计分析的库。TensorFlow Probability 是 TensorFlow 生态系统的一部分,提供了概率方法与深度网络的集成、使用自动微分的基于梯度的推理,并能扩展到包含硬件加速 (GPU) 和分布式计算的大型数据集和大型模型。
要开始使用 TensorFlow Probability,请参阅安装指南并查看 Python 笔记本教程。
组件
我们的概率机器学习工具采用如下结构:
第 0 层:TensorFlow
数值运算(尤其是 LinearOperator
类)使无矩阵实现成为可能,这类实现可以利用特定结构(对角、低秩等)实现高效的计算。它由 TensorFlow Probability 团队构建和维护,已成为核心 TensorFlow 中 tf.linalg
的一部分。
第 1 层:统计构建块
- 分布 (
tfp.distributions
):一个包含批次和广播语义的概率分布和相关统计数据的大型集合。 - Bijector (
tfp.bijectors
):随机变量的可逆和可组合转换。Bijector 提供了类别丰富的变换分布,包括对数正态分布等经典示例以及掩码自回归流等复杂的深度学习模型。
第 2 层:模型构建
- 联合分布(例如
tfp.distributions.JointDistributionSequential
):一个或多个可能相互依赖的分布上的联合分布。有关使用 TFP 的JointDistribution
进行建模的介绍,请查看此 colab - 概率层 (
tfp.layers
):对其表示的函数具有不确定性的神经网络层,扩展了 TensorFlow 层。
第 3 层:概率推理
- 马尔可夫链蒙特卡洛方法 (
tfp.mcmc
):通过采样来近似积分的算法。包括汉密尔顿蒙特卡洛算法、随机游走梅特罗波利斯-黑斯廷斯算法以及构建自定义过渡内核的能力。 - 变分推理 (
tfp.vi
):通过优化来近似积分的算法。 - 优化器 (
tfp.optimizer
):随机优化方法,扩展了 TensorFlow 优化器。包括 随机梯度朗之万动力学。 - 蒙特卡洛 (
tfp.monte_carlo
):用于计算蒙特卡洛期望的工具。
TensorFlow Probability 正在积极开发,接口可能变化。
示例
除了导航中列出的 Python 笔记本教程外,还提供了一些示例脚本:
- 变分自编码器 - 使用隐代码和变分推理的表示学习。
- 向量量化自编码器 - 使用向量量化的离散表示学习。
- 贝叶斯神经网络 - 对其权重具有不确定性的神经网络。
- 贝叶斯逻辑回归 - 二元分类的贝叶斯推断。
报告问题
使用 TensorFlow Probability 问题跟踪器报告错误或提交功能请求。