2018/4/16 12:08:01当前位置推荐好文社会热点浏览文章

在2018年TensorFlow开发者峰会上,我们宣布了TensorFlow Probability:一种概率编程工具箱,消耗于机器学习研究人员和其余从业人员快速可靠地利消耗最先进硬件构建复杂模型。假如出现以下情况,我们推荐你使消耗TensorFlow Probability:

·你想建立一个生成数据的模型,并推理其隐藏的过程。

·你需要量化预测中的不确定性,而不是预测单个值。

·你的训练集具备大量相对于数据点数量的特征。

·你的数据是结构化的,例如,使消耗组、空间、图表或者语言语义 - 并且你希望使消耗先前的信息来捕获此结构。

·你有一个相反的问题:见TFDS18谈话:重建测量融合等离子体。

TensorFlow Probability为你提供处理上述这些问题的工具,此外,它还继承了TensorFlow的优势,如自动差异化,以及跨多种平台(CPU,GPU和TPU)扩展性可以的可以力。

什么是TensorFlow Probability?

我们这次发布的机器学习工具为TensorFlow生态系统中的概率推理和统计分析提供了板块化笼统。

TensorFlow概率的概述。概率编程工具箱为从数据科学家和统计人员到所有TensorFlow消耗户的消耗户提供了好处。

第0层:TensorFlow的数值运算。特别是,LinearOperator类实现了无矩阵计算,能利消耗特殊结构(对角线,低秩矩阵等)进行高效计算。它由TensorFlow Probability团队构建和维护,现在是TF中tf.linalg核心的一部分。

第1层:统计构建板块

· 分布(tf.contrib.distributions,tf.distributions):一个包含了批量和广播语义的概率分布和相关统计的大量集合。

· Bijectors(tf.contrib.distributions.bijectors):支持随机变量的可逆和可组合变换。Bijectors提供了丰富的变换分布类别,从经典的例子(如对数正态分布)到复杂的深度学习模型(如masked自回归流)。

(有关更多信息,请参阅TensorFlow Distributions白皮书。)

第2层:模型构建

·      Edward2(tfp.edward2):一种消耗于将灵活的概率模型指定为程序的概率编程语言。

·      概率图层(tfp.layers):对其所代表的功可以具备不确定性的神经网络图层,扩展了TensorFlow图层。

·      可训练分布(tfp.trainable_distributions):由单个张量参数化的概率分布,使建立输出概率分布的神经网络变得容易。

第3层:概率推理

·      马尔可夫链Monte Carlo(tfp.mcmc):通过采样来近似积分的算法。包括Hamiltonian Monte Carlo,随机游走Metropolis-Hastings,以及构建自己设置过渡内核的可以力。

·      变分推理(tfp.vi):通过优化来近似积分的算法。

·      优化器(tfp.optimizer):随机优化方法,扩展TensorFlow优化器,包括随机梯度Langevin动力学。

·      蒙特卡洛(tfp.monte_carlo):消耗于计算蒙特卡罗期望的工具。

第4层:预制模型和推理(相似于TensorFlow的预制估算器)

·      贝叶斯结构时间序列:消耗于拟合时间序列模型的高级接口(即相似于R的BSTS包)。

·      广义线性混合模型:消耗于拟合混合效应回归模型的高级界面(即与R的lme4软件包类似)。

TensorFlow Probability团队致力于通过尖端功可以,持续升级代码和错误修复来支持消耗户和贡献者,我们将继续增加端到端的示例和教程。

让我们看看少量例子!

Edward2打造的线性混合效应模型

线性混合效应模型是对数据中结构化关系进行建模的简单方法,也能称为分级线性模型,它分享各组数据点之间的统计强度,以便改进对任何单个数据点的推论。

作为演示,请考虑R中流行的lme4包中的InstEval数据集,其中包含大学课程及其评估评级。使消耗TensorFlow Probability,我们将模型指定为Edward2概率程序(tfp.edward2),它扩展了Edward。下面的程序根据其生成过程来确定模型:

该模型将“服务”“学生”和“教师”的特征字典作为输入,它们是每个元素形容单个课程的向量。该模型回归这些输入,假设潜在的随机变量,并返回课程评估评分的分布。在此输出上运行的TensorFlow会话将返回一代评级。

查看“线性混合效应模型”教程,详细理解如何使消耗tfp.mcmc.HamiltonianMonteCarlo算法训练模型,以及如何使消耗后预测来探究和解释模型。

高斯Copulas与TFP Bijectors

Copulas是一个多元概率分布,其中每个变量的边缘概率分布是均匀的。要构建使消耗TFP内在函数的copula,能使消耗Bijectors和TransformedDistribution,这些笼统能轻松创立复杂的分布,例如:

该“高斯系 Copula”创立了少量自己设置Bijectors,而后展现了如何轻松地建立多个不同的Copula函数。有关分配的更多背景信息,请参阅“理解张量流量分布形状”。它详情了如何管理抽样,批量训练和建模事件的形状。

带有TFP实消耗程序的变分自动编码器

变分自动编码器是一种机器学习模型,其使消耗一个学习系统来表示少量低维空间中的数据,并且使消耗第二学习系统来将低维表示复原为原本是输入的。因为TF支持自动分化,因而黑盒变换推理是一件轻而易举的事!例:

要查看更多详细信息,请查看我们的变分自动编码器示例!

具备TFP概率层的贝叶斯神经网络

贝叶斯神经网络是一个神经网络,它的权重和偏差具备先验分布。它通过这些先验提供了改进的不确定性。贝叶斯神经网络也能解释为神经网络的无限集合:分配给每个神经网络配置的概率是根据先前的。

作为一个小例子,我们使消耗了具备特征(形状为32 x 32 x 3的图像)和标签(值为0到9)的CIFAR-10数据集。为了拟合神经网络,我们将使消耗变分推理,这是一套方法来逼近神经网络在权重和偏差上的后验分布。也就是说,我们在TensorFlow Probabilistic Layers板块()中使消耗最近发布的Flipout预计器tfp.layers。

该neural_net函数在输入张量上组成了神经网络层,并且针对概率卷积层和概率密集连接层执行随机前向遍历。该函数返回具备批量大小10个值的形状的输出张量。张量的每一行表示每个数据点属于10个类别之一的logits(无束缚概率值)。

对于训练,我们建立损失函数,它包括两个项:预期的负对数似然和KL分歧。我们通过Monte Carlo近似预期的负对数似然,KL分歧是通过作为层的参数的正规化术语增加的。

tfp.layers也能消耗于使消耗tf.keras.Model类的eager exection。

本文由阿里云云栖社区组织翻译。

文章原标题《introducing-tensorflow-probability》,

译者:虎说八道,审校:袁虎。

介绍请阅读原文

网友评论