——如何将一组小型构建块转变为解决回归问题的灵活的工具。
最近看论文里用到了高斯过程Gaussian Process,好像对这个概念还不是很懂,找了一篇文章来看,原文是英文的,在这里自己翻译一下作为学习记录,也可以给有需要的小伙伴看看。英文阅读不错的同学可以直接去看看原文。原文链接在文末
高斯过程是一种为预测函数提供置信度(上图中的阴影部分)的概率方法。
Introduction 简介
即使你已经花了一些时间阅读有关机器学习的内容,你也可能从未听说过高斯过程。 如果你有的话,复习一下基础知识始终是刷新记忆的好方法(温故而知新)。 通过这篇博文,我们想介绍高斯过程,并使它们背后的数学直觉更容易理解。
高斯过程是机器学习工具箱中的强大工具。 它允许我们通过结合先验知识来预测我们的数据。 它们最明显的应用领域是为数据拟合函数。 这称为回归 regression,例如用于机器人技术或时间序列预测。 但高斯过程不仅限于回归 —— 它们还可以扩展到分类和聚类任务。 对于给定的一组训练点,可能有无限多的函数可以拟合数据。 高斯过程通过为每个函数分配一个概率,为这个问题提供了一个优雅的解决方案。这些函数的概率分布的平均值代表了给定数据最可能的特征。 此外,使用概率方法允许我们将预测的置信度纳入回归结果。
我们将首先探索构建高斯过程的数学基础 — 我们邀请您使用交互式图形和动手示例来跟随。 它们有助于解释单个组件的影响,并展示高斯过程的灵活性。 阅读完本文后,我们希望您对高斯过程的工作原理以及如何为不同类型的数据配置它们有一个直观的认识。
Multivariate Gaussian distributions 多元高斯分布
在探索高斯过程之前,我们需要了解它们所基于的数学概念。 顾名思义,高斯分布Gaussion distribution(通常也称为正态分布Normal distribution)是高斯过程的基本组成部分。 特别是,我们对这种分布的多元情况感兴趣,其中每个随机变量都呈正态分布,并且它们的联合分布也是高斯分布。 多元高斯分布由平均向量 μ和协方差矩阵 Σ 定义。
https://zhuanlan.zhihu.com/p/358169835协方差和协方差矩阵,可复习一下
平均向量 μ描述了分布的期望值。它的每个分量都描述了相应维度的平均值。Σ 对沿每个维度的方差进行建模,并确定不同随机变量的相关性。 协方差矩阵总是对称的和半正定的,其对角线由第 i 个随机变量的方差组成。 非对角元素 σij 描述了第 i个和第 j 个随机变量之间的相关性。
X 服从正态分布,协方差矩阵描述分布的形状,其由期望E 来定义
从视觉上看,分布以均值为中心,协方差矩阵定义了它的形状。 下图显示了这些参数对二维高斯分布的影响。 每个随机变量的方差在协方差矩阵的对角线上,而其他值显示它们之间的协方差。
高斯分布被广泛用于模拟现实世界。 例如,在中心极限定理的假设下,我们可以使用它们来描述测量误差或现象。 在下一节中,我们将仔细研究如何操纵高斯分布并从中提取有用的信息。
Marginalization and Conditioning 边缘化(分布)和条件化(分布)
高斯分布具有在条件化和边缘化下闭合的良好代数特性。 在条件化和边缘化下封闭意味着这些操作的结果分布也是高斯分布,这使得统计和机器学习中的许多问题变得容易处理。 在下文中,我们将仔细研究这两种操作,因为它们是高斯过程的基础。
边缘分布和条件分布都在原分布的子集上成立,使用下面的式子来表示:
其中X和Y表示原随机变量的子集。通过边缘分布我们能从多变量概率分布中提取出部分信息。尤其是,给定一个在随机变量X和Y向量上的正态分布P(X,Y),我们能确定他们的边缘概率分布:
上式表示每个分项X和Y只取决于其在平均向量μ和协方差矩阵Σ 中相对应的部分。为了从高斯分布中边缘化随机变量,我们可以简单地从μ和Σ 中删除变量:
上面这个式子表示如果我们对X=x的概率密度感兴趣的话,我们就需要考虑Y的所有可能情况,这些情况共同导致了这个结果。
高斯过程的另一个重要操作是条件分布。 它用于确定一个变量依赖于另一个变量的概率。 与边缘分布类似,此操作也是闭的,并产生修改后的高斯分布。 这个操作是高斯过程的基石,因为它允许贝叶斯推理,我们将在下一节中讨论。 条件分布定义为:
需要注意的是,新的平均值只取决于条件变量,而协方差矩阵则独立于该变量。
现在我们已经完成了必要的方程式,我们将考虑如何直观地理解这两个操作。 虽然边缘化和条件化可以应用于多维的多元分布,但考虑如下图所示的二维情况是有意义的。 边缘化可以看作是沿着高斯分布的一个维度进行积分,这符合边缘分布的一般定义。 条件化也有一个很好的几何解释 — 我们可以把它想象成对多元分布进行切割,产生一个维度更少的新高斯分布。
上图解释:中间是一个二元高斯分布,左边是Y的边缘分布,类似于沿着Y轴做积分。左边就是Y的边缘分布,就像上面说的那样,左图就是Y的概率密度分布,相当于在中间那个图的每一个Y=y的位置处,对出现的点的概率进行求和(积分)。右边是给定X条件下的Y的条件概率分布,类似于在原图上某个X=x的位置的截面。
Gaussian Processes 高斯过程
终于到正题了。
现在我们已经回顾了多元高斯分布的一些基本属性,我们将把它们组合在一起来定义高斯过程,并展示如何使用它们来解决回归问题。
首先,我们将从连续视图转向函数的离散表示:我们感兴趣的是预测具体点处的函数值,而不是寻找隐式函数,称之为预测点 X 。那么如何从目前考虑到的多元正态分布来推导出这个函数?随机过程,例如高斯过程,本质上是一组随机变量。此外,这些随机变量每一个都有相应的索引 i。我们将使用这个索引来指代 n 维多元分布的第 i 维。下图显示了二维多元分布的示例:
上图展示的x1和x2的高斯分布表示,它隐含了x1和x2之间的正相关的关系,也就意味着随着x1的变大,x2也会跟着变大,反之亦然。
现在,高斯过程的目标是从训练数据中学习这种潜在的分布。相对测试数据 X,将训练数据表示为 Y。 正如之前提到的,高斯过程的关键思想是将 X 和 Y 的基本分布建模为多元正态分布。 这意味着联合概率分布 P_{X,Y} 扩展了我们想要预测的函数的可能函数值的空间。测试和训练数据的这种联合分布有 |X| +∣Y∣ 维。
为了对训练数据进行回归,我们将此问题视为贝叶斯推断。贝叶斯推理的基本思想是当新信息可用时更新当前假设。在高斯过程的情况下,该新信息就是训练数据。因此,我们对条件概率P_{X|Y}感兴趣。最后,记得高斯分布在条件化下是封闭的 —— 所以P_{X|Y}也是正态分布的。
现在,已经有了高斯过程的基本框架,现在只缺少一件事:如何建立这个分布并定义均值μ和协方差矩阵∑?协方差矩阵由其协方差函数 k 确定,该函数通常也称为高斯过程的核。我们将在下一节详细讨论这一点。但在我们讨论这个问题之前,让我们思考一下如何使用多元高斯分布来估计函数值。下图显示了使用十个测试点来预测函数的示例:
在高斯过程中,我们将每个测试点视为一个随机变量。多元高斯分布的维数与随机变量的数目相同。因为我们想预测|X|=N个测试点的函数值,所以对应的多元高斯分布也是N维的。使用高斯过程进行预测最终归结为从这个分布中抽取样本。然后,我们将结果向量的第i个分量解释为对应于第i个测试点的函数值。
Kernels 核函数
回顾一下,为了设置我们的分布,我们需要定义μ和∑。在高斯过程中,通常假设μ=0,这里简化了条件化所必要的方程。我们总是可以假设这样的分布,即使μ≠0,并在预测步骤之后将μ加入方程的结果中。这个过程也称为数据中心化(归一化)。因此,直接配置μ—— 当我们看分布的另一个参数时,它会变得更有趣。
高斯过程的聪明步骤是如何建立协方差矩阵∑。协方差矩阵不仅描述了分布的形状,而且最终决定了我们想要预测的函数的特征。我们通过在所有点上成对地评估核k(通常也称为协方差函数)来生成协方差矩阵。内核接收两个点***t, t’***作为输入,并以标量的形式返回这些点之间的相似性度量:
我们对测试点的每个成对组合计算该函数,以得到协方差矩阵。为了更好地理解核函数的作用,让我们考虑一下协方差矩阵中的项描述了什么。∑ij描述了第ii点和第jj点对彼此的影响。这源于多元高斯分布的定义,该定义指出∑ij定义了第ii个和第jj个随机变量之间的相关性。由于内核描述了函数值之间的相似性,因此它控制了拟合函数可以采用的可能形状。请注意,当我们选择一个核时,我们需要确保得到的矩阵符合协方差矩阵的属性。
核函数广泛用于机器学习,例如支持向量机。其原因是,它们允许远远超过标准欧几里德距离(L2L2距离)的相似性度量。很多这些核在理论上将输入点嵌入到更高维的空间中,然后在其中测量相似度。下图显示了高斯过程的一些常见核的示例。对于每个核函数,协方差矩阵是由N=25个线性间隔值创建的,范围为[-5,5]. 矩阵中的每个条目显示值在[0,1]范围内的点之间的协方差。
核函数可以分为平稳核和非平稳核。平稳核,如RBF核或周期核,是平移不变的函数,两点的协方差仅取决于它们的相对位置。非平稳核(如线性核)没有此约束,并且依赖于绝对位置。RBF核的平稳性质可以在其协方差矩阵对角线周围的带中观察到(如上图所示)。增加长度参数会增加对角线条的宽度,因为彼此距离越远的点越相关。对于周期核,有一个额外的参数P来确定周期性,它控制函数每次重复之间的距离。相比之下,线性核的参数C允许我们改变所有函数所依赖的点。
还有更多的内核可以描述不同的函数类,可以用来建模函数的期望形状。Duvenaud[6]对不同内核进行了很好的概述。也可以组合几个内核 ——但我们稍后会讨论这个问题。
Prior Distribution 先验分布
现在将把注意力转移到开始的回归任务。正如前面提到的,高斯过程定义了所有可能函数的概率分布。在上图中,我们展示了这种联系:多元正态分布中的每个样本代表了函数值的一种实现。因为这个分布是多元高斯分布,所以函数的分布也是正态的。回想一下,我们通常假设μ=0。现在,让我们考虑尚未观察到任何训练数据的情况。在贝叶斯推断的语义中,这被称为先验分布P_X。(熟悉一点的话可以叫做先验概率)
如果我们还没有观察到任何训练样本,根据我们最初的假设,这个分布围绕μ=0。先验分布的维数与测试数据的数目N=|X|相同。我们将使用核来建立协方差矩阵,其维数为N×N。
在上一节中,我们已经看到了不同内核的示例。内核用于定义协方差矩阵的每一项。因此,协方差矩阵决定了所有可能的函数空间中哪种类型的函数更有可能(即哪种类型的函数概率最大)。由于先验分布还不包含任何附加信息,因此可以完美地可视化内核对函数分布的影响。下图显示了使用不同内核创建的先验分布中的潜在函数示例:
通过调整参数,可以控制生成函数的形状。这也改变了预测的可信度。当减小方差σ(所有核的共同参数)时,采样函数更集中在平均值μ附近。对于线性核,设置方差σb=0会导致一组函数被约束为与偏移点cc完美相交。如果我们设置σb=0.2,我们可以对不确定性进行建模,导致函数接近cc。
Posterior Distribution 后验分布
那么,如果我们观察训练数据会发生什么?让我们回到贝叶斯推断的模型,它表明我们可以将这些附加信息合并到我们的模型中,得到后验分布P_{X|Y}。
首先,在测试数据XX和训练数据YY之间形成联合分布P_{X,Y}。结果是一个多维高斯分布,维数为|Y|+|X|。如下图所示,我们将训练点和测试点连接起来,以计算相应的协方差矩阵。
下一步,我们需要对前面定义的高斯分布进行一次操作。使用条件化,我们可以从P_{X, Y}中得到P_{X|Y}。该新分布的维度与测试数据N的数量相匹配,并且该分布也是正态的。需要注意的是,条件化会导致平均值和标准偏差的衍生版本:X∣Y∼N(μ′,∑′)。更多细节可以在有关调节多元高斯分布的相关章节中找到。这一步骤背后的直觉是,训练点将所有函数约束为通过训练点的函数集。
如前所述,条件分布P_{X|Y}迫使函数集精确地通过每个训练点。在许多情况下,这可能导致拟合的函数变得不必要的复杂(即过拟合)。此外,到目前为止,我们认为训练数据Y是完美的测量值。但在现实世界中,这是一个不切实际的假设,因为我们的大多数数据都受到测量误差或不确定性的影响。高斯过程通过对测量误差进行建模,为这个问题提供了一个简单的解决方案。为此,我们需要给每个训练数据添加一个误差项ε ∼ N(0,ψ^2 ),即:
通过稍微修改联合概率分布P_{X,Y}的来实现这一点:
同样,我们可以使用条件化来导出预测的分布P_{X|Y}。在此公式中,ψ是模型的一个附加参数。
类似于先验分布,我们可以通过从该分布中采样来获得函数值的预测。但是,由于采样涉及随机性,因此对数据的拟合不会是确定性的,我们的预测最终可能会成为异常值。为了做出更有意义的预测,我们可以使用高斯分布的其他基本运算。
通过对每个随机变量进行边缘化,我们可以提取对应测试数据的平均函数值μi′和标准差σii′。与我们将平均值设置为μ=0的先验分布相反,条件化测试和训练数据的联合分布的结果很可能具有非零平均值 μ≠0.提取‘μ’和‘σ’不仅可以得到更有意义的预测,还可以让我们对预测的可信度做出陈述。
下图显示了条件分布的示例。起初,没有观察到训练数据。因此,平均预测保持为0,并且每个测试点的标准偏差相同。只要没有观察到训练数据,邻近点的影响就受到局部限制。
将图中的训练数据(点)激活后,可以得到受到约束的分布。这种变化反映在协方差矩阵的上,并导致预测函数的平均值和标准差的调整。正如预期的那样,预测的不确定性在接近训练数据的区域很小,并且随着远离这些点而增加。
在受约束的协方差矩阵中,可以看到相邻点的相关性受到训练数据的影响。如果预测点位于训练数据上,则它与其他点就没有相关性。因此,函数必须直接通过它。更远的预测值也会受到训练数据的影响 — 与它们的距离成正比。
Combining different kernels 结合不同的核函数
如前所述,高斯过程的能力在于核函数的选择。这种特性使得专家可以将领域知识引入其中,并使高斯过程具有捕捉训练数据趋势的灵活性。例如,通过为RBF内核选择合适的带宽,我们可以控制结果函数的平滑程度。
内核提供的一个很大的好处是可以将它们组合在一起,从而形成更特制的内核。使用哪个内核的在很大程度上取决于关于数据的先验知识,例如,如果期望出现某些特性。这方面的例子是自然的平稳性,或全局的趋势和模式。正如核函数一节所介绍的,平稳意味着核是平移不变的,因此不依赖于索引i。这也意味着我们不能使用严格平稳的核来建模全局趋势。记住高斯过程的协方差矩阵必须是半正定的,在选择最佳内核组合时,可以使用所有具备这一特性的方法。最常见的内核组合是加法和乘法。考虑两个核函数,例如线性核函数klin和周期核函数kper,可以像这样将两个核函数相乘:
组合并不局限于上述示例,还有更多的可能,例如拼接(concatenation)或与另外的函数进行组合. 要显示内核组合的影响以及它如何保留单个内核的定性特征,请看下图。如果我们添加一个周期核和一个线性核,线性核的全局趋势将被合并到组合核中。结果是一个遵循线性趋势的周期函数。相反,当通过乘法组合相同的核时,结果是一个周期函数,其振幅远离线性核参数c线性增长。
现在知道了更多关于内核组合如何影响结果分布的形状的信息,我们可以接着看更复杂的示例。在下面几图中,观察到的训练数据具有周期性偏差的上升趋势。仅使用线性核,我们就可以模拟点的正态线性回归。乍一看,RBF核精确地逼近了这些点。但是,由于RBF核是静止的,因此在距离观察到的训练数据更远的区域,它将始终返回\mu=0μ=0。这会降低预测的准确性,而预测会深入到过去或未来。可以通过加法组合各个核来创建一个改进的模型,该模型既保持了数据的周期性,又保持了数据整体上升趋势。这种方法可用于天气数据分析。
正如关于高斯过程的一节所讨论的,高斯过程可以对不确定的观测进行建模。这可以在仅选择线性核时看到,因为它允许我们执行线性回归,即使已经观察到两个以上的点,并且不是所有函数都必须直接穿过观察到的训练数据。
Conclusion 结论
通过本文,你应该已经获得了高斯过程的概述,并对它们的工作原理有了更深入的理解。正如我们所看到的,高斯过程为回归提供了一个灵活的框架,并且存在一些扩展,使其更加通用。
比如,有时可能无法用简单的数学语言来描述内核。为了克服这一挑战,从底层数据学习专门的内核函数——例如通过使用深度学习——是一个正在进行的研究领域。此外,贝叶斯推理、高斯过程和深度学习之间的联系已在多篇论文中进行了描述。尽管我们主要在回归的背景下讨论高斯过程,但它们可以用于不同的目的,例如模型剥离和假设检验。通过比较数据集上的不同内核,领域专家可以通过内核的适当组合和参数化来引入额外的知识。
一些思考
想不明白为什么原文在只有先验分布的时候说高斯分布的时候,它的维度是 |X| , |X| 的意思不是模吗?也就是数据的长度,在文中X有10个数据,也就是|X|=10,文中说其高斯分布的维度是|X|,也就是10,但是这个维度应该怎么理解?期待有小伙伴在评论区指教。
参考文献
转载:https://blog.csdn.net/weixin_44801799/article/details/127572395