Gaussian Process

김당찬·2022년 9월 6일
0

Gaussian Process

Definition

Gaussian Process(줄여서 GP라고도 한다)는 비모수방법의 일종으로, 사전분포를 표현하여 베이즈 정리를 바탕으로 사후확률을 추론하는 기법으로 사용된다. 길이 NN의 가우시안 랜덤 벡터(Gaussian Random Vector)란

f=[f1,,fN]\mathbf{f} = [f_1,\ldots,f_N]

의 형태로 주어지며, 평균벡터 μ=E[f]\mu = \rm{E}[\mathbf f], 공분산행렬 Σ=Cov[f]\Sigma = \rm{Cov}[\mathbf f] 가 정의된다.

Input data X={xnX}n=1N\mathbf{X} = \{x_n\in \mathcal{X}\}_{n=1}^N 에서 정의되는 함수 f:XRf:\mathcal X\to \mathbb R 의 형태가 주어진다고 하자. 이때

fX=[f(x1),,f(xN)]\mathbf{f}_X = [f(x_1),\ldots,f(x_N)]

으로 주어진 벡터의 각 성분은 해당 데이터셋에서의 unknown function value이고, 이는 random variable에 각각 대응되므로, 이는 앞서 정의한 가우시안 랜덤 벡터이다. 만일 위 랜덤 벡터가 임의의 N1N\geq 1 개의 점들에 대해서 모두 jointly Gaussain이라면, 함수 f:XRf:\mathcal X\to \mathbb RGaussain Process 라고 정의한다. 또한, GP에 대해 다음과 같이 mean function, covariance function이 정의된다.

m(x)R,    K(x,x)0m(x)\in\mathbb R,\;\;\mathcal{K}(x,x')\geq 0

이때 covariance function은 Mercer Kernel(=Positive definite kernel)로 주어지는데, 예를 들어 Gaussian RBF kernel

K(x,x)exp(xx2)\mathcal K(x,x')\propto \exp(-\Vert x-x'\Vert^2)

가 이용될 수 있다. 이렇게 정의되는 GP를 다음과 같이 표기한다.

f(x)GP(m(x),K(x,x))wherem(x)=E[f(x)]K(x,x)=E[(f(x)m(x))(f(x)m(x))T]f(x) \sim GP(m(x),\mathcal K(x,x')) \\ \text{where} \\ m(x) = \rm{E}[f(x)]\\ \mathcal K(x,x') = \rm{E}[(f(x)-m(x))(f(x')-m(x'))^T]

또한, Gaussan Process의 정의에 의해 Input points X={x1,,xN}\mathbf X=\{x_1,\ldots,x_N\} 에 대해

p(fXX)=N(fXμX,KX,X)p(f_X|\mathbf X) = \mathcal N(f_X|\mu_X,\mathbf K_{X,X})

이 성립한다(각각 GP의 평균함수, 공분산함수에 Input을 대입한 벡터, 행렬을 의미함).

Kernels

Mercer Kernel

커널에 대한 기본적인 설명은 예전에 다룬 글로 대체하고, 여기서는 주로 사용되는 커널들에 대해 다루어보도록 하자. 우선, 만약 입력벡터가 유클리드공간(RD\mathbb R^D)인 경우 stationary kernel이 주로 사용된다. Stationary kernel은 K(x,x)=K(xx)=K(r)\mathcal K(x,x') = \mathcal K(x-x') = \mathcal K(r) 꼴로 표현되는 커널함수를 의미한다.

Examples

  1. Squared Exponential(SE) Kernel
K(r;l)=exp(r22l2)\mathcal K(r;l) = \exp({-r^2 \over 2l^2})
  1. Automatic Relevance Determination(ARD) Kernel

    : RBF 커널에서 유클리드 거리를 마할라노비스 거리로 대체

    K(r;Σ,σ2)=σ2exp(12rTΣ1r)\mathcal K(r;\Sigma,\sigma^2) = \sigma^2\exp(-{1\over2}r^T\Sigma^{-1}r)
  2. Matern Kernel

​ : SE kernel보다 더 rough한 커널로, 더 널리 사용.

K(r;ν,l)=21νΓ(ν)(2νrl)νKν(2νrl)\mathcal{K}(r;\nu,l) = {2^{1-\nu}\over\Gamma(\nu)}\bigg({\sqrt{2\nu}r\over l}\bigg)^\nu K_\nu\bigg({\sqrt{2\nu}r\over l}\bigg)

​ (KνK_\nu 는 수정된 Bessel function)

Mercer's Theorem

고유값분해(eigendecomposition)를 이용하면 p.d인 kernel matrix K\mathbf K를 분해햐여 (i,j)(i,j) 번째 성분을 다음과 같이 나타낼 수 있다.

kij=ϕ(xi)Tϕ(xj)whereϕ(xi)=Λ12U:i,k_{ij} = \phi(x_i)^T\phi(x_j)\\ \text{where}\\ \phi(x_i) = \Lambda^{1\over2}\mathbf U_{:i,}

이러한 아이디어를 기반으로 Kernel Matrix가 아닌, kernel function 자체에 대한 eigendecomposition을 생각할 수 있다. 우선, kernel function K\mathcal K 에 대한 eigenfunction ϕ\phi 및 이에 대응하는 고유값(eigenvalue) λ\lambda를 다음 관계에서 정의하자.

K(x,x)ϕ(x)dμ(x)=λϕ(x)\int\mathcal K(x,x')\phi(x)d\mu(x) = \lambda\phi(x')

이렇게 구해진 eigenfunction들은 서로 orthogonal하다. 즉,

ϕi(x)ϕj(x)dμ(x)=δij\int\phi_i(x)\phi_j(x)d\mu(x) = \delta_{ij}

을 만족한다(우변은 Kronecker delta 함수).

Mercer's Theorem은 이를 바탕으로 한 정리인데, 이는 임의의 p.d인 커널함수는 모두 다음과 같은 무한합으로 나타낼 수 있음을 의미한다.

K(x,x)=m=1λmϕm(x)ϕm(x)\mathcal K(x,x') = \sum_{m=1}^\infty \lambda_m\phi_m(x)\phi_m(x')

GP Regression

Noise-Free observation

Training data D={(xn,yn):n=1:N,xiRD}\mathcal D = \{(x_n,y_n) : n=1:N, x_i\in\mathbb R^D\} 이 주어지고, 이때 noise-free인(오차항이 없는) 함수 yn=f(xn)y_n=f(x_n) 로 관계식이 주어진다고 하자. 이때, 이미 관측된(Training data) xx에 대한 함수값 f(x)f(x)를 추정하는 문제가 주어진다고 하자. 이 경우에는 GP를 가정한 함수 ff를 추정하는 것이 비교적 간단하다. 오차항이 없으므로 Training data를 보간(Interpolate)하는 함수를 찾으면 된다.

반면, 이번에는 Training data 외부에서 관측된 xx,에서의 문제를 생각해보자. 예컨대 N×DN_*\times D 크기의 test dataseet X\mathbf X_*의 원소들에 대응하는 가우시안 벡터

f=[f(x1),,f(xn)]\mathbf f_* = [f(x_1),\ldots,f(x_n)]

를 추정하는 상황을 가정하자. 그러면 GP의 정의에 의해 joint distribution p(fX,fX,X)p(f_X,f_*|X,X_*)은 다음과 같은 joint Gaussian이다.

(fXf)N((μXμ),(KX,XKX,KX,TK,))\begin{pmatrix}\mathbf f_X \\ \mathbf f_*\end{pmatrix} \sim \rm{N} \begin{pmatrix} \begin{pmatrix} \mu_X \\ \mu_* \end{pmatrix} , \begin{pmatrix} \mathbf K_{X,X} & \mathbf K_{X,*} \\ \mathbf K^T_{X,*} & \mathbf K_{*,*} \end{pmatrix} \end{pmatrix}

또한, Joint Gaussian Distribution의 성질로부터(수리통계학 참고) 다음 식들이 성립한다.

p(fX,D)=N(fμX,ΣX)μX=μ+KX,TKX,X1(fXμX)ΣX=K,Kp(\mathbf f_*|\mathbf X_*,\mathcal D) = \rm{N}(\mathbf f_*|\mu_{*|X},\Sigma_{*|X}) \\ \mu_{*|X} = \mu_* + \mathbf K^T_{X,*}\mathbf K^{-1}_{X,X}(\mathbf f_X-\mu_X) \\ \Sigma_*|X = \mathbf K_{*,*} - \mathbf K

Noisy observation

이번에는 일반적인 경우, 즉 Training data가 yn=f(xn)+ϵny_n = f(x_n)+\epsilon_n 의 형태로 주어지는 경우를 다루어보도록 하자. 여기서 오차항은 정규분포(N(0,σy2)N(0,\sigma^2_y))를 따른다고 가정하자. 이 경우, 앞선 케이스와 같이 Interpolation은 불가능하지만, 관측 데이터들에 어느정도 가까운 Regression이 이루어진다. 우선, 관측값들의 공분산은 다음과 같이 주어진다.

Cov(yi,yj)=Cov(fi,fj)+Cov(ϵi,ϵj)=K(xi,xj)+σy2δij\text{Cov}(y_i,y_j) = \text{Cov}(f_i,f_j) + \text{Cov}(\epsilon_i,\epsilon_j) = \mathcal{K}(\mathbf x_i, \mathbf x_j) + \sigma_y^2\delta_{ij}

이를 모든 성분에 대한 행렬로 표현하면,

Cov(yX)=KX,X+σy2IN\text{Cov}(\mathbf{y|X}) = \mathbf K_{X,X} + \sigma^2_y\mathbf I_N

으로 주어진다. 따라서, GP의 정의로부터

(yf)N((μXμ),(KX,X+σy2IKX,KX,TK,))\begin{pmatrix}\mathbf y \\ \mathbf f_*\end{pmatrix} \sim \rm{N} \begin{pmatrix} \begin{pmatrix} \mu_X \\ \mu_* \end{pmatrix} , \begin{pmatrix} \mathbf K_{X,X}+\sigma_y^2\mathbf I & \mathbf K_{X,*} \\ \mathbf K^T_{X,*} & \mathbf K_{*,*} \end{pmatrix} \end{pmatrix}

이 성립한다. 앞선 Noise-free 모델에서 공분산행렬의 구조만 바뀐 것을 확인할 수 있다. 또한, Noise-free 모델과 마찬가지로 Test data X\mathbf X_* 에 대한 Posterior predictive density 역시 구할 수 있다.

Gausaain Process 모델의 적합 과정은 다음 게시글에서 이어서 다루도록 하겠다.

References

  • Probabilistic Machine Learning - Advanced Topics, K.Murphy.
profile
블로그 이사했습니다 https://ddangchani.github.io

0개의 댓글