高斯过程(Gaussian Process)理解

对于高斯过程(Gaussian Process)已经心仪已久,但是之前大概看了一些文章,没有完全理解,本身这个模型是比较理解的,因此现在抽出时间来研究一番,本文中不会进行复杂的公式推导,主要对高斯过程进行理解。

高斯过程是机器学习中 一种或者说一类的建模方法。这种建模方法得出的模型统称为非参数模型,比如:高斯过程,贝叶斯,KNN等(参数模型:回归,深度学习,逻辑回归)。高斯过程是从概率统计学的角度来解决问题,更确切的说应该是随机过程(Stochastic Process)种一个特殊的例子,下面是WIKI上的定义:

高斯过程Gaussian process)是观测值出现在一个连续域(例如时间或空间)的统计模型。在高斯过程中,连续输入空间中每个点都是与一个正态分布随机变量相关联。此外,这些随机变量的每个有限集合都有一个多元正态分布。高斯过程的分布是所有那些(无限多个)随机变量的联合分布,正因如此,它是连续域(例如时间或空间)的分布。

高斯过程被认为是一种机器学习算法,是以惰性学习方式,利用点与点之间同质性的度量作为核函数,以从输入的训练数据预测未知点的值。其预测结果不仅包含该点的值,而同时包含不确定性的资料-它的一维高斯分布(即该点的边际分布)。

下面主要对高斯过程从几个方面进行详细的讲解,首先我们对高斯过程有一个大概的认知,通过一种通俗易懂的方式来进行说明,再从理论的角度来对高斯过程进行详细的理论讲解,最后会对高斯过程种使用的协方差函数(核函数)进行列举说明。另外会对使用高斯过程应该考虑的问题进行说明。

1. 高斯过程的通俗理解(总体认知)

在本文中通过高斯过程回归(GPR)来帮助高斯过程的理解。下面我们从回归的角度,从解决问题的角度看GPR是怎么一步一步解决我们的问题。

对于回归我们是给出$X和Y$,再给出测试的$X_{test}$,要求预测得到$Y_{test}$。高斯过程的出发点就是:如果两个$x$比较接近,那么它们对应的$y$一定比较接近。对于给定的新$X_{test}$与之前给出的$X$有多近,从而就知道了要预测$Y$的$Y_{test}$有多近,来预测$Y_{test}$。那么如何度量Y之间有多近呢?高斯过程是通过协方差矩阵(相关系数矩阵),而这个协方差矩阵怎么计算呢?这儿将多维高斯分布作为先验,认为所有的y,服从一个多维的联合高斯分布,只需要根据$X和Y$来将协方差矩阵计算好,最后按照公式计算$Y_{test}$的边缘分布就可以了。

上面解决了$Y$之间“近”的度量,那么$X$之间近怎么度量呢?那么核(kernel)就应该出现了,核不仅能刻画线性,而且能刻画非线性。目前整个问题就解决了:用$X$之间加kernel,来填充$Y$之间的协方差矩阵,然后计算$Y_{test}$的边缘分布。通过$X$和$Y$,给定$X_{test}$计算$Y_{test}$

上面我们对高斯过程有了一个总体认识后,下面我们就结合理论来进行理解,知道理论种每一步的具体作用,帮助我们理解高斯过程。

2. 多元高斯分布

在理解高斯过程之前需要对多元高斯分布有初步的认识,高斯分布是高斯过程的基础部件,而多元高斯分布是高斯分布的基础。多元高斯分布定义:

多变量正态分布亦称为多元高斯分布。它是单维高斯分布向多维的推广。它同矩阵正态分布有紧密的联系。 一般形式:

其中,$\mu$为向量,$\Sigma$为协方差矩阵,该分布为向量$\mu$为中心,协方差矩阵$\Sigma$决定其形状。N维随机向量 $X=[X_{1},\dots ,X_{N}]^{T}$如果服从多变量正态分布,必须满足下面的三个等价条件:

  1. 任何线性组合$Y=a_{1}X_{1}+\cdots +a_{N}X_{N}$服从正态分布。
  2. 存在随机向量 $Z=[Z_{1},\dots ,Z_{M}]^{T}$( 它的每个元素服从独立标准正态分布),向量 $\mu =[\mu _{1},\dots ,\mu _{N}]^{T}$及$N\times M$矩阵$A$满足$X=AZ+\mu $.
  3. 存在$\mu$ 和一个对称正定阵 $\Sigma$,满足$X$的特征函数$\phi _{X}\left(u;\mu ,\Sigma \right)=\exp \left(i\mu ^{T}u-{\frac {1}{2}}u^{T}\Sigma u\right)$,如果$\Sigma$是非奇异的,那么该分布可以由以下的PDF来描述:$f_{\mathbf {x} }(x_{1},\ldots ,x_{k})={\frac {1}{\sqrt {(2\pi )^{k}|{\boldsymbol {\Sigma }}|}}}\exp \left(-{\frac {1}{2}}({\mathbf {x} }-{\boldsymbol {\mu }})^{\mathrm {T} }{\boldsymbol {\Sigma }}^{-1}({\mathbf {x} }-{\boldsymbol {\mu }})\right)$,注意这里的$|\Sigma |$是协方差矩阵的行列式。

下面是一个二维高斯分布的图像,可以看出是以(0, 0)为中心,1为峰值,图形的宽度,是通过$|\Sigma |$矩阵来定义的。具体如下图所示:

gaussian curve with a 2-dimensional domain

3. 高斯过程(Gaussian Process)

Gaussian Process即高斯和过程,高斯一般指高斯分布,多元高斯分布;过程,这里主要是指随机过程(wiki上的随机过程定义:在概率论概念中,随机过程随机变量的集合。 若一随机系统的样本点是随机函数,则称此函数为样本函数,这一随机系统全部样本函数的集合是一个随机过程)。

本文还是基于回归的示例来理解高斯过程,假设:有$N$对样本$(x_i, y_i)_1^n$,一般是样本来拟合$x和y$之间的关系,并根据新的自变量$x$来预测$y$。但是高斯过程并非如此,而是利用先验知识,来拟合函数$f$的概率分布:

首先进行假设,假设给定一些$X$的值,我们对$Y$建模,并假设对应的这些$Y$值 服从联合高斯分布。一个高斯过程是由均值函数$m(x)$和协方差函数$k(x, x^”)$(正因为有均值函数核协方差函数确定,所以高斯过程为非参数模型)确定的。它可理解成联合高斯分布的一个生成过程,那么联合高斯分布可以通过如下表示:

上面的形式就是多元高斯分布形式:$X = N(\mu, \Sigma)$,其中均值$\mu$不用担心,可以先假设为0(即使 $\mu≠0$,我们也可以在预测结束后把$\mu$加回到结果函数值中。所以配置$ \mu $非常简单),如上面的(3)所示。那么协方差矩阵怎么得到呢?

在上面通俗理解的段落中提到了,$X$比较相似,那么对应的$y$值的相关性也就较高。换言之,协方差矩阵是$X$的函数。(而不是$y$的函数)。也就是说,可以假设协方差矩阵的每个元素为对应的两个$x$值的一个相似性度量,相似性度量函数是核函数(Kernel Functions,高斯过程回归中常用的Kernel是squared exponential kernel,在scikit-learn中GP接口中默认使用的kernel就是该核函数)。

协方差矩阵不仅仅描述了这个分布的形状,也最终决定了我们想要预测的函数所具有的特性。我们通过求核函数$K$的值来生成协方差矩阵,这个核函数通常也被称为协方差函数,作用在两两成对的所有测试点上。核函数接收到的输入是两个点,,返回的是一个标量,表达了这两个点之间的相似度

协方差矩阵$\Sigma_{ij}$ 描述的是第 $i$个点和第$j$个点之间的相互影响,这和多元高斯分布的定义一致。在多元高斯分布的定义中,$\Sigma_{ij}$ 定义了第$i$个随机变量和第$j$个随机变量之间的相关性。由于核函数描述的输入值之间的相似度,它便控制了这个拟合函数可能拥有的形状。

3.1 高斯过程回归(GPR)

假设对输入的$x^”$对应的$y^”$进行预测,那么可以简述如下:

3.1.1 先验分布(Prior Distribution)

训练样本:$x=[x_1, x_2, x_3, …, x_n], y=[y_1, y_2, y_3, …, y_n]$,测试样本:$x^”$,$y^”$。先验就是所有的随机变量遵循一个均值的多元高斯分布(假设随机变量已经零均值化,均值为0):

其中,GP定义了核函数$k$,就可以知道:

通过训练样本就确定了先验分布。如果将$x^”$,$y^”$拓展到$n^”$维,我们希望得到 一个 $n^”$ 维的预测向量 $f^”$:

其中,$K_{n \times n}=K(x, x)$,$K_{“ n^” \times n}$, $K^{“”}_{n^” \times n^”}$。

3.1.2 后验分布(Posterior Distribution )

后验分布利用了训练样本的集中信息,因为训练样本和测试样本都使用的同一高斯过程,所以训练样本$x$和测试样本的$x^”$比较接近,那么对应的$y$也是比较接近,根据多元高斯分布式的条件分布,就可以得到:

根据上述公式可知,测试集后验分布的期望值就是训练样本$y$的线性组合,而方差和训练样本的$y$无关,只与$x$有关。如果在拓展到多维时且均值不为0(基于3.1.1中的公式(8)的情况),则根据贝叶斯回归得到:

3.1.3 GPR训练

在GPR中训练集给定了,核函数(也叫协方差函数)给定了,基本都给定了,那结果也应该定了?虽然都给定了,但是kernel中的超参数并没有给定。所谓的训练就是训练得到这个超参数。只有当超参数确定后我们才确定了高斯过程得到的分布。因此,GPR的训练核心是学习kernel的超参数。

3.2 小结

  • 高斯过程可以看做是多维高斯分布向无限维的扩展,我们可以将$y=y_1,y_2,…,y_n$看作是从$n$维高斯分布中随机抽取的一个点
  • 对高斯过程的刻画,如同高斯分布一样,也是用均值和方差来刻画。通常在应用高斯过程 $f∼GP(\mu,K)$的方法中,都是假设均值$m\mu为零,而协方差函数$$K$则是根据具体应用而定。
  • 高斯回归的本质其实就是通过一个映射把自变量从低维空间映射到高维空间(类似于支持向量机中的核函数将低维线性不可分映射为高维线性可分),只需找到合适的核函数,就可以知道 $p(f|x,X,y)$的分布,最常用的就是高斯核函数

4. 机器学习中的高斯过程

针对机器学习的高斯过程(Gaussian Processes for Machine Learning,即 GPML) 是一个通用的监督学习方法,主要被设计用来解决回归问题。 它也可以扩展为概率分类(probabilistic classification),但是在当前的实现中,这只是回归学习的一个后续处理。

GPML的优势如下:

  • 预测是对观察值的插值(至少在普通相关模型上是的).
  • 预测是带有概率的(Gaussian)。所以可以用来计算经验置信区间和超越概率 以便对感兴趣的区域重新拟合(在线拟合,自适应拟合)预测。
  • 多样性: 可以指定不同的线性回归模型 linear regression models 和相关模型 correlation models 。 它提供了普通模型,但也能指定其它静态的自定义模型

GPML的缺点如下:

  • 不是稀疏的,它使用全部的样本/特征信息来做预测。
  • 多维空间下会变得低效 – 即当特征的数量超过几十个,它可能确实会表现很差,而且计算效率下降。
  • 分类只是一个后处理过程, 意味着要建模,首先需要提供试验的完整浮点精度标量输出 y 来解决回归问题。

5. GP建模时的问题

用GP对数据建模,首先得考虑下面几个问题:
(1)如何选择核函数
选什么核函数(这点非常重要)?选最常用的SE还是SMP还是混合(基于对数据的理解)?
(2)超参数物理含义是什么?
训练完模型后,大部分情况下测试效果不会很好,再回头看看学到的超参数变化如何?那么问题来了,这些超参数又代表什么物理含义呢(基于对核函数的理解)?
(3)非高斯似然函数
对常见的分类任务来说,似然非高斯分布,此时共轭优势不复存在,如何找到最有效逼近后验的方法(EP?VI?)
(4)异方差
事实上,很多标签都不是简单的高斯分布,甚至标签噪声都是异方差分布(比如标签值跨度超多几个数量级),又该如何解决(可参考warped GPs)?

  1. 透彻理解高斯过程Gaussian Process (GP)
  2. [重点]机器学习-高斯过程和随机过程回归
  3. 机器学习中的高斯过程
  4. 高斯过程视频讲解
  5. [视频]Gaussian processes - definition and first examples
  6. [视频]Machine learning - Introduction to Gaussian processes
  7. 如何通俗易懂的理解高斯过程
  8. 高斯过程-维基百科)
  9. 可视化理解高斯过程