高斯过程回归(Gaussian Process Regression, GPR)的理解1——权重空间角度

核心预备知识

  1. 能够区分频率学派和贝叶斯学派求解模型时的思想区别。
  2. 熟悉最基础的概率运算公式(本科内容)。
  3. 熟悉线性代数以及微积分的运算(本科内容)。
  4. 熟悉贝叶斯公式,并能理解后验以及先验所代表的物理含义。
  5. 了解核方法,核技巧的定义。
  6. 熟悉多维高斯分布的运算规则。

1.基于贝叶斯线性回归推导GPR

1.1 贝叶斯线性回归的基本模型

在理解GPR之前,我们先了解一个算法,叫做贝叶斯线性回归(Bayesian Linear Regression, BLR)。本质上,GPR就是将BLR进行了非线性化处理后得到的。因此,我们会对BLR进行详细的推导。如果你这部分能够自己推导出来,那也就相当于把GPR给推导出来了。
首先给出贝叶斯线性回归的基本公式:
y = X W T + ε y=XW^T+\varepsilon y=XWT+ε
其中 X = [ x 1 , x 2 , . . . , x i , . . . , x N ] T X=[x_1,x_2,...,x_i,...,x_N]^T X=[x1,x2,...,xi,...,xN]T x i ∈ R v x_i\in\mathbb{R}^v xiRv W = [ w 1 , w 2 , . . . , w v ] W=[w_1,w_2,...,w_v] W=[w1,w2,...,wv] ε ∼ N ( 0 , σ n 2 ) \varepsilon\sim N(0,\sigma_n^2) εN(0σn2)是一个服从零均值,方差为 σ n 2 \sigma_n^2 σn2的噪音变量,这个变量独立于任何随机变量。贝叶斯学派认为,上述公式中的参数 W W W也是服从一个分布的,因此,这里给这个参数设定一个先验分布以表示“我们认为这个参数大致应该在什么范围波动”。即 p ( W ) = N ( 0 , ∑ w ) p(W)=N(0,{\textstyle \sum_{w}}) p(W)=N(0w)

1.1.1 贝叶斯线性回归所属学派

在开始推导之前,我们简单的说一个基础概念,也就是目前机器学习或者说是数据挖掘算法的两种求解参数的思考模式。

  1. 基于贝叶斯学派的思考模式:我们需要解决的问题是——“在已有了部分数据的条件下, W W W的后验分布 p ( W ∣ S ) p(W|S) p(WS)是怎样的。在我们求得后验分布后,再求导获得最优参数值。(如果是高斯分布,那就直接取均值作为一个最优的参数值即可)。”,这个方法的典型代表就是最大后验估计(MAP)。
  2. 基于频率学派的思考模式:我们需要解决的问题是——“在已有了部分数据的条件下, W W W应该取什么值才是最有可能使得还原后的 y ^ \hat{y} y^与原始数据中的 y y y差距最小”,这个方法典型代表就是极大似然估计(MLE)。

而BLR则是属于第一种思考方式。因此BLR的目的是在给定数据后,推导出 W W W的后验分布—— p ( W ∣ T r a i n i n g D a t a ) p(W|TrainingData) p(WTrainingData)。这一步也叫inference步,也就是推导步骤。下面我们来详细的推导一下这一步。

1.1.2 BLR模型推导——Inference

我们假定现在有一个含 N N N个样本的数据集 S = { ( x i , y i ) } i = 1 N S=\left \{ (x_i,y_i) \right \}_{i=1}^{N} S={(xi,yi)}i=1N,其中 x i ∈ R v x_i\in\mathbb{R}^v xiRv y i ∈ R y_i\in\mathbb{R} yiR X = [ x 1 , x 2 , . . . , x N ] T , Y = [ y 1 , y 2 , . . . , y N ] T X=[x_1,x_2,...,x_N]^T,Y=[y_1,y_2,...,y_N]^T X=[x1,x2,...,xN]TY=[y1,y2,...,yN]T。这时,已经明确了我们需要推导的目标是 p ( W ∣ S ) p(W|S) p(WS)。此时,我们需要整理出现在已知的信息。
整理:

  1. 第一个已知知识
    根据BLR的定义以及噪音的定义,并根据基本的高斯概率求和法则,我们可以知道: p ( y i ∣ x i , W ) = N ( x i T W , σ n 2 ) p(y_i|x_i,W)=N(x_i^TW,\sigma_n^2) p(yixi,W)=N(xiTWσn2)。随后我们将 S S S中的数据带入进行联乘,就可以得到下式的具体表达式:
    p ( Y ∣ X , W ) = ∏ i = 1 N p ( y i ∣ x i , W ) p(Y|X,W)= \prod_{i=1}^{N}p(y_i|x_i,W) p(YX,W)=i=1Np(yixi,W)
  2. 第二个已知知识
    根据贝叶斯学派的定义,认为参数W的先验是服从一个高斯分布的,即:
    p ( W ) = N ( 0 , ∑ w ) p(W)=N(0,{\textstyle \sum_{w}}) p(W)=N(0w)

已知的信息就整理完毕了。那么如何利用这两点已知信息去求取 p ( W ∣ S ) p(W|S) p(WS)的表达式就是接下来要推导的步骤。

  1. Inference步:
    首先依据概率运算法则以及贝叶斯公式将参数的后验概率进行改写,改写过程如下:
    p ( W ∣ S ) = p ( W ∣ X , Y ) = p ( W , X , Y ) p ( X , Y ) = p ( X ) p ( W ∣ X ) p ( Y ∣ X , W ) p ( X ) p ( Y ∣ X ) = p(W|S)=p(W|X,Y)=\frac{p(W,X,Y)}{p(X,Y)}=\frac{p(X)p(W|X)p(Y|X,W)}{p(X)p(Y|X)}= p(WS)=p(WX,Y)=p(X,Y)p(W,X,Y)=p(X)p(YX)p(X)p(WX)p(YX,W)=
    p ( W ∣ X ) p ( Y ∣ X , W ) p ( Y ∣ X ) = p ( W ∣ X ) p ( Y ∣ X , W ) ∫ p ( Y ∣ X , W ) p ( W ∣ X ) d W \frac{p(W|X)p(Y|X,W)}{p(Y|X)}=\frac{p(W|X)p(Y|X,W)}{\int p(Y|X,W)p(W|X)dW} p(YX)p(WX)p(YX,W)=p(YX,W)p(WX)dWp(WX)p(YX,W)
    通过改写,我们发现后验概率 p ( W ∣ S ) p(W|S) p(WS)可以通过这样的公式 p ( W ∣ X ) p ( Y ∣ X , W ) ∫ p ( Y ∣ X , W ) p ( W ∣ X ) d W \frac{p(W|X)p(Y|X,W)}{\int p(Y|X,W)p(W|X)dW} p(YX,W)p(WX)dWp(WX)p(YX,W)进行推导。这个公式中,唯一不知道的表达就是 p ( W ∣ X ) p(W|X) p(WX)。但是,需要指出的一点是,参数 W W W是不会随着 X X X的变化而变化的,因此参数 W W W X X X是独立的。所以就有 p ( W ∣ X ) = p ( W ) p(W|X)=p(W) p(WX)=p(W)。这样一来,整个式子都是由我们整理出的已知信息表达出来的。那么自然后验概率就可以直接计算得到。因此有:
    p ( W ∣ S ) = p ( W ) p ( Y ∣ X , W ) ∫ p ( Y ∣ X , W ) p ( W ) d W = N ( 0 , ∑ w ) ∏ i = 1 N N ( x i T W , σ n 2 ) ∫ p ( Y ∣ X , W ) p ( W ) d W p(W|S)=\frac{p(W)p(Y|X,W)}{\int p(Y|X,W)p(W)dW}=\frac{N(0,\sum_w)\prod_{i=1}^{N}N(x_i^TW,\sigma_n^2)}{\int p(Y|X,W)p(W)dW} p(WS)=p(YX,W)p(W)dWp(W)p(YX,W)=p(YX,W)p(W)dWN(0w)i=1NN(xiTWσn2)
    到这里,有一个难点需要理解,那就是是否需要计算上式的分母。答案是:可以不计算。
    原因就在于分母部分已经对 W W W进行了积分。因此分母和参数 W W W无关,在求导时分母部分可以直接略掉,因此,分母和参数 W W W的极值点无关。那么现在就可以知道,其实上式可以转化为:
    p ( W ∣ S ) = N ( μ W , ∑ W ) ∝ N ( 0 , ∑ w ) ∏ i = 1 N N ( x i T W , σ n 2 ) p(W|S)=N(\mu_W,{\textstyle \sum_{ W}} )\propto N(0,\sum_w)\prod_{i=1}^{N}N(x_i^TW,\sigma_n^2) p(WS)=N(μWW)N(0w)i=1NN(xiTWσn2)
    需要明确的是,我们最终求取的目标只是分布 p ( W ∣ S ) p(W|S) p(WS)的均值,其他都可以不用管,那么在高斯分布中,涉及均值的地方就只有 e e e指数部分。因此在计算 N ( 0 , ∑ w ) ∏ i = 1 N N ( x i T W , σ n 2 ) N(0,\sum_w)\prod_{i=1}^{N}N(x_i^TW,\sigma_n^2) N(0w)i=1NN(xiTWσn2)的时候,我们可以将 1 ( 2 π ) N 2 ∣ ∑ ∣ 1 2 \frac{1}{(2\pi)^\frac{N}{2}|\sum|^\frac{1}{2}} (2π)2N211这部分剔除掉,只剩下 e e e的指数部分进行连加或者连减操作(这里已经说明得很详细了,大家可以下去自己推导,过程这里我就不展示了)。最终得到的结果就是:
    μ W = σ n − 2 A − 1 X T Y \mu_W=\sigma_n^{-2}A^{-1}X^TY μW=σn2A1XTY
    ∑ W = A − 1 {\textstyle \sum_{ W}}=A^{-1} W=A1
    其中 A = σ n − 2 X T X + ∑ w − 1 A=\sigma_n^{-2}X^TX+{\textstyle \sum_{w}}^{-1} A=σn2XTX+w1
    这时后验分布的均值就是我们需要求的参数 W W W
    这时,我们已经实现了通过贝叶斯理论进行Inference,从而求得最好的参数的步骤。那么接下来就是考虑如何利用这个参数 W W W对新来的数据进行预测了。

1.1.3 BLR模型推导——Prediction

假设在给定原数据集 S S S的基础上,新来了一个输入样本 x ∗ x^* x,此时,我们需要求的就是这个样本所对应的 f ∗ ( x ) f^*(x) f(x)的值(后续将 f ∗ ( x ) f^*(x) f(x)简写为 f ∗ f^* f)。注意:如果不存在噪音 ε \varepsilon ε,那么 f ∗ f^* f就等于 y ∗ y^* y,但是为了描述更具有泛化性,后续的推导会考虑噪音。上述要求就变成了一个问题,那就是——在给定训练样本 S S S以及输入样本 x ∗ x^* x的前提下(条件下), f ∗ f^* f的最可能的值是多少?我们将其转化为数学描述就是:
p ( f ∗ ∣ x ∗ , S ) p(f^*|x^*,S) p(fx,S)
根据我们已知的模型形式,可以知道:
y ∗ = x ∗ W T + ε y^*=x^*W^T+\varepsilon y=xWT+ε
f ( x ∗ ) = x ∗ W T f(x^*)=x^*W^T f(x)=xWT
注意,因为我们后续是要求的 f ∗ f^* f的最可能的值,换句话说,也就是期望。因此根据贝叶斯学派的思路,这里的参数 W W W是需要以随机变量的形式去理解的,不能理解为一个定值。
那么根据Inference步骤,我们知道了随机变量 W W W是服从 N ( μ W , ∑ W ) N(\mu_W,{\textstyle \sum_{W}}) N(μWW)分布的。
所以结合 f ( x ∗ ) = x ∗ W T f(x^*)=x^*W^T f(x)=xWT得知, f ( x ∗ ) f(x^*) f(x)是服从 N ( x ∗ μ W T , x ∗ T ∑ W x ∗ ) N(x^*\mu_W^T,{x^*}^T{\textstyle \sum_{W}}x^*) N(xμWT,xTWx),(这里大家可以自己去推一下为什么会服从这个分布,推导很简单)。这时候就需要思考一个问题了,这样的 f ( x ∗ ) f(x^*) f(x)在没有给定数据 S S S以及数据 x ∗ x^* x的情况下是无法计算的,所以,显然上述推导是在给定了 S S S以后才会推导出 W W W的分布,才会有上述的推导过程。因此,实际上就是:
p ( f ∗ ∣ S , x ∗ ) = N ( x ∗ μ W T , x ∗ T ∑ W x ∗ ) p(f^*|S,x^*)=N(x^*\mu_W^T,{x^*}^T{\textstyle \sum_{W}}x^*) p(fS,x)=N(xμWT,xTWx)
那么考虑噪音对方差的影响,就变成了:
p ( y ∗ ∣ S , x ∗ ) = N ( x ∗ μ W T , x ∗ T ∑ W x ∗ + σ n 2 ) p(y^*|S,x^*)=N(x^*\mu_W^T,{x^*}^T{\textstyle \sum_{W}}x^*+\sigma_n^2) p(yS,x)=N(xμWT,xTWx+σn2)

1.1.4 BLR推导小结

我们可以通过上面的推导看到,由于假设的模型关系是线性的,即 y = W X T + ε y=WX^T+\varepsilon y=WXT+ε, 所以BLR主要是解决的线性问题。那么如果将 X X X考虑成经过非线性映射后的输入 Φ ( X ) \Phi(X) Φ(X),模型结构是否会发生变化呢?这就是下一节要讲的基于权重空间去理解并推导GPR。

1.2. GPR:基于权重空间角度理解与推导

1.2.1 模型基本定义

与BLR一样,GPR的模型形式不变,但在输入空间 X X X上进行了非线性变换,即将 X X X转化为了 Φ ( X ) \Phi(X) Φ(X)
y = Φ ( X ) W T + ε y=\Phi(X)W^T+\varepsilon y=Φ(X)WT+ε
可以看到,虽然仍然有一个线性变换参数 W T W^T WT,但是由于输入空间发生了变化,因此整个函数已经成为非线性的函数了,也就是说,GPR可以解决非线性的问题。
那么目前主要的任务就是将这个 Φ ( X ) \Phi(X) Φ(X)求解出来。那么怎么求解的呢?这部分其实就是GPR的精髓部分了。GPR不求出这个函数,而是只求得这个函数与自己的内积。为什么可以这样呢?接下来就是对这个方法的解释。

1.2.2 模型推导

首先,我们可以看到在整个模型中,除了作为输入的 X X X发生了变化,其他任何参数都没有变。那么,这意味着什么呢?这意味着我们可以一步步的完全按照BLR的推导规则来求得 p ( W ∣ S ) p(W|S) p(WS),然后给出预测值, E p ( f ∗ ∣ S , x ∗ ) [ f ∗ ] = x ∗ μ W T E_{p(f^*|S,x^*)}[f^*]=x^*\mu_W^T Ep(fS,x)[f]=xμWT。如果你们自己推导了上述步骤,就会知道,最终的结果就只需要将 X X X都换成 Φ ( X ) \Phi(X) Φ(X)就行了。如果没有推导,那么至少到目前你能知道,BLR中的任何一步对于代数 X X X来说都是一种线性变换,根据线性变换的齐次性,也能知道只需要将结果中的 X X X变成 Φ ( X ) \Phi(X) Φ(X)即可。
在明确了这样的想法的情况下,模型推导过程将会和BLR一模一样,因此这里就直接给出结果:

  1. 参数 W W W的估计结果
    GPR中,给定了数据S后, W W W的分布如下:
    p ( W ∣ S ) = N ( μ W , ∑ W ) p(W|S)=N(\mu_W,{\textstyle \sum_{ W}} ) p(WS)=N(μWW)
    其中
    μ W = σ n − 2 A − 1 Φ ( X ) T Y \mu_W=\sigma_n^{-2}A^{-1}\Phi(X)^TY μW=σn2A1Φ(X)TY
    ∑ W = A − 1 {\textstyle \sum_{ W}}=A^{-1} W=A1
    其中 A = σ n − 2 Φ ( X ) T Φ ( X ) + ∑ w − 1 A=\sigma_n^{-2}\Phi(X)^T\Phi(X)+{\textstyle \sum_{w}}^{-1} A=σn2Φ(X)TΦ(X)+w1
  2. GPR的预测结果
    GPR中,给定数据 S S S,来了新数据 X ∗ X^* X时对应的预测值 f ∗ f^* f如下:
    p ( f ∗ ∣ S , x ∗ ) = N ( Φ ( x ∗ ) μ W T , Φ ( x ∗ ) T ∑ W Φ ( x ∗ ) ) p(f^*|S,x^*)=N(\Phi(x^*)\mu_W^T,{\Phi(x^*)}^T{\textstyle \sum_{W}}\Phi(x^*)) p(fS,x)=N(Φ(x)μWT,Φ(x)TWΦ(x))

那么此时问题就来了,在预测值公式 E p ( f ∗ ∣ S , x ∗ ) [ f ∗ ] = Φ ( x ∗ ) μ W T E_{p(f^*|S,x^*)}[f^*]=\Phi(x^*)\mu_W^T Ep(fS,x)[f]=Φ(x)μWT中含有未知项 Φ ( x ∗ ) \Phi(x^*) Φ(x),如何求取具体值呢?并且如何求取 A − 1 A^{-1} A1呢?

  1. 第一个问题,如何求取 A − 1 A^{-1} A1 A − 1 A^{-1} A1是借助woodbury公式也就是:
    ( A + U I V T ) − 1 = A − 1 − [ A − 1 U ( I + V T A − 1 U ) − 1 V T A − 1 ] (A+UIV^T)^{-1}=A^{-1}-[A^{-1}U(I+V^TA^{-1}U)^{-1}V^TA^{-1}] (A+UIVT)1=A1[A1U(I+VTA1U)1VTA1]
    来求得。由于这部分全部都是代数求解工作,没有什么算法上的复杂思想,因此这里就不详细介绍了(个人不建议非数学专业的同学推导,因为此部分的推导过于复杂)。直接给出推导后最终预测均值的形式:
    E p ( f ∗ ∣ S , x ∗ ) [ f ∗ ] = Φ ( x ∗ ) ∑ w Φ ( X ) T ( Φ ( X ) ∑ w Φ ( X ) T + σ n 2 I ) − 1 Y E_{p(f^*|S,x^*)}[f^*]=\Phi(x^*){\textstyle \sum_{w}}\Phi(X)^T(\Phi(X){\textstyle \sum_{w}}\Phi(X)^T+\sigma_n^2I)^{-1}Y Ep(fS,x)[f]=Φ(x)wΦ(X)T(Φ(X)wΦ(X)T+σn2I)1Y
    含噪音的预测的方差:
    C o v [ y ∗ ] = Φ ( x ∗ ) T ∑ w Φ ( x ∗ ) − Φ ( x ∗ ) ∑ w Φ ( X ) T ( Φ ( X ) ∑ w Φ ( X ) T + σ n 2 I ) − 1 Φ ( X ) ∑ w Φ ( x ∗ ) T Cov[y^*]=\Phi(x^*)^T{\textstyle \sum_{w}}\Phi(x^*)-\Phi(x^*){\textstyle \sum_{w}}\Phi(X)^T(\Phi(X){\textstyle \sum_{w}}\Phi(X)^T+\sigma_n^2I)^{-1}\Phi(X){\textstyle \sum_{w}}\Phi(x^*)^T Cov[y]=Φ(x)TwΦ(x)Φ(x)wΦ(X)T(Φ(X)wΦ(X)T+σn2I)1Φ(X)wΦ(x)T
  2. 第二个问题,就是如何求取 Φ ( X ) \Phi(X) Φ(X)呢?
    这个问题会通过“核技巧”来解决,这里不介绍核方法是什么东西了,直接给出定义:
    通过核方法,我们能找到一个核函数来求得两个非线性变换函数的内积。也就是
    k e r n a l ( x , x ′ ) = Φ ( x ∗ ) T ⋅ Φ ( x ∗ ) kernal(x,x')=\Phi(x^*)^T\cdot\Phi(x^*) kernal(x,x)=Φ(x)TΦ(x)
    那么这个时候就可以看上面的式子中,都存在 Φ ( ⋅ ) T ∑ w Φ ( ⋅ ) \Phi(\cdot)^T{\textstyle \sum_{w}}\Phi(\cdot) Φ()TwΦ()这么一项,那么很自然的想法就是,将这一项拆分为 Φ ( ⋅ ) ∑ w 1 2 \Phi(\cdot){\textstyle \sum_{w}}^\frac{1}{2} Φ()w21 ( Φ ( ⋅ ) ∑ w 1 2 ) T (\Phi(\cdot){\textstyle \sum_{w}}^\frac{1}{2})^T (Φ()w21)T,很明显,这两项就是同一个非线性方程的内积。所以这部分就可以用一个核函数来代替。因此,我们无需具体求解出非线性映射 Φ ( ⋅ ) \Phi(\cdot) Φ()的具体形式,依然可以求出我们需要的东西。
    经过这样转换后,具体的预测结果就被简化成了我们常见的形式,也就是:
    E p ( f ∗ ∣ S , x ∗ ) [ f ∗ ] = k ( x ∗ , X ) ( k ( X , X ) + σ n 2 I ) − 1 Y E_{p(f^*|S,x^*)}[f^*]=k(x^*,X)(k(X,X)+\sigma_n^2I)^{-1}Y Ep(fS,x)[f]=k(x,X)(k(X,X)+σn2I)1Y
    C o v [ y ∗ ] = k ( x ∗ , x ∗ ) − k ( x ∗ , X ) ( k ( X , X ) + σ n 2 I ) − 1 k ( X , x ∗ ) Cov[y^*]=k(x^*,x^*)-k(x^*,X)(k(X,X)+\sigma_n^2I)^{-1}k(X,x^*) Cov[y]=k(x,x)k(x,X)(k(X,X)+σn2I)1k(X,x)

1.2.3 GPR小结

GPR的推导是基于BLR的,因此本质上, GPR是BLR方法进行非线性化后的版本,非线性化的过程借助了较多的数学推导以及核技巧,但总体思想不难。因此只要掌握了BLR的推导过程,GPR就自然而然的推导出来了。最后,对于核函数的选择则可以根据自己的需要进行选择。至于核函数中的参数,可以人工选择,也可以通过MLE方法进行优化,参数优化这部分较为简单,各位可以自己思考并推导如何优化这些参数。至此为止,基于权重空间的GPR推导就全部完成。

2. 声明

全文均是在参考部分书籍与文献的基础上进行的自主撰写与推导,如需转载请注明出处,部分思考如有不当之处也悉请各位指正。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
是的,您说得没错。高斯过程回归Gaussian Process RegressionGPR)是一种非参数模型,它使用高斯过程Gaussian Process,GP)作为先验对数据进行回归分析。GPR模型不需要假设数据的分布形式,而是通过对数据进行高斯过程拟合来进行回归预测。具体来说,GPR模型将数据看作是从一个高斯分布中随机采样得到的无限维向量,可以通过对这个向量的均值函数和协方差函数进行建模来对数据进行预测。 GPR模型具有以下特点: 1. 非参数模型:不需要假设数据的分布形式,可以适应各种数据类型和分布形式。 2. 预测精度高:GPR模型可以对数据进行精确的预测,同时可以对预测结果提供可信度估计。 3. 易于解释:GPR模型可以输出均值函数和协方差函数,可以用于解释预测结果和分析数据特征。 在Python中,可以使用Scikit-learn等机器学习库中的GPR模型进行建模,例如: ```python from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import RBF # 定义高斯过程内核函数 kernel = RBF(length_scale=1.0) # 定义高斯过程回归模型 model = GaussianProcessRegressor(kernel=kernel, alpha=0.1) # 模型训练和预测 model.fit(X_train, y_train) y_pred, y_std = model.predict(X_test, return_std=True) ``` 需要注意的是,在使用GPR模型进行建模时,需要选择合适的高斯过程内核函数和正则化参数,以获得更好的预测效果。同时,GPR模型也需要进行交叉验证等模型选择和优化操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值