高斯过程在机器学习中的应用与训练

本文我们将对高斯过程回归模型给出基本介绍,研究的重点在于理解随机过程的含义和如何用它去定义一个分布函数,同时提出了一个简单的方程,它可以结合训练数据并应用边缘概率密度来学习超参数。本文阐述了高斯过程的实际应用优势,并证明高斯过程是适合当前时代趋势的。

以回归(对于连续输出)和分类(对于离散输出)形式的机器学习是统计学和机器学习非常重要的组成部分,无论是对于大量数据的分析,或是对于一个更加复杂问题中的子目标的解决。在这篇短文中,提出了一个基于高斯过程的贝叶斯回归方程的建模方法。我们主要关注如何理解随机过程和如何将他在机器学习中应用。另外,我们将讨论关于超参数在协方差函数中的作用的切实问题、边缘概率密度和奥卡姆剃刀原则的问题。更加详细关于高斯过程的介绍,请看参考文献[1][2]

关键词:回归模型  参数模型  超参数  高斯过程

 

 

一、     前言

利用数据中所蕴含的有用信息建立决策在人类发展进程中具有悠久的历史与广泛的应用。游牧民族随着季节的变化逐水草而居;猎人利用动物的迁徙信息来捕捉猎物;政客通过民意调查来调整自己的主政方针。随着信息技术的飞速发展,社会生活的各个领域都积累了规模庞大、内容复杂的数据,而传统的手工分析和处理数据的方式已远不能满足需求。因此,如何利用计算机对数据进行分析、处理,进而发掘其蕴含的有用信息,已成为几乎所有领域的共同需求。正是在这样的大趋势下,机器学习技术受到了人们广泛地关注。

机器学习最早是作为人工智能学科的一个研究分支诞生的,其最初的动机是研究计算机怎样模拟或实现人类的学习行为。众所周知,一个不具备学习能力的智能系统难以称得上是一个真正的智能系统,但是早期的智能系统都普遍缺少学习的能力,它们遇到错误时不能自我校正,不会通过经验改善自身的性能,不会自动获取和发现所需要的知识,随着人工智能的深入发展,特别是20世纪70年代中期大量专家系统的问世,这些局限性表现得愈加突出。正是在这种情形下,机器学习逐渐诞生并迅速成为了人工智能领域的一个重要分支。在机器学习的早期研究中,科研工作者主要是研究如何利用经验来改善计算机系统自身的性能。事实上,由于"经验"在计算机系统中主要是以数据的形式存在的,这就使得机器学习具有了数据分析的能力。20世纪90年代以来,随着获取数据的手段和技术的进步,人们迫切需要将大量的数据转换成有用的信息和知识,机器学习技术的数据分析潜力受到了人们越来越多的关注,使其逐渐成为了智能数据分析技术的创新源之一。经过二十年的飞速发展,机器学习目前已经成为了一个子领域众多、内涵非常丰富的学科领域,成为了一种支持与服务技术,并且被广泛地应用于电子商务、生物信息、医疗诊断、控制工程、航空航天、计算金融学、机器人等各个领域。正如美国NASA-JPL实验室的科学家在《Science》的文章所述,机器学习对科学研究的整个过程正起到越来越大的支持作用,并将对科学技术的发展发挥更大的促进作用。机器学习现阶段的主要目的是针对不同学科领域对数据分析的需求,找出其中具有共性的问题,进而着手研究。

聚类、回归、分类和强化学习是应用领域最广、研究最早的四个方向,许多优秀的机器学习方法(如决策树、神经网络、支持向量机等)都是在对它们的研究过程中发展起来的。本文就通过使用基于高斯过程的贝叶斯回归方程对连续变量的回归进行分析。高斯过程模型是最近十多年刚发展起来的一种基于贝叶斯框架的核方法。与支持向量机相比,高斯过程模型除具有前面提到的几个优点外,还具有为模型选择提供了一套完整的理论、预测输出的概率解释、易于实现等优点。近几年来,关于高斯过程模型的研究已逐渐成为机器学习领域的一个热点,因此,不论是对其进行理论上的发展和完善还是应用上的拓广都对推动机器学习领域的发展具有重要意义。

 

 

二、高斯过程介绍

在这部分定义了高斯过程,并且展示它们是如何非常自然的被应用于定义分布函数 。接下来的部分,我们继续展示这个分布函数是如何通过训练数据更新的。

定义:高斯过程是一个随机变量的集合,其中任何有限的数字都有共同的高斯分布。

一个高斯过程可以被它的均值函数m(x)和协方差函数k(x,x’)完全的定义。分别将均值函数和协方差函数表示成向量和矩阵,这是一个对高斯分布的自然推广。高斯分布用向量表示,而高斯过程用函数表示。如此有:

                                              (1)

意思是:“f是由均值函数m和协方差函数k定义的高斯分布函数。”

虽然从分布到过程的概括比较直截了当,我们会略详细地解释一下细节,因为它可能对一些读者来说没那么熟悉。高斯向量中的单个随机变量可以被他们的位置向量索引到。高斯过程中,有一个参数x(随机函数f(x)中的)起到了索引集的角色:每一个输入x都有一个相联系的随机变量f(x),这是(随机)函数f在x处的取值。为了识记方便,我们用自然数来列举x的值,并且用这些来索引他们在随机过程中的位置。本文我们对随机过程的索引并不是用xi表示,而是选择用i来表示索引。

虽然与无限维对象工作可能在起初看起来很笨拙,但是经过大量计算证明,这只需要与有限维对象工作就可以完成。实际上,找到用相关分布函数减少随机过程运算量的答案,这才是高斯过程可行性的关键。让我们看一个例子,考虑如下方程给出的高斯过程:

 


                                                              (2)

为了更加直观地理解这个随机过程,我们可以用函数f画出采样图。为了只与有限数据进行处理,我们只要求在不同有限数字n代表的位置的f的取值。我们如何产生这样的采样呢?给出不同x的取值,我们可以用定义了一个标准高斯分布的方程计算出均值向量和协方差矩阵:

                       (3)

我们用m和k代表高斯过程的参数,用μ和∑代表分布函数的参数,来清楚地区分它们。我们现在可以通过这个分布函数创造出一组随机向量。这个向量会作为坐标的函数,由x的值得到相应的f(x)的值。

                                                      (4)

图1

这是由一个确定的高斯随机过程方程随机3次画出的3个函数的函数图像。图中的点是由方程算出的,另外两条曲线(虚线)是连接采样点画出的。函数值体现了一个平滑的基础函数;这实际上是高斯随机过程与平方指数的协方差函数的性质的体现。阴影灰色部分代表了95%的置信区间。

我们现在就可以画出f的函数值与x的关系图,如图1。我们实际上如何完成这件事?下面的几句Matlab科学计算工具代码可以用来画出上图。代码如下:

xs =(-5:0.2:5)’; ns = size(xs,1); keps = 1e-9;

m =inline(’0.25*x.^2’);

K =inline(’exp(-0.5*(repmat(p’’,size(q))-repmat(q,size(p’’))).^2)’);

fs = m(xs) +chol(K(xs,xs)+keps*eye(ns))’*randn(ns,1);

plot(xs,fs,’.’)

上面的例子里,m和k是均值和协方差;chol是一个实现计算矩阵的Cholesky分解(我们还为了数值稳定添加了多重协方差矩阵(限制特征值的数值不为0);有兴趣的话可以查看公式(8)附近的解释)的函数。

这个例子说明了我们如何从过程转变成分布,同时说明了高斯过程定义了一个分布函数。到此,我们只考虑了随机函数在下一部分,我们会看到一个非常简单的应用高斯随机过程建模的方法来进行数据推测训练的例子。

 

三、后验高斯过程

在前一个部分,我们看到了如何应用高斯过程来定义概率分布函数。这个高斯过程将被优先用于贝叶斯推理,这不依赖于训练数据,而是依靠一些函数的内容;举例来说,图1里的函数是平滑的,并且接近于二次方程函数。本部分的目标是找到一个简单的规则来更新之前的训练数据。下一部分的目标是试图根据之前(根据定义,先验概率对于数据是独立的,在这里我们用一个有自由参数的多层先验概率,并且用它来推测参数。)得到的数据找到一些性质。

计算后验概率的主要目的是它们可以用来预测看不到的实验因素。用f表示已知训练数据的函数值, 用f*表示一系列对应输入X*的函数值。再一次,我们写出了我们有兴趣的所有参数的联合分布:

                                        (5)

其中,我们已经介绍过的标识:μ=m(xi),i=1,2,……,n是已知训练数据的均值,类似地μ*是训练后的均值;∑是训练数据的协方差,∑*是训练前数据与训练后数据的协方差,∑**是训练后数据的协方差。到此,由我们知道的训练数据f的值我们可以的出我们感兴趣的f*在f条件下的条件概率,决定高斯联合分布的公式是:

       (6)

这是一个对于特定实验情况的后验概率分布。很容易验证(根据检验),对应的后验概率过程是:

              (7)

其中∑(X,x)是每个训练数据和x之前的协方差向量。这些是高斯过程预测的核心方程。我们来测试一下这些方程的后验均值和协方差。注意到后验方差kD(x,x)等于先验方差k(x,x)减去一个依赖于训练数据输入的确定的部分;因此只要数据给了我们额外的信息,后验方差就永远小于先验方差。

我们需要解决最后一件事情:训练输出数据中的噪声。对于许多回归的应用的来说,在观察中存在噪声是非常正常的事情(然而,可能非常有趣的是高斯过程模型也在无噪声的情况下运行-这和大多数参数化方法相反,因此它们通常无法正确地对数据建模。)。最常规的措施是在输出处加上独立同分布的高斯噪声。在高斯过程模型中,这样的噪声是应该被考虑在内的;这样做的效果就是每个f(x)都有一个额外的与他自己的协方差(只要噪声被假设是独立的),这个值等于噪声方差:

                          (8)

其中当且仅当i=I’时δii’=1,这是一个克罗内克函数。注意到,克罗内克函数的指数在确定的情况下,i,而不是输入xi;你可能有几例相同的输入,但是这些情况下的噪声都被认为是独立的。因此,一个有噪声的随机过程的协方差函数是信号协方差和噪声协方差的总和。

现在,我们把后验协方差函数插入到Matlab软件范例的第69页去根据后验过程画一个样本,便得到了图2。在这一部分,我们展示了如何简单地应用均值和协方差函数来根据训练数据由先验概率更新到后验概率。然而,我们遗留下了几个还没有被回答的问题:我们在最初如何写出均值和协方差函数?我们如何估计噪声等级?这就是下一部分的内容了。

图2

由已知的20个训练数据根据后验概率函数画出的随机的3个函数图像,高斯过程由公式(3)和噪声等级为σn=0.7两个条件确定。阴影部分是95%的置信区间。对比图1,我们观察到不确定性有了明显下降,已经接近预测的情况。

 

四、训练一个高斯过程

在之前的部分我们看到了如何根据训练数据来更新先验高斯过程分布。如果我们手上有足够的关于数据的初始信息,我们就可以自信的指定先验均值和协方差函数,这是非常有用的。但是,得到如此细致的初始信息的可行性在机器学习应用方面并不是一个典型的情况。为了使高斯过程技术在实践中更有应用价值,我们必须根据数据选择对应的不同的均值函数和协方差函数。这个过程就被称为训练(训练高斯过程模型涉及到模型的选择,也涉及到在不同的均值函数和协方差函数的函数形式之间离散选择来适应这些函数的超参数;为了简便起见,我们在这里只考虑后者,在这种情况下边缘概率密度是可以被比较的)高斯过程模型。

根据通常比较模糊的先验信息,我们使用了一个分层次的先验概率,其中均值函数和协方差函数都被参数化为超参数。举例来说,我们可以用公式(2)做一个总结:

 

 

                               ()                               (9)    

其中我们认为超参数θ={a,b,c,σy,σn,l}。这种特定的分级目的是这让我们可以用一种简单的方法确定了模糊的先验信息。举例来说,我们在开始的时候说了我们相信这个函数很接近一个二阶多项式的样子,但是我们没有确定地说明什么是多项式,也没有说明“接近”到了什么程度。事实上,多项式和数据之间的区别是一个平滑的函数加上独立的高斯噪声,但是我们又一次不需要确定特征长度l的等级或是两个参数的值。我们想要根据数据对所有超参数进行推测。

为了完成这项工作,我们计算了超参数给定的数据的可能性。幸运的是,这不是很难,只要假设数据的分布符合高斯分布:

 


                                                                (10)

我们将调用这个数量级的对数边缘概率密度。我们用“边缘”这个词来强调我们正在和一个没有参数的模型进行工作。例子1展示了高斯过程的权重空间,相当于方程(10)。使用权重边缘化。

我们现在可以通过求边缘概率分布的偏导数来很简单地找到超参数的值。

 

 

 

 


                                                               (11)

其中θm和θk分别用来表示均值函数和协方差函数的超参数。方程(11)很方便地和一个共轭梯度等数值优化程序联系起来找到一个适合的(说明,对于大多数不是很微小的高斯过程,优化超参数这个工作不是一个很困难的问题,所以通常预测应采取防止局部最小值的措施)超参数值的设定。

图3-1

这是由最大边缘似然函数得到的均值和95%后验置信区间的图,方程(10),是由方程(9)的高斯过程确认的,数据和图2的相同。超参数的值是a=0.3,b=0.03,c=-0.7,σy=1.1,σn=0.25。这个例子说明没有超参数优化方法,同样可以实现得相当好(图2),但是当然,它没有这种方法在典型应用中更有保障性。

由于实际上高斯过程是一个无参数模型,它的边缘概率密度看起来与人们经验中的有参数的模型多少有一些区别。事先说明的是,事实上模型确实对训练数据非常适合:简单地使噪声等级σn2为0,然后模型就创造了一个与训练数据点十分吻合的均值预测函数。但是,这不是一个优化边缘似然函数的典型表现。实际上,公式(10)中的对数边缘似然函数包括三个条件:第一个条件          是一个复杂的不利条件,它估量了模型的复杂度,使模型处于不利的情况。第二个条件是一个负二项式,它负责了对测量数据的拟合(这是一个仅有的依靠训练输出值y的条件)。第三个条件是对数标准化,独立于数据,不是很受人关注。图3-1体现了被最大边缘似然函数训练的预测模型。

注意到高斯过程中的惩罚和数据之间的权衡是自动的。没有加权参数需要设置一些外部的方法,如交叉验证。这是具有重要意义的特征,因为它简化了训练。图3-2说明了如何进行自动权衡。

在这一部分我们看到了,通过对先验概率的多层次分级,我们找到了一种可以学习出先验知识的非常方便的方法,以及通过对边缘概率函数的优化来学习了超参数的值。这可以被一些基于梯度的优化所使用。而且,我们也看到了边缘概率密度是如何采用奥卡姆剃刀的;这个性质有重要的实践意义,因为它使训练过程大幅碱化。

图3-2X轴:所有可能的数据集,Y轴:数据给予模型的可能性

图3-2奥卡姆剃刀是自动的。x轴表现的是抽象的所有可能的数据(在一个特定的大小上)。y轴是数据给予模型的可能性。这里同时显示了3个不同的模型。一个更加复杂的模型比一个简单的模型可以说明更多数据集,但是由于概率必须统一整合,这表示更加复杂的模型会被自动惩罚更多。

 

 

五、总结和对未来的展望

我们已经看到的高斯过程是如何方便地确定复杂的非线性回归方程的。我们只是顺便提到了一种类型的协方差函数,但事实上任何正定函数(协方差函数必须是正定的,来保证作为结果的协方差矩阵也是正定的。)都可以作为协方差函数。许多这样的函数是已知的,了解有特定协方差函数的高斯过程画出的函数的性质是一个正在研究的重要目标。如果了解了这些函数的性质,它就可以选择协方差函数来反映之前的信息,或者作为替代,它可以体现被最大边缘概率密度选择的协方差函数,以此来对数据有更丰富的认识。

在这个短暂的学习过程中,我们只是处理了最简单的带有高斯噪声的回归模型。在无高斯分布(比如需要分类的)的时候,训练就变得很复杂。我们可以采用逼近的办法,比如拉普拉斯逼近方法,或者采用把无高斯的模型看成最接近的高斯模型或者采样方面的技术。

另外一个问题是计算量复杂度的限制。在这里解释一个简单的实现技术,需要协方差矩阵∑的逆,需要O(n2)的记忆复杂度和O(n3)的计算复杂度。这对于在台式电脑上的由n到几千的数据集是可行的。虽然对于这种相对小的数据集有很多有趣的机器学习的问题,很多现在正在进行的研究都在发展对于更大数据集的逼近方法。许多这些方法依赖于稀疏近似。

高斯过程在机器学习中的应用广泛还有诸如:多示例学习、多标签学习、多示例多标签学习、多任务学习。我将通过本文提到的基础知识和得到的认识,结合机器学习的框架,对这些应用进行进一步研究。

六、参考文献

[1] Williams, C.K.I.: Prediction with Gaussian processes:From linear regression to linear prediction and beyond. In Jordan, M.I., ed.:Learning in Graphical Models. Kluwer Academic (1998) 599–621

[2] MacKay, D.J.C.: Gaussian processes — a replacement forsupervised neural networks? Tutorial lecture notes for NIPS 1997 (1997)

[3] Williams, C.K.I., Barber, D.: Bayesian classificationwith Gaussian processes. IEEE Transactions on PatternAnalysis and Machine Intelligence 20(12) (1998) 1342–1351

[4] Csat´o, L., Opper, M.: Sparse on-line Gaussian processes.Neural Computation 14 (2002) 641–668

[5] Neal, R.M.: Regression and classification using Gaussianprocess priors (with discussion). In Bernardo, J.M., et al., eds.: Bayesianstatistics 6. Oxford University Press (1998) 475–501*

没有更多推荐了,返回首页