使用不同核函数的高斯过程
高斯过程
像所有其他机器学习模型一样,高斯过程是一个简单预测的数学模型。像神经网络一样,它可以用于连续问题和离散问题,但是其基础的一些假设使它不太实用。
但是,过去5年左右的时间里,尽管没有多少人真正知道它们是什么,如何使用或为什么很重要,但该领域的研究却令人难以置信。像Secondmind这样的初创公司;像卡尔·拉斯穆森(Carl Rasmussen),尼尔·劳伦斯(Neil Lawrence)和戴维·杜文诺(David Duvenaud)这样的著名学者都花了大量时间研究方法和发展该理论,这么多大佬都在研究,所以它必须有用……对吧?
这种方法被称为克里格法(Kriging),在地质统计学中有着悠久的历史,但它也源于一个关于神经网络的哲学问题:如果神经网络具有无限宽,你会得到什么?
众所周知,在网络宽度无穷大的极限下,高斯过程等价于具有参数先验的单层全连接神经网络。谷歌Brain的研究得出了无限宽深度神经网络和高斯过程之间的精确对等,但既然DNN如此成功,为什么GP在机器学习社区没有得到更广泛的应用呢?是什么关键的棘手的差异,导致GP没有被实施在进一步使用?为什么GP比DNN的更差呢?
对于那些不习惯处理长方程的人来说,推导和理解高斯过程的数学的确令人生畏,但在其核心,高斯过程只是对贝叶斯回归的扩展。
现在,让我们进入高斯过程的数学解释!
高斯过程回归(GPR)是一种使用一些独立数据x来预测一些输出y的方法,顾名思义,它假设误差是高斯分布的,但也假设数据是多元高斯分布的。
让我们回顾一下,高斯分布(也被称为正态分布)的形状像一个钟形曲线,类似于我们周围存在的许多现象。如果某一现象的形状是高斯分布的,那么我们关注的两个特征是其均值和方差,以及偏度和峰度。
例如,算术平均值是正态分布的,因此,如果我们查看从人口中随机抽样的人的平均身高,则会发现这些样本的均值将具有正态分布。
多元正态(或高斯)分布是将奇异正态分布推广到更高维度。因此,假设我们正在分析相互关联的现象-某人的身材又高又瘦的可能性是多少(如果我们有一个人,身高和体重的数据集)?我们可以通过多元分布(或哪种高斯混合模型是特定类)对这些联合依赖关系进行建模。
现在我们已经回忆了什么是多元高斯分布,我们可以注意到高斯分布有一个很好的代数性质是封闭的如果我们想条件化和边缘化一个维。在条件作用下的封闭和边缘化意味着这些操作产生的分布也是高斯分布,这使得统计和机器学习中的许多问题变得容易处理。
随机变量
随机过程,比如高斯过程,本质上是一组随机变量。此外,每个随机变量都有一个对应的指标i,我们将用这个指标来表示我们的n维多元分布的第i维。
在探地雷达中,我们首先假设一个高斯过程是先验的,可以用均值函数m(x)和协方差函数k(x, x’)来表示:
更具体地说,高斯过程就像一个无限维的多元高斯分布,其中数据集的任何标签集合都是联合高斯分布的。在这个模型中,我们可以通过选择均值函数和协方差函数来整合函数空间的先验知识。我们也可以轻易地把独立同分布(先验知识)高斯噪声,ϵ∼N(0,σ²),通过求和的标签标签分布和噪声分布:
由高斯过程先验可知,训练点和测试点的集合是联合多元高斯分布,因此我们可以将它们的分布写成如下形式:
这里,K是协方差核矩阵,其中它的项对应于观察值的协方差函数。这样写,我们可以拿训练子集来进行模型选择。
预测是意味着f_bar * ,方差可以从协方差矩阵的对角获得Σ* 。请注意,计算平均值和方差需要对K矩阵进行反演,而K矩阵随训练点数的立方而变化。
内核函数
高斯过程使用惰性学习和点之间的相似性度量(核函数)来预测训练数据中不可见点的值。例如,如果有一个被建模的周期趋势(比如一年以上的温度),那么你可以使用周期核函数。
后面的灰色区域是不确定性(边际预测分布的+- 2),有了它,如果我们使用周期核函数,我们就能够高度自信地跟踪信号。
让我们看看一些常见的核函数。
平方指数内核
平方指数核已经成为GPs事实上的默认核。它是通用的,你可以将它集成到你需要的大多数函数中。每个函数在其先验中都有无穷多个导数。它也只有两个参数:
长度尺度ℓ决定“摆动”你的函数的长度。一般情况下,你无法推断超过ℓ单位远离你的数据。
输出方差(方差)决定了函数离均值的平均距离。每个内核前面都有这个参数;它只是一个比例因子。
同样地,周期核函数(由大卫·麦凯推导)允许人们模拟精确地重复自己的函数。其参数很容易解释:
周期p只是决定了函数的重复之间的距离。
的长度尺度ℓ决定了长度尺度函数一样的SE内核。
联合内核
核相乘是组合两个核的标准方法,特别是当它们定义在函数的不同输入上时。粗略地说,两个内核的相乘可以被认为是一个AND操作。所以,如果你把两个核相乘,只有当两个基本核都是高值时,得到的核才会有高值。
例如,一个线性核函数乘以一个周期函数会产生周期性的函数,当我们离开原点时,函数的振幅会增加(如下图右侧所示)
此外,一个线性核乘以另一个线性核得到的函数是二次的!这个技巧可以用来产生任意程度的贝叶斯多项式回归。
深层高斯过程
从数学上讲,深层高斯过程可以看作是一个复合多元函数,其中“深层”方面增加了正态高斯过程的能力。可以把它看作如下的嵌套函数(其中g(x)是x上的一个深度高斯过程)。
𝐠(𝐱)=𝐟5(𝐟4(𝐟3(𝐟2(𝐟1(𝐱))))).g(x)=f5(f4(f3(f2(f1(x))))).
如果我们从概率的角度来看,我们可以看到一个深层高斯过程指定了联合密度的因数分解,标准的深模型采用马尔可夫链的形式。
为什么叫深层?
高斯过程的限制因素实际上很容易直观地理解。因为高斯过程指定了函数的先验;这个函数的导数(如果存在的话)也是高斯函数。这也说明边际导数分布也是高斯分布。如果是这样的话,这就意味着偶尔会有很大导数的函数很难用高斯过程来建模。例如,一个带有跳转的函数。
然而,一次性跳跃很容易用GP建模,这是通过使用平均函数来引入的。此外,在输入空间的不同区域应用的两个协方差函数之间可以强制独立。但在这些情况下,我们需要指定不连续点的数量以及它们发生的位置。换句话说,我们需要参数化不连续点,这是一件不好的事情。如果我们不知道不连续点的数量,也不希望指定它们发生的位置,也就是说,如果我们想要不连续点的非参数表示,那么标准高斯过程就没有用了。
随机过程组成
深度高斯过程导致了非高斯模型的建模能力,以及协方差函数中的非高斯特性。实际上,所提出的是改变由组合随机过程所建模的函数的性质。这是一种从已知过程中创造新的随机过程的方法。
此外,随着深度GP的出现,研究人员不再局限于链的形式主义。例如,我们现在可以很容易地添加从链的某个深度点出现的单个节点。这允许我们结合图形建模形式的好处,但与一个强大的框架,将一组变量与另一组变量,高斯过程。
现在,我们已经详细讨论了高斯过程,让我们向前迈进,并讨论其中的一些关键问题。
高斯过程的问题
GP并非十全十美,而且必须解决许多问题才能确保稳定可靠的推理。
不稳定
我们遇到的第一个问题是GP经常不稳定并且做出糟糕的预测。这有一个明显的原因,那就是所使用的内核通常没有任何iid。高斯噪声核数据本身的噪声同时存在。因为模型在这里显然被错误地计算了,模型也被强制放到一个不能工作的数据集中。
结果,所使用的协方差矩阵将具有非零的特征值,但它们将非常非常接近,并且计算机的小的计算精度也开始起作用。这称为数值不稳定性。有多种解决方法:
1)在观测中添加噪声;也就是说添加𝐼𝜎2过程,数据明显噪音所以这实际上是一件好事![注,这是广泛使用的方法]
2)对你的GP执行低阶近似;也就是说做一个特征值/特征向量分解并剪辑所有可以忽略的特征值。协方差矩阵现在是低秩的,你可以很容易地反置非零特征值给你一个伪逆的协方差矩阵。要注意的是,你的不确定性基本上是零,因为你只有几个自由度,而且很明显有很多很多点。[注意:这在实际应用中要难得多]
添加𝐼𝜖很受欢迎和本质上添加一个小的噪音,直到矩阵变得好条件。例如,GPy中的GPs就是这样实现的。
计算速度慢
GP需要O(n³)的时间进行训练,因为模型需要O(n³)的矩阵求逆。反转也不稳定;调节误差很大。幸运的是,变分归纳变量逼近的发展已将昂贵的矩阵处理成本降低到O(M³),其中M <N。因此,您自然应该期待它花费一些时间进行训练,并且随着它的增加而迅速增长 数据集大小。这可以通过使用更快的反演器来改善
不灵活的分配假设
GPs假设高斯不确定性。例如,让我们假设输出值是严格正的,或者在两个值之间,那么这个高斯先验将是不合适的(或者只用于近似)。
内核限制
内核方法,随机森林,神经网络在这里需要权衡。GP内核使我们可以在函数空间上指定一个优先级,这对我们非常有用,特别是在数据很少的情况下。但是,在内核中选择错误的选项会导致对功能空间的误解,从而导致转换速度变慢。指定除最基本之外的适当内核需要一些数学知识。
另一方面,随机森林和神经网络(通常)是完全频繁的,因此通常需要更多数据才能获得不错的预测性能。
总结
重要的是要在这里理解高斯过程是一个巨大的研究领域,并且该领域有很多事情要做,但是,该领域尚未在工业中得到很好的实施。这些方法虽然有用,但其强度仍然落后于神经网络和其他更强大的模型(例如XGBoost随机森林)。
鉴于此,有必要了解这些模型,但请放心,他们还不能解决所有问题。神经网络之所以大声疾呼,是因为它们能够对奇异点进行建模,因为它们无需事先对误差的分布进行假设。这里的数据越多越好。GP很棒,但此时此刻会受到固有的限制。
再次感谢您的阅读。