PyTorch教程-18.1. 高斯过程简介

电子说

1.2w人已加入

描述

在许多情况下,机器学习相当于从数据中估计参数。这些参数通常很多且相对难以解释——例如神经网络的权重。相比之下,高斯过程提供了一种机制,可以直接推理适合我们数据的函数的高级属性。例如,我们可能了解这些函数是否快速变化、周期性、涉及条件独立性或平移不变性。高斯过程使我们能够通过直接指定适合我们数据的函数值的高斯分布,轻松地将这些属性合并到我们的模型中。

让我们从一些例子开始,感受一下高斯过程是如何运作的。

假设我们观察以下回归目标(输出)的数据集,y,由输入索引,x. 例如,目标可以是二氧化碳浓度的变化,输入可以是记录这些目标的时间。数据有哪些特点?它看起来变化多快?我们是否定期收集数据点,或者是否缺少输入?您如何想象填补缺失的区域,或预测直到x=25

pytorch

图 18.1.1观测数据。

为了用高斯过程拟合数据,我们首先指定我们认为合理的函数类型的先验分布。在这里,我们展示了几个来自高斯过程的示例函数。这个先验看起来合理吗?请注意,这里我们不是在寻找适合我们数据集的函数,而是在寻找解决方案的合理高级属性,例如它们随输入变化的速度。请注意,我们将在下一个关于先验和推理的笔记本中看到用于重现此笔记本中所有图的代码。

pytorch

图 18.1.2我们可能希望用我们的模型表示的示例先验函数。

一旦我们以数据为条件,我们就可以使用它来推断适合数据的函数的后验分布。在这里,我们展示了示例后验函数。

pytorch

图 18.1.3样本后验函数,一旦我们观察到数据。

我们看到这些函数中的每一个都与我们的数据完全一致,完美地贯穿了每一次观察。为了使用这些后验样本进行预测,我们可以对后验中每个可能的样本函数的值进行平均,以创建下面的粗蓝色曲线。请注意,我们实际上不必采用无限数量的样本来计算此期望;正如我们稍后将看到的,我们可以计算封闭形式的期望。

pytorch

图 18.1.4后验样本,以及后验均值,可用于点预测,蓝色。

我们可能还需要不确定性的表示,因此我们知道我们应该对我们的预测有多大的信心。直觉上,我们应该有更多的不确定性,因为样本后验函数的可变性更大,因为这告诉我们真实函数可以采用更多可能的值。这种不确定性称为认知不确定性,即可约化的不确定性。与缺乏信息有关。随着我们获取更多数据,这种不确定性就会消失,因为与我们观察到的一致的解决方案将越来越少。与后验均值一样,我们可以计算封闭形式的后验方差(这些函数在后验中的可变性)。使用阴影,我们在均值两侧显示两倍的后验标准差,创建一个可信区间 ,该区间有 95% 的概率包含任何输入的函数真实值x.

pytorch

图 18.1.5后验样本,包括 95% 的可信集。

如果我们删除后验样本,只需可视化数据、后验均值和 95% 可信集,该图看起来会更清晰一些。注意不确定性如何从数据中增长,这是认知不确定性的一个特性。

pytorch

图 18.1.6点预测和可信集。

我们用来拟合数据的高斯过程的属性受到所谓的协方差函数(也称为内核)的强烈控制。我们使用的协方差函数称为RBF(径向基函数)核,其形式为

(18.1.1)kRBF(x,x′)=Cov(f(x),f(x′))=a2exp⁡(−12ℓ2||x−x′||2)

这个内核的超参数是可解释振幅 参数_a控制函数变化的垂直尺度,以及长度尺度参数控制函数的变化率(摆动度)。更大a 意味着更大的函数值,并且更大意味着更缓慢地改变函数。让我们看看我们的样本先验函数和后验函数随着我们的变化会发生什么a.

长度尺度对 GP 的预测和不确定性有特别显着的影响。||x−x′||=ℓ,一对函数值之间的协方差是a2exp⁡(−0.5). 在比更远的距离,函数值变得几乎不相关。这意味着如果我们想在某个点做出预测x∗,然后是带有输入的函数值 x这样||x−x′||>ℓ不会对我们的预测产生强烈影响。

让我们看看更改长度尺度如何影响样本先验和后验函数以及可信集。以上拟合使用长度尺度2. 现在让我们考虑 ℓ=0.1,0.5,2,5,10. 的长度尺度0.1相对于我们正在考虑的输入域的范围来说非常小, 25. 例如,函数的值在x=5x=10在这样的长度范围内基本上没有相关性。另一方面,对于长度尺度10,这些输入的函数值将高度相关。请注意,下图中的垂直比例发生了变化。

pytorchpytorch

pytorchpytorch

pytorchpytorch

pytorchpytorch

请注意,随着长度尺度的增加,函数的“摆动性”会降低,我们的不确定性也会降低。如果长度尺度很小,随着我们远离数据,不确定性会迅速增加,因为数据点对函数值的信息变得越来越少。

现在,让我们改变振幅参数,将长度尺度固定在2. 请注意,垂直比例对于先验样本保持固定,而对于后验样本则不同,因此您可以清楚地看到函数的增加比例以及对数据的拟合。

pytorchpytorch

pytorchpytorch

pytorchpytorch

我们看到振幅参数影响函数的尺度,但不影响变化率。在这一点上,我们也感觉到我们程序的泛化性能将取决于这些超参数的合理值。价值观ℓ=2a=1似乎提供了合理的拟合,而其他一些值却没有。幸运的是,有一种强大且自动的方法可以使用所谓的边际似然来指定这些超参数,我们将在笔记本中进行推理。

那么究竟什么是全科医生呢?在我们开始时,GP 简单地说任何函数值的集合f(x1),…,f(xn), 由任何输入集合索引x1,…,xn具有联合多元高斯分布。均值向量μ此分布的 由均值函数给出,该函数通常被视为常数或零。该分布的协方差矩阵由 在所有输入对上评估的内核给出x.

(18.1.2)[f(x)f(x1)⋮f(xn)]∼N(μ,[k(x,x)k(x,x1)…k(x,xn)k(x1,x)k(x1,x1)…k(x1,xn)⋮⋮⋱⋮k(xn,x)k(xn,x1)…k(xn,xn)])

等式(18.1.2)指定了一个 GP 先验。我们可以计算条件分布f(x)对于任何x给予 f(x1),…,f(xn),我们观察到的函数值。这种条件分布称为后验分布,我们用它来进行预测。

尤其,

(18.1.3)f(x)|f(x1),…,f(xn)∼N(m,s2)

在哪里

(18.1.4)m=k(x,x1:n)k(x1:n,x1:n)−1f(x1:n)
(18.1.5)s2=k(x,x)−k(x,x1:n)k(x1:n,x1:n)−1k(x,x1:n)

在哪里k(x,x1:n)是一个1×n通过评估形成的向量k(x,xi)为了i=1,…,nk(x1:n,x1:n)是一个n×n通过评估形成的矩阵k(xi,xj)为了i,j=1,…,n.m是我们可以用作任何的点预测器x, 和s2 是我们用于不确定性的东西:如果我们想创建一个有 95% 概率的区间f(x)在区间内,我们将使用 m±2s. 上述所有数字的预测方法和不确定性都是使用这些方程式创建的。观察到的数据点由f(x1),…,f(xn)并选择了一组细粒度的x点来做出预测。

假设我们观察到一个数据点,f(x1),我们想确定的价值f(x)在一些x. 因为 f(x)由高斯过程描述,我们知道联合分布(f(x),f(x1))是高斯分布的:

(18.1.6)[f(x)f(x1)]∼N(μ,[k(x,x)k(x,x1)k(x1,x)k(x1,x1)])

非对角表达式k(x,x1)=k(x1,x)告诉我们函数值的相关程度——确定程度 f(x)将来自f(x1). 我们已经看到,如果我们使用大长度尺度,相对于之间的距离xx1,||x−x1||,则函数值将高度相关。我们可以想象确定的过程 f(x)f(x1)无论是在功能空间,还是在联合分布f(x1),f(x). 让我们首先考虑一个x这样k(x,x1)=0.9, 和 k(x,x)=1,这意味着f(x)与值适度相关f(x1). 在联合分布中,恒定概率的等高线将是相对较窄的椭圆。

假设我们观察f(x1)=1.2. 以这个值为条件 f(x1),我们可以画一条水平线1.2在我们的密度图上,可以看到f(x)主要限于[0.64,1.52]. 我们还在函数空间中绘制了这个图,显示了观察点f(x1)橙色,高斯过程预测分布的 1 个标准差 f(x)蓝色,关于的平均值1.08.

pytorchpytorch

现在假设我们有更强的相关性,k(x,x1)=0.95. 现在椭圆进一步缩小,并且值f(x)更强烈地决定于f(x1). 画一条水平线在1.2,我们看到轮廓f(x)支持值主要在[0.83,1.45]. 同样,我们还在函数空间中显示了该图,其中关于平均预测值的一个标准偏差1.14.

pytorchpytorch

我们看到我们的高斯过程的后验均值预测器更接近于1.2,因为现在有更强的相关性。我们还看到我们的不确定性(误差条)有所减少。尽管这些函数值之间存在很强的相关性,但我们的不确定性仍然相当大,因为我们只观察到一个数据点!

这个过程可以给我们一个后验f(x)对于任何 x,对于我们观察到的任意数量的点。假设我们观察 f(x1),f(x2). 我们现在将后验可视化为f(x) 在特定的x=x′在函数空间。的确切分布f(x)由上述等式给出。f(x)是高斯分布的,均值

(18.1.7)m=k(x,x1:3)k(x1:3,x1:3)−1f(x1:3)

和方差

(18.1.8)s2=k(x,x)−k(x,x1:3)k(x1:3,x1:3)−1k(x,x1:3)

在这个介绍性笔记本中,我们一直在考虑无噪声 观察。正如我们将看到的,很容易包含观察噪声。如果我们假设数据是从潜在无噪声函数生成的f(x)加上 iid 高斯噪声 ϵ(x)∼N(0,σ2)有方差 σ2,那么我们的协方差函数就变成了 k(xi,xj)→k(xi,xj)+δijσ2, 在哪里 δij=1如果i=j0否则。

我们已经开始对如何使用高斯过程指定先验和后验解以及核函数如何影响这些解的属性有了一些直觉。在后面的notebook中,我们将准确地展示如何先验指定高斯过程,介绍和推导各种核函数,然后通过如何自动学习核超参数,形成高斯过程后验进行预测的机制。虽然习惯“函数分布”等概念需要时间和实践,但寻找 GP 预测方程的实际机制实际上非常简单——通过实践可以很容易地形成对这些概念的直观理解。

18.1.1. 概括

在典型的机器学习中,我们指定一个带有一些自由参数(例如神经网络及其权重)的函数,我们专注于估计那些可能无法解释的参数。使用高斯过程,我们直接对函数的分布进行推理,这使我们能够对解决方案的高级属性进行推理。这些属性由协方差函数(内核)控制,该函数通常具有一些高度可解释的超参数。这些超参数包括长度尺度,它控制函数的速度(波动程度)。另一个超参数是振幅,它控制我们的函数变化的垂直尺度。表示可以拟合数据的许多不同函数,并将它们组合在一起形成预测分布,是贝叶斯方法的一个显着特征。因为远离数据的可能解决方案之间存在更大的可变性,所以随着我们远离数据,我们的不确定性直观地增加。

高斯过程通过指定所有可能函数值的多元正态(高斯)分布来表示函数分布。可以轻松地操纵高斯分布以根据任何一组其他值的值找到一个函数值的分布。换句话说,如果我们观察一组点,那么我们可以以这些点为条件,并推断函数值在任何其他输入下的分布。我们如何对这些点之间的相关性进行建模由协方差函数决定,并且定义了高斯过程的泛化属性。虽然习惯高斯过程需要时间,但它们很容易使用,有很多应用程序,并帮助我们理解和开发其他模型类,如神经网络。

18.1.2. 练习

  1. 认知不确定性与观察不确定性之间有什么区别?

  2. 除了变化率和幅度之外,我们可能还想考虑函数的哪些其他属性,以及具有这些属性的函数的真实示例是什么?

  3. 我们考虑的 RBF 协方差函数表示观测值之间的协方差(和相关性)随着它们在输入空间(时间、空间位置等)中的距离而减小。这是一个合理的假设吗?为什么或者为什么不?

  4. 两个高斯变量之和是高斯分布吗?两个高斯变量的乘积是高斯分布吗?如果 (a,b) 服从联合高斯分布,a|b (a given b) 是否服从高斯分布?是高斯分布吗?

  5. 重复我们观察数据点的练习 f(x1)=1.2,但现在假设我们另外观察 f(x2)=1.4. k(x,x1)=0.9, 和 k(x,x2)=0.8. 我们会或多或少地确定f(x),比我们只观察到f(x1)我们的价值的平均值和 95% 可信集是多少f(x) 现在?

  6. 您认为增加我们对观测噪声的估计会增加还是减少我们对地面真值函数长度尺度的估计?

  7. 当我们远离数据时,假设我们的预测分布中的不确定性增加到一个点,然后停止增加。为什么会发生这种情况?

Discussions


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分