✅ 操作成功!

高斯过程

发布时间:2023-06-16 作者:admin 来源:文学

高斯过程

高斯过程

-

2023年3月19日发(作者:酥鱼的正宗做法)

⾼斯过程回归(GaussianProcessRegression)

先说⼀说⾼斯过程回归的Intuition:

假设有⼀个未知的函数f:R–>R,

在训练集中,我们有3个点x_1,x_2,x_3,以及这3个点对应的结果,f1,f2,f3.(如图)这三个返回值可以有噪声,也可以没有。我们先假设没

有。

sofarsogood.没什么惊讶的事情。

⾼斯过程回归的关键假设是:

给定⼀些X的值,我们对Y建模,并假设对应的这些Y值服从联合正态分布!

(更正式的定义后⾯会说到)

换⾔之,对于上⾯的例⼦,我们的假设是:

⼀般来说,这个联合正态分布的均值向量不⽤操⼼,假设成0就蛮好。(讲到后⾯你就知道为什么了)

所以关键是,这个模型的协⽅差矩阵K从哪⼉来。

为了解答这个问题,我们进⾏了另⼀个重要假设:

如果两个x⽐较相似(eg,离得⽐较近),那么对应的y值的相关性也就较⾼。换⾔之,协⽅差矩阵是X的函数。(⽽不是y的函数)

具体⽽⾔,对于上⾯的例⼦,由于x3和x2离得⽐较近,所以我们假设f3和f2的correlation要⽐f3和f1的correlation⾼。

话句话说,我们可以假设协⽅差矩阵的每个元素为对应的两个x值的⼀个相似性度量:

那么问题来了,这个相似性怎么算?如何保证这个相似性度量所产⽣的矩阵是⼀个合法的协⽅差矩阵?

好,现在不要往下看了,你⾃⼰想3分钟。你也能想出来的。提⽰:合法的协⽅差矩阵就是(symmetric)PositiveSemi-definiteMatrix

(。。。。。。。。。。。。思考中)

好了时间到。

答案:Kernelfunctions!

如果你了解SVM的话,就会接触过⼀个著名的MercerTheorem,(当然如果你了解泛函分析的话也会接触过),这个M定理是在说:⼀个

矩阵是PositiveSemi-definiteMatrix当且仅当该矩阵是⼀个MercerKernel.

所以我们在svm⾥⽤过的任何Kernel都能拿过来⽤!

举个栗⼦,在⾼斯过程回归⾥,⼀种⾮常常见的Kernel就是SVM⾥⾯著名的⾼斯核(但是为了让命名不是那么混淆,⽂献中⼀般把这个

Kernel称作squaredexponentialkernel.

具体⽽⾔就是

好了,现在可以做回归分析了:

如果我们现在⼜有了⼀个新的点x*

这个新的点对应的f*怎么求?(如下图)

根据假设,我们假设f*和训练集⾥的f1,f2,f3同属于⼀个(4维的)联合正态分布!

也就是说,不仅f1,f2,f3属于⼀个3维的联合正态分布(参数可以算出来),⽽且f*和f1,f2,f3属于(另⼀个)4维的联合正态分布,⽤数学

的语⾔来表达就是:

⾸先我们来看⼀看,这个4x4的矩阵能不能算出来:

黄⾊的⼤K,是依据训练集的3维联合分布算出来的,绿⾊的K*,是测试点x*分别和每⼀个训练集的x求出来的。所以整个联合分布我们都

知道了。

接下来的事情就好办了,我们既然已经知道(f,f*)的联合分布P(f,f*)的所有参数,如何求p(f*)?好消息是这个联合分布是正态的,我们直接

⽤公式就能搞出来下⾯的结果(usingthemarginalizationproperty):

不难求出f*⾪属于⼀个1维的正态分布,参数是:

所以这是⼀种贝叶斯⽅法,和OLS回归不同,这个⽅法给出了预测值所⾪属的整个(后验)概率分布的。再强调⼀下,我们得到的是f*的

整个分布!不是⼀个点估计,⽽是整个分布啊同志们。

Inaddition,不仅可以得到f*这⼀个点的分布,我们对这个未知的函数也可以进⾏推断!换⾔之,如果把⼀个函数想成⼀个变量,那

么⾼斯过程回归可以求出这个函数的分布来。(distributionoverfunctions)

不幸的是,我们的计算机只能存储离散的数据,怎么表⽰⼀个连续的函数呢?

好办,我们对⼀个区间⾥⾯均匀地硬造出来1万个测试点x*,然后求出这些测试点和训练集所对应的y(⼀个巨⾼维的向量)的联合分布,然

后在这个巨⾼维的联合分布⾥采样⼀次,就得到了函数的(近似的)⼀个样本。

⽐如训练集就三个点,测试集1万个x,图中的每⼀个红点就分别是这些点f*的均值,(当点很多的时候,就可以假设是⼀个“连续”的函数

了)⽽蓝⾊的线代表⼀个或两个标准差的bound.

我们如果从这个分布中采样10次,就可以得到10个巨⾼维的向量,也就是从这个后验概率中sample出来的10个函数的出来长

这个样⼦:

含有已知数据(训练集)的地⽅,这些函数都离的很近(variance很低),没有数据的时候,这个spread就⽐较⼤。

也许你会问:我为⽑要搞出来函数的分布?我为⽑要关⼼这个variance.在很多问题中,我们不仅仅需要知道预测值的点估计,⽽且要知道

这个估计有多少信⼼在⾥⾯(这也是贝叶斯⽅法的好处之⼀)

举个例⼦:MultipleBanditProblem

假设我们已经有了⼏个油井,每个油井的价值不⼀样,我们在这个⼆维平⾯上,利⽤⾼斯过程回归,对每⼀个地理位置估计⼀个该位

置对应的出油量。

⽽开发每⼀⼝井是有成本的,在预算有限的情况下,如果想尽可能少地花钱,我们就需要定义⼀个效益函数,同⾼斯过程回归的预测

结果相结合,来指导我们下⼀次在哪⼉打井。这个效益函数往往是预测值和⽅差的⼀个函数。

以上这个例⼦,就是⾼斯过程回归在贝叶斯优化中的⼀个典型应⽤。有时间专门写⼀篇。

好了,现在终于可以讲⼀讲⾼斯过程了。

⾼斯过程是在函数上的正态分布。(Gaussiandistributionoverfunctions)

具体⽽⾔就是

我们具体⽤的时候,模型假设是酱紫的:

我们观察到⼀个训练集D

给定⼀个测试集X*(X*是⼀个N*xD的矩阵,D是每⼀个点的维度)我们希望得到⼀个N*维的预测向量f*.⾼斯过程回归的模型假设

然后根据贝叶斯回归的⽅法,我们可以求出来f*的后验概率:

Thisisit.要啥有啥了。

下⾯着重说⼀下有噪声情况下的结果,以及此情况下和RidgeRegression的神秘联系。

当观测点有噪声时候,即,y=f(x)+noise,wherenoise~N(0,sigma^2)

我们有

发现没,唯⼀区别就是K变成了Ky,也就是多加了⼀个sigma。

这个很像是⼀种regularization.确实如此。

好了,下⾯就说说这个GPR的insight,这个模型到底想⼲什么

如果只有⼀个测试点,那么输出的f*就是⾪属于⼀个1维的正态分布了,具体⽽⾔:

再看,我们回想⼀下RidgeRegression(⼩编注:下图argmax应为argmin)

我们仔细观察⼀下上⾯那个蓝⾊的框框

所以说,ridge回归是⼀种最最最最简单的⾼斯过程回归,核函数就是简单的点积!

⽽⾼斯过程的核函数可以有很多,除了上⾯提到的squaredexponential,有整整⼀本书都在讲各种kernel和对应的随机过程

所以⾼斯过程是⼀个⾮常包罗万象的根基,类似于⼩⽆相功。

👁️ 阅读量:0