高斯过程中,高斯是指Gaussian Distribution,过程就是指随机过程。
来回忆一下学过的高斯分布:
我们给出高斯过程的定义:
若在实际情况中,我们可以写成:
在一个连续域T中(以时间轴为例),对于 ∀ n ∈ N + \forall n \in N^+ ∀n∈N+我们截取出 t 1 , t 2 , … , t n ∈ T t_1, t_2, \dots, t_n \in T t1,t2,…,tn∈T,在每个节点上定义随机变量 ξ t 1 , ξ t 2 , … , ξ t n \xi_{t_1}, \xi_{t_2}, \dots, \xi_{t_n} ξt1,ξt2,…,ξtn,使得向量 ( ξ t 1 → t n ) ∽ N ( μ t 1 → t n , Σ t 1 → t n ) (\xi_{t_1 \rightarrow t_n}) \backsim N(\mu_{t_1 \rightarrow t_n}, \Sigma_{t_1 \rightarrow t_n}) (ξt1→tn)∽N(μt1→tn,Σt1→tn),那么我们可以说 { ξ t } t ∈ T {\lbrace \xi_t \rbrace}_{t \in T} {ξt}t∈T就是一个高斯过程。
高斯过程可以写成 ξ t ∽ G P ( m ( t ) , K ( s , t ) ) \xi_t \backsim GP(m(t), K(s, t)) ξt∽GP(m(t),K(s,t))的形式,其中 m ( t ) m(t) m(t)表示mean function, k ( s , t ) k(s, t) k(s,t)表示covariance function:
{ m ( t ) = E [ ξ t ] k ( s , t ) = E [ ( ξ s − E [ ξ s ] ) ( ξ t − E [ ξ t ] ) ] \begin{cases} m(t) = E[\xi_t] \\ k(s,t) = E[(\xi_s - E[\xi_s])(\xi_t - E[\xi_t])] \end{cases} {m(t)=E[ξt]k(s,t)=E[(ξs−E[ξs])(ξt−E[ξt])]
在过去的问题中,我们是解决以下模型:
模型:
{ f ( x ) = w T x = x T w y = f ( x ) + ε , ε ∽ N ( 0 , σ 2 ) \begin{cases} f(x) = w^T x = x^T w \\ y = f(x) + \varepsilon, \varepsilon \backsim N(0, \sigma^2) \end{cases} {f(x)=wTx=xTwy=f(x)+ε,ε∽N(0,σ2)
解决Inference问题:
P ( w ∣ D a t a ) = N ( w ∣ μ w , Σ w ) { μ w = σ − 2 A − 1 X T Y Σ w = A − 1 A = σ − 2 X T X + E p − 1 P(w|Data) = N(w|\mu_w, \Sigma_w) \begin{cases} \mu_w = \sigma^{-2} A^{-1} X^T Y \\ \Sigma_w = A^{-1} \\ A = \sigma^{-2} X^T X + E_p^{-1} \end{cases} P(w∣Data)=N(w∣μw,Σw)⎩ ⎨ ⎧μw=σ−2A−1XTYΣw=A−1A=σ−2XTX+Ep−1
解决Prediction问题(给定 x ∗ x^* x∗):
{ P ( f ( x ∗ ) ∣ D a t a , x ∗ ) = N ( x ∗ T μ w , x ∗ T Σ w x ∗ ) P ( y ∗ ∣ D a t a , x ∗ ) = N ( x ∗ T μ w , x ∗ T Σ w x ∗ + σ 2 ) \begin{cases} P(f(x^*)|Data, x^*) = N({x^*}^T \mu_w, {x^*}^T \Sigma_w x^*) \\ P(y^*| Data, x^*) = N({x^*}^T \mu_w, {x^*}^T \Sigma_w x^* + \sigma^2) \end{cases} {P(f(x∗)∣Data,x∗)=N(x∗Tμw,x∗TΣwx∗)P(y∗∣Data,x∗)=N(x∗Tμw,x∗TΣwx∗+σ2)
但是这个模型是线性的,如果问题是非线性的我们该怎么办?
所以我们做出如下定义:
本节通过实际解决预测问题看以下高斯过程。
先把原问题具体写出来:
f ( x ∗ ) ∣ X , Y , x ∗ ∽ N ( x ∗ T σ − 2 A − 1 X T Y , x ∗ T A − 1 x ∗ ) , A = σ − 2 X T X + E p − 1 f(x^*)|X, Y, x^* \backsim N({x^*}^T \sigma^{-2} A^{-1} X^T Y, {x^*}^T A^{-1} x^*), A = \sigma^{-2} X^T X + E_p^{-1} f(x∗)∣X,Y,x∗∽N(x∗Tσ−2A−1XTY,x∗TA−1x∗),A=σ−2XTX+Ep−1
由于进行了非线性转换,我们将Prediction写成转换后的形式:
f ( x ∗ ) ∣ X , Y , x ∗ ∽ N ( σ − 2 ϕ ( x ) ∗ T A − 1 Φ T Y , ϕ ( x ) ∗ T A − 1 ϕ ( x ) ∗ ) , A = σ − 2 Φ T Φ + E p − 1 f(x^*)|X, Y, x^* \backsim N\big(\sigma^{-2} {{\phi(x)}^*}^T A^{-1} \Phi^T Y, {{\phi(x)}^*}^T A^{-1} {\phi(x)}^*\big), A = \sigma^{-2} \Phi^T \Phi + E_p^{-1} f(x∗)∣X,Y,x∗∽N(σ−2ϕ(x)∗TA−1ΦTY,ϕ(x)∗TA−1ϕ(x)∗),A=σ−2ΦTΦ+Ep−1
要将均值和方差就需要将 A − 1 A^{-1} A−1算出来,可以通过woodbury formula进行计算,也可以通过将等式 A = σ − 2 Φ T Φ + E p − 1 A = \sigma^{-2} \Phi^T \Phi + E_p^{-1} A=σ−2ΦTΦ+Ep−1进行数学变换弄出来。
补充:woodbury formula
( A + U C V ) − 1 = A − 1 − A − 1 ∪ ( C − 1 + V A − 1 U ) − 1 V A − 1 {(A+UCV)}^{-1} = A^{-1} - A^{-1} \cup {(C^{-1} + VA^{-1}U)}^{-1}VA^{-1} (A+UCV)−1=A−1−A−1∪(C−1+VA−1U)−1VA−1
推导就是简单的数学变换,过程省略,得出的结果是:
{ m e a n : ϕ ( x ∗ ) Σ p Φ T ( K + σ 2 I ) − 1 Y c o v a r i e n c e : ϕ ( x ∗ ) T Σ p ϕ ( x ∗ ) − ϕ ( x ∗ ) T Σ p Φ T ( K + σ 2 I ) − 1 Φ Σ p ϕ ( x ∗ ) K = Φ Σ p Φ T \begin{cases} mean: \phi(x^*) \Sigma_p \Phi^T {(K+\sigma^2 I)}^{-1} Y \\ covarience: {\phi(x^*)}^T \Sigma_p {\phi(x^*)} - {\phi(x^*)}^T \Sigma_p \Phi^T {(K + \sigma^2 I)}^{-1} \Phi \Sigma_p {\phi(x^*)} \\ K = \Phi \Sigma_p \Phi^T \end{cases} ⎩ ⎨ ⎧mean:ϕ(x∗)ΣpΦT(K+σ2I)−1Ycovarience:ϕ(x∗)TΣpϕ(x∗)−ϕ(x∗)TΣpΦT(K+σ2I)−1ΦΣpϕ(x∗)K=ΦΣpΦT
Prediction就可以表示为:
f ( x ∗ ) ∣ X , Y , x ∗ ∽ N ( ϕ ( x ∗ ) Σ p Φ T ‾ ( K ‾ + σ 2 I ) − 1 Y , ϕ ( x ∗ ) T Σ p ϕ ( x ∗ ) ‾ − ϕ ( x ∗ ) T Σ p Φ T ‾ ( K ‾ + σ 2 I ) − 1 Φ Σ p ϕ ( x ∗ ) ‾ ) f(x^*)|X, Y, x^* \backsim N\big(\underline{\phi(x^*) \Sigma_p \Phi^T} {(\underline{K}+\sigma^2 I)}^{-1} Y, \underline{{\phi(x^*)}^T \Sigma_p {\phi(x^*)}} - \underline{{\phi(x^*)}^T \Sigma_p \Phi^T} {(\underline{K} + \sigma^2 I)}^{-1} \underline{\Phi \Sigma_p {\phi(x^*)}} \big) f(x∗)∣X,Y,x∗∽N(ϕ(x∗)ΣpΦT(K+σ2I)−1Y,ϕ(x∗)TΣpϕ(x∗)−ϕ(x∗)TΣpΦT(K+σ2I)−1ΦΣpϕ(x∗))
在最终得到的Prediction公式中,可以看到我花了许多下划线的地方,这些全都是需要进行计算的地方。因为我们提升了维度,所以我们自然想要这些地方全都可以使用核函数快速计算:
我们要定义一个核函数,首先我们将核函数定义为 K ( x , x ′ ) = ϕ ( x ) T Σ p ϕ ( x ′ ) K(x, x^{'}) = \phi(x)^T \Sigma_p \phi(x^{'}) K(x,x′)=ϕ(x)TΣpϕ(x′),接下来要证明他是否表示内积的形式
由于 Σ p \Sigma_p Σp是正定矩阵,所以有 Σ p = Σ p 1 2 ⋅ Σ p 1 2 \Sigma_p = \Sigma_p^{\frac{1}{2}} \cdot \Sigma_p^{\frac{1}{2}} Σp=Σp21⋅Σp21
我们将核函数进行一个变换:
K ( x , x ′ ) = ϕ ( x ) T Σ p 1 2 ⋅ Σ p 1 2 ϕ ( x ′ ) = ( Σ p 1 2 ϕ ( x ) ) T ⋅ Σ p 1 2 ϕ ( x ′ ) K(x, x^{'}) = \phi(x)^T \Sigma_p^{\frac{1}{2}} \cdot \Sigma_p^{\frac{1}{2}} \phi(x^{'}) = {(\Sigma_p^{\frac{1}{2}} \phi(x))}^T \cdot \Sigma_p^{\frac{1}{2}} \phi(x^{'}) K(x,x′)=ϕ(x)TΣp21⋅Σp21ϕ(x′)=(Σp21ϕ(x))T⋅Σp21ϕ(x′)
所以我们可以将将上面的核函数看作:
{ K ( x , x ′ ) = ⟨ φ ( x ) , φ ( x ′ ) ⟩ φ ( x ) = Σ p 1 2 ϕ ( x ) \begin{cases} K(x, x^{'}) = {\langle \varphi(x), \varphi(x^{'}) \rangle} \\ \varphi(x) = \Sigma_p^{\frac{1}{2}} \phi(x) \end{cases} {K(x,x′)=⟨φ(x),φ(x′)⟩φ(x)=Σp21ϕ(x)
总体来说,我们可以看作Gaussian Process Regression = Bayesian Linear Regression + Kernel Trick(非线性变换)
这个标题一看到可能会觉得有点奇妙,我们先来解释一下什么是weight-space和function-space:
为了解释我们怎么将高斯过程从随机变量转变为 f ( x ) f(x) f(x),首先我们简单做一个回顾:
回顾高斯过程的定义:假设有一段连续域 T T T,在 T T T中定义 n n n个节点( ∀ n ∈ N + , n ≥ 1 \forall n \in N^+, n \geq 1 ∀n∈N+,n≥1)表示为 t 1 , t 2 , … , t n ∈ T t_1, t_2, \dots, t_n \in T t1,t2,…,tn∈T,每个节点上定义一个随机变量 ξ t 1 , ξ t 2 , … , ξ t n \xi_{t_1}, \xi_{t_2}, \dots, \xi_{t_n} ξt1,ξt2,…,ξtn,令 ξ 1 : n = ( ξ t 1 , ξ t 2 , … , ξ t n ) T \xi_{1:n} = {(\xi_{t_1}, \xi_{t_2}, \dots, \xi_{t_n})}^T ξ1:n=(ξt1,ξt2,…,ξtn)T。若使得 ξ 1 : n ∽ N ( μ 1 : n , Σ 1 : n ) \xi_{1:n} \backsim N(\mu_{1:n}, \Sigma_{1:n}) ξ1:n∽N(μ1:n,Σ1:n),则称 { ξ t } t ∈ T {\lbrace \xi_t \rbrace}_{t \in T} {ξt}t∈T是高斯过程,写作 ξ t ∽ G P ( m ( t ) , K ( t , s ) ) \xi_t \backsim GP\big(m(t), K(t, s)\big) ξt∽GP(m(t),K(t,s))。
上文中的 ξ t ∽ G P ( m ( t ) , K ( t , s ) ) \xi_t \backsim GP\big(m(t), K(t, s)\big) ξt∽GP(m(t),K(t,s)),其中 m ( t ) m(t) m(t)表示均值函数, K ( t , s ) K(t,s) K(t,s)表示方差函数。这里重点是我们的均值方差已经不是一个变量而是一个函数了,因为高斯过程中的均值和方差是会变的。但是为什么GP要用 m ( t ) m(t) m(t)和 K ( t , s ) K(t,s) K(t,s)表示呢?这里参考高斯过程存在性定理,不做证明。
回顾weight-space view,模型定义为:
{ f ( x ) = ϕ ( x ) T w y = f ( x ) + ε , ε ∽ N ( 0 , σ 2 ) \begin{cases} f(x) = \phi(x)^T w \\ y = f(x) + \varepsilon, \varepsilon \backsim N(0, \sigma^2) \end{cases} {f(x)=ϕ(x)Twy=f(x)+ε,ε∽N(0,σ2)
为了寻找weight-space到function-space中的过渡关系,我们对Bayesian Method中的求解过程进行分析:
给定 w w w一个prior: w ∽ N ( 0 , Σ p ) w \backsim N(0, \Sigma_p) w∽N(0,Σp)(这里为方便计算这样设置)
我们可以求解期望:
E [ f ( x ) ] = E [ ϕ ( x ) T w ] = ϕ ( x ) T E [ w ] ⏟ 关注对象为 w = 0 E[f(x)] = E[{\phi(x)}^T w] = \underbrace{{\phi(x)}^TE[w]}_{\text{关注对象为$w$}} = 0 E[f(x)]=E[ϕ(x)Tw]=关注对象为w ϕ(x)TE[w]=0
我们也可以求解方差:
c o v ( f ( x ) , f ( x ′ ) ) = E [ ( f ( x ) − E [ f ( x ) ] ⏟ = 0 ) ( f ( x ′ ) − E [ f ( x ′ ) ] ⏟ = 0 ) ] = E [ f ( x ) f ( x ′ ) ] = E [ ϕ ( x ) T w ⋅ ϕ ( x ′ ) T w ⏟ 1 × 1 ] = E [ ϕ ( x ) T w ⋅ w T ϕ ( x ′ ) ] = ϕ ( x ) T E [ w ⋅ w T ] ϕ ( x ′ ) = ϕ ( x ) T E [ ( w − 0 ) ⋅ ( w T − 0 ) ] ϕ ( x ′ ) = ϕ ( x ) T c o v [ w ] ϕ ( x ′ ) = ϕ ( x ) T E p ϕ ( x ′ ) \begin{align} cov(f(x), f(x^{'})) &= E\big[ (f(x) - \underbrace{E[f(x)]}_{=0})(f(x^{'}) - \underbrace{E[f(x^{'})]}_{=0}) \big] \\ &= E\big[ f(x) f(x^{'}) \big] \\ &= E\big[ \phi(x)^T w \cdot \underbrace{\phi(x^{'})^T w}_{1 \times 1} \big] \\ &= E\big[ \phi(x)^T w \cdot {w^T \phi(x^{'})} \big] \\ &= \phi(x)^T E\big[ w \cdot w^T \big] \phi(x^{'}) \\ &= \phi(x)^T E\big[ (w-0) \cdot (w^T-0) \big] \phi(x^{'}) \\ &= \phi(x)^T cov\big[ w \big] \phi(x^{'}) \\ &= \phi(x)^T E_p \phi(x^{'}) \\ \end{align} cov(f(x),f(x′))=E[(f(x)−=0 E[f(x)])(f(x′)−=0 E[f(x′)])]=E[f(x)f(x′)]=E[ϕ(x)Tw⋅1×1 ϕ(x′)Tw]=E[ϕ(x)Tw⋅wTϕ(x′)]=ϕ(x)TE[w⋅wT]ϕ(x′)=ϕ(x)TE[(w−0)⋅(wT−0)]ϕ(x′)=ϕ(x)Tcov[w]ϕ(x′)=ϕ(x)TEpϕ(x′)
根据Bayesian Method中的解析:
得到了:
{ E [ f ( x ) ] = 0 c o v ( f ( x ) , f ( x ′ ) ) = ϕ ( x ) T E p ϕ ( x ′ ) \begin{cases} E[f(x)] = 0 \\ cov(f(x), f(x^{'})) = \phi(x)^T E_p \phi(x^{'}) \end{cases} {E[f(x)]=0cov(f(x),f(x′))=ϕ(x)TEpϕ(x′)
我们发现 ϕ ( x ) T E p ϕ ( x ′ ) \phi(x)^T E_p \phi(x^{'}) ϕ(x)TEpϕ(x′)非常眼熟,这就是我们在上一节定义的Kernel Function,所以可以写作:
c o v ( f ( x ) , f ( x ′ ) ) = ϕ ( x ) T E p ϕ ( x ′ ) = K ( x , x ′ ) cov(f(x), f(x^{'})) = \phi(x)^T E_p \phi(x^{'}) = K(x, x^{'}) cov(f(x),f(x′))=ϕ(x)TEpϕ(x′)=K(x,x′)
我们发现他是个Kernel Function又有什么用呢?
我们将weight-space和function-space对比一下:
总结一下:
还是先来梳理一遍条件:
高斯过程条件:
{ f ( x ) x ∈ R p ∽ G P ( m ( x ) , K ( x , x ′ ) ) m ( x ) = E [ f ( x ) ] K ( x , x ′ ) = E [ ( f ( x ) − m ( x ) ) ( f ( x ′ ) − m ( x ′ ) ) T ] \begin{cases} {f(x)}_{x \in {\mathbb R}^p} \backsim GP\big( m(x), K(x, x^{'}) \big) \\ m(x) = E[f(x)] \\ K(x, x^{'}) = E\big[{(f(x) - m(x))}{(f(x^{'}) - m(x^{'}))}^T\big] \end{cases} ⎩ ⎨ ⎧f(x)x∈Rp∽GP(m(x),K(x,x′))m(x)=E[f(x)]K(x,x′)=E[(f(x)−m(x))(f(x′)−m(x′))T]
回归问题条件:
D a t a : { ( x i , y i ) } i = 1 N , X = ( x 1 , x 2 , … , x N ) N × p T , Y = ( y 1 , y 2 , … , y N ) N × 1 T Data: {\lbrace (x_i, y_i) \rbrace}_{i=1}^N, \quad X={(x_1, x_2, \dots, x_N)}_{N \times p}^T, \quad Y={(y_1, y_2, \dots, y_N)}_{N \times 1}^T Data:{(xi,yi)}i=1N,X=(x1,x2,…,xN)N×pT,Y=(y1,y2,…,yN)N×1T
当前的问题可以写作:
{ f ( x ) ∽ G P ( μ ( X ) , K ( X , X ) ) y = f ( x ) + ε ∽ N ( μ ( X ) , K ( X , X ) + σ 2 I ) \begin{cases} {f(x)} \backsim GP\big( \mu(X), K(X, X) \big) \\ y = f(x) + \varepsilon \backsim N\big(\mu(X), K(X, X) + \sigma^2 I\big) \\ \end{cases} {f(x)∽GP(μ(X),K(X,X))y=f(x)+ε∽N(μ(X),K(X,X)+σ2I)
具体解决一下Prediction问题:
给定条件 X ∗ = ( x 1 ∗ , x 2 ∗ , … , x M ∗ ) T X^* = (x_1^*, x_2^*, \dots, x_M^*)^T X∗=(x1∗,x2∗,…,xM∗)T,要求 Y ∗ = f ( X ∗ ) + ε Y^* = f(X^*) + \varepsilon Y∗=f(X∗)+ε
我们将已知条件 Y Y Y和目标 f ( X ∗ ) f(X^*) f(X∗)写作联合概率:
( Y f ( X ∗ ) ) ∽ N ( ( μ ( X ) μ ( X ∗ ) ) , ( K ( X , X ) + σ 2 I K ( X , X ∗ ) K ( X ∗ , X ) K ( X ∗ , X ∗ ) ) ) \begin{pmatrix} Y \\ f(X^*) \end{pmatrix} \backsim N \begin{pmatrix} \begin{pmatrix} \mu(X) \\ \mu(X^*) \end{pmatrix} , \begin{pmatrix} K(X, X) + \sigma^2 I & K(X, X^*) \\ K(X^*, X) & K(X^*, X^*) \end{pmatrix} \end{pmatrix} (Yf(X∗))∽N((μ(X)μ(X∗)),(K(X,X)+σ2IK(X∗,X)K(X,X∗)K(X∗,X∗)))
然后通过多维高斯的条件概率公式求解 P ( f ( X ∗ ) ∣ Y , X , X ∗ ) = N ( μ ∗ , Σ ∗ ) P(f(X^*)| Y, X, X^*) = N(\mu^*, \Sigma^*) P(f(X∗)∣Y,X,X∗)=N(μ∗,Σ∗),可得:
{ μ ∗ = K ( X ∗ , X ) ⋅ ( K ( X , X ) + σ 2 I ) − 1 ⋅ ( Y − μ ( X ) ) + μ ( X ∗ ) Σ ∗ = K ( X ∗ , X ∗ ) − K ( X ∗ , X ) ⋅ ( K ( X , X ) + σ 2 I ) − 1 K ( X , X ∗ ) \begin{cases} \mu^* = K(X^*, X) \cdot {(K(X, X) + \sigma^2 I)}^{-1} \cdot (Y - \mu(X)) + \mu(X^*) \\ \Sigma^* = K(X^*,X^*) - K(X^*, X) \cdot {(K(X, X) + \sigma^2 I)}^{-1} K(X, X^*) \\ \end{cases} {μ∗=K(X∗,X)⋅(K(X,X)+σ2I)−1⋅(Y−μ(X))+μ(X∗)Σ∗=K(X∗,X∗)−K(X∗,X)⋅(K(X,X)+σ2I)−1K(X,X∗)
由于已经求出来 P ( f ( X ∗ ) ∣ Y , X , X ∗ ) = N ( μ ∗ , Σ ∗ ) P(f(X^*)| Y, X, X^*) = N(\mu^*, \Sigma^*) P(f(X∗)∣Y,X,X∗)=N(μ∗,Σ∗)中的 μ ∗ , Σ ∗ \mu^*, \Sigma^* μ∗,Σ∗,下面当作已知条件计算。根据 Y ∗ = f ( X ∗ ) + ε , ε ∽ N ( 0 , σ 2 ) Y^* = f(X^*) + \varepsilon, \varepsilon \backsim N(0, \sigma^2) Y∗=f(X∗)+ε,ε∽N(0,σ2)可得:
P ( Y ∗ ∣ Y , X , X ∗ ) = N ( μ y ∗ , Σ y ∗ ) = N ( μ ∗ , Σ ∗ + σ 2 I ) \begin{align} P(Y^*| Y, X, X^*) = N(\mu_y^*, \Sigma_y^*) = N(\mu^*, \Sigma^* + \sigma^2 I) \end{align} P(Y∗∣Y,X,X∗)=N(μy∗,Σy∗)=N(μ∗,Σ∗+σ2I)
所以如果通过function-space view,我们求解预测问题只需要通过高斯分布的公式求解就好,相对于weight-space效果相同但步骤会简单一些。