python 高斯烟羽模型_GPR(高斯过程回归)详细推导

GPR(高斯过程回归)详细推导

一、综述

GPR来源于线性模型,有两种方式可以推导出GPR,一种是weight space view,另外一种是function space view。两者考察方式假设不同,关注的对象不同,但是最后导出的结果是相同的。其中,function view的推导方式更加简单,GPR最终的为了实现回归,即已知X,y,x*,求y*。最终的推导出的公式如下:

4e49ed27d8b198ae614b4891a5e0a4c2.png

X,y是已知的数据,我们要求未知数据x*处的函数值,K是核函数。我们接下来会从weight space view和function space view两种方式推导出GPR。最后一部分是GPR的算法流程图。

参考资料:

1.《Gaussian Processes for Machine Learning》

2. https://www.bilibili.com/video/BV1aE411o7qd?p=114

3. https://zhuanlan.zhihu.com/p/75589452 (python的代码演示,包含可视化)

4. python的GPy库和MATLAB中的ooDACE里面集成有GPR

二、weight space view(将w看作变量)

我们考虑下面一个问题:

af261c11dfd88a58144d30c8a3e78f3a.png

这是一个线性模型,GPR的想法就是把w看做正态分布的随机变量,求出了w的分布,就知道了y的分布。这里的ε是噪声,在推导中是必须的。如果把

ε=0就是一个无噪的预测,考虑到ε的影响就是一个有噪声的预测。

整个推导分成三部分:

1.已知w的先验分布,通过更多的数据(X,y)求得w的后验分布

2.已知w的后验分布,就能求得f*的概率分布(可以简单地理解为用

来代替)

3.将f*概率分布中均值和方差写成核函数的形式,这个形式与function space view推导出的结果一致,完成!

注:本文的所有推导前面是推导的主干部分,细致的证明在后面。

2.1 w的后验分布

如果我们已经知道了w的确定值,要预测xi处的函数值yi可以表达如下:

78df650e7efb78cfb6243940ab3e5388.png

上述公式写出了某一点的预测值yi,如果有多个点的值需要预测,将每个点的值看作是独立的,可以得到

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第1张图片

由于我们不知道w的分布是怎样的,我们可以假设w的先验为,p是代表先验prior的意思。

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第2张图片

这里的p(y|X)是marginal likelihood, GPR中的超参数调节就是使得marginal likelihood最大!

fefb92ad58a72655828885318fcf0491.png

由于p(y|X)与w无关,我们把w看作变量,p(y|X)是一个常量,因此

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第3张图片

所以即为我们要求的后验概率。随着数据的增多,后验概率会逐渐地逼近w的真实概率。

证明部分:

(2-2)想要求yi的概率密度函数,可以通过概率分布的微分来求得。

f980d8af5371d38a9f8fcb1bbbf263a1.png

所以对概率分布函数求导即可得到概率密度函数:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第4张图片

(2-5)这个公式为贝叶斯公式,用条件概率证明即可。

X为常量,先不看X,根据条件概率,则

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第5张图片

(2-7)这个等式的证明不复杂,两边展开对应相等即可。上述等式成立,常数可以不用看,只要指数部分相等即可,因为常数可以通过概率密度积分为1这个条件来得到。上式等价于证明下式

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第6张图片

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第7张图片

所以等式左边=等式右边,得证!

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第8张图片

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第9张图片

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第10张图片

2.2 f*的概率分布

我们已知了w的后验分布,结合线性关系,就能知道预测点x*的函数值

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第11张图片

从可以看出,预测值实际上就是在w的基础上均值乘以x*,方差乘以x*Tx,这有专门的定理可以证明,一步得出,详细推导过程在本节最后。

由于原来是基底是x本身,拟合你能力有限,为了提高模型的描述能力,我们可以选择某种函数把输入的D维空间映射到N维空间,即:

de054cc34f79bd5398c5b83ee80f8585.png

注意到,我们把w看成变量的时候,phi(x)是常数,该模型对于w而言仍然是线性的,以上的结论仍然可以用。因此:

fd08f8a798c2458f7fadf8c69b0c66af.png

这是我们想要得到的内容:对f*的预测,但还不是最终的形式,因为此时它跟phi(x)还有关系。为了简便,我们还需做转换

证明部分:

(2-9)有一个定理可以直接证明:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第12张图片

2.3 核函数形式

931532a4995c96d051afeb703178b085.png

(2-11)和(2-12)完全相同,只是换了一个形式而已,但是这样就能得到我们想要的核函数形式!

定义核函数:

b550fcdee807e8b84d07dc60bbbf0a79.png

所以上式可以改写为:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第13张图片

因为Σp为正定矩阵,所以

c39bcd13614644d31fe634911c81280e.png

这样就定义了一个内积形式,这种方法被称作kernel trick。

证明部分:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第14张图片

三、function space view(将f看作多维随机变量)

1.对于高斯过程的基本认识

定义:高斯过程是一组随机变量的组合,任意有限个变量都服从联合高斯分布。

8f1a1e699ebf29e13f98859d75e3fa1c.png

为了推导出GPR,我们仍然假设用贝叶斯线性回归模型和w的先验

a54a712260be2fd71ee6925f92b25e38.png

这样就能求出均值和方差

47e6127d876b1aa793ef3120a5b84527.png

协方差函数,即核函数,我们经常取squared exponential

3841dc6c640f10f8061d1ae33881c782.png

2.高斯回归推导

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第15张图片

重新整理一下,可得:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第16张图片

这就变成了一个已知联合高斯分布,求条件概率。这个问题有标准解法,直接套用公式即可,详细推导过程在后面(我们假设均值为0 ):

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第17张图片

考虑到y是f(x)加上噪声,则分布为

b65c46bcc4b2b637312c40dacf99fe60.png

如果噪声为0,即为noise-free的预测:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第18张图片

推导完成!

证明部分:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第19张图片

定理证明:

证明这个定理使用的是构造法,还需要用到上一章提到的一个定理,会用两次,在这里我重新写一遍:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第20张图片

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第21张图片

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第22张图片

可以根据上面上式来求得xb|a,,因为求的是条件概率,此时和a有关的量都可以看作已知量,所以:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第23张图片

得证!

四、GPR算法流程图

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第24张图片

GPR的算法流程可以从上述公式中做出说明:

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第25张图片

在GPR建模中核函数里面的参数称为超参数,调节这些超参数的标准就是最大化marginal likelihood p(y|X)。

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第26张图片

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第27张图片

五、数学基础

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第28张图片

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第29张图片

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第30张图片

python 高斯烟羽模型_GPR(高斯过程回归)详细推导_第31张图片

你可能感兴趣的:(python,高斯烟羽模型)