Gaussian Process

김짝뚜·2023년 9월 30일

Nonparametric Statistics

목록 보기
2/2

Gaussian Process는 Stochastic Process의 한 종류이다. 일종의 베이지안 비모수적 방법인데, 여기서 비모수적이라는 것은 모수가 무한(infinite)으로 존재한다는 것이다.

즉, GP는 다변량 정규분포를 무한 차원으로 확장시킨 것이다. 따라서 GP는 함수에 대한 분포로 표현할 수 있다. 다변량 정규분포가 mean vector와 covariance matrix로 나타나는 것처럼 GP도 mean function과 covariance function으로 정의된다.

P(X)GP(m(t),k(x,x)P(X) \sim GP(m(t), k(x, x^\prime)

covariance function k(x,x)k(x, x^\prime)을 다음과 같이 정의해보자. 커널함수로 많이 사용되고 Gaussian PDF와 유사한 RBF(Radial Basis Function)이다.

k(x,x)=σf2exp(xx222l2)k(x,x^\prime) = \sigma_f^2 \exp (-\frac{||x-x^\prime||_2^2}{2l^2})

여기서 σf2\sigma_f^2는 커널이 표현할 수 있는 최대 공분산의 크기이다. xx\textbf x \approx \textbf x^\prime이면 커널은 최댓값인 σf2\sigma_f^2에 가까워진다. 두 점이 서로 밀접하게 관련되어 있다는 뜻이다. x\textbf xx\textbf x^\prime이 서로 멀어질수록 커널 값은 0에 가까워지는데 이는 두 점 사이의 관련성이 떨어진다는 뜻이다. 이 관련성의 정도를 조절할 수 있는 값이 λ2\lambda^2이다. 두 점 사이의 거리가 같더라도 이 값이 클수록 두 점의 관련성이 높아진다. σf2\sigma^2_fλ2\lambda^2을 kernel parameter라고 한다.
다시 말하자면, xxxx^\prime이 유사할수록 f(x)f(x)f(x)f(x^\prime)이 correlation을 가진다고 해석할 수 있다. 이는 함수가 smooth해지고 이웃한 데이터 포인트끼리 유사해지는 관점에서 좋은 의미이다.

일반적으로 데이터는 Noise를 포함하고 있고, Gaussian Noise라고 가정한다면

y=f(x)+ϵ  ϵN(0,σn2)y = f(x) + \epsilon \\ \; \\ \epsilon \sim N(0,\sigma_n^2)

이를 covariance function에 넣으면 다음과 같다.

k(x,x)=σf2exp(xx222l2)+σn2δ(x,x)k(x, x^\prime) = \sigma_f ^2 \exp(-\frac{||x-x^\prime||_2^2}{2l^2})+\sigma_n^2 \delta(x, x^\prime)

여기에서 δ(x,x)\delta (x, x^\prime)은 Kronecker delta function이다.

GP는 변동성이 큰 비선형 회귀에 편리하게 사용된다.


Gaussian Process Regression

회귀 문제에서는 찾고자 하는 함수가 특정 형태를 가진다고 가정한 후 함수를 OLS 등과 같은 방법으로 추정하여 함수를 찾아낸다. 그러나 Gaussian Process Regression에서는 찾고 싶은 함수가 Gaussian Process를 따른다고 가정한다. 즉, 만들어질 수 있는 모든 함수에 대해 확률을 부여하는 방식이다.
미지의 함수를 GP f(x)f(\textbf x)로 표현한다는 것은 mm개의 관측값 f1:m=[f1  f2    fm]T\textbf f_{1:m} = [f_1\; f_2\; \ldots \; f_m]^T를 어떤 GP의 특정 index x1:m\textbf x_{1:m}에서 sampling된 값으로 간주하는 것이다. 즉,

f1:mN(m(x1:m),K)\textbf f_{1:m} \sim N(m(\textbf x_{1:m}), K)

이고 여기서

x1:m={x1,x2,,xm}  K=[k(x1,x1)k(x1,x2)k(x1,xm)k(xm,x1)k(xm,x2)k(xm,xm)]\textbf x_{1:m} = \{ \textbf x_1, \textbf x_2 , \ldots, \textbf x_m \} \\ \; \\ K = \begin{bmatrix} k(\textbf x_1, \textbf x_1) & k(\textbf x_1, \textbf x_2) & \cdots & k(\textbf x_1, \textbf x_m) \\ \vdots & \vdots & \ddots & \vdots \\ k(\textbf x_m, \textbf x_1) & k(\textbf x_m, \textbf x_2) & \cdots & k(\textbf x_m, \textbf x_m) \end{bmatrix}

이다.

GP를 function space view로 이해해보자.
어떤 함수 ff를 찾아보자. 이 함수는 확률모형이기 때문에 신뢰구간(confidence interval)을 갖는다.

D=[x,y]\mathcal D = [ \textbf x, \textbf y ]

그리고 Gaussian Process는 mean function과 covariance function으로 함수에 대한 분포를한다.

p(f)=f(x)GP(m,k)p(f) = f(x) \sim GP(m,k)

이는 베이즈 정리에 의해 다음과 같이 정의된다.

p(fD)=p(f)p(Df)p(Dp(f|\mathcal D) = \frac{p(f)p(\mathcal D|f)}{p(\mathcal D}

Posterior를 구하기 위해서는 Prior와 Likelihood가 필요하다. 여기서 Prior는 Gaussian Process를 따른다고 가정하면 Likelihood만 구하면 된다.

우선 데이터 D\mathcal D는 일반적으로 Noise를 가지고 있다. 따라서 f(x)f(x)를 추정하는 것이 아닌 Noise를 포함한 y=f(x)+ϵy = f(x) +\epsilon를 추정해야 한다.
Noise에 대한 가정은 ϵN(0,σn2)\epsilon \sim N(0,\sigma_n^2) 이라 하자.

ff의 Prior는 GP이고, likelihood는 normal distribution이므로 ff에 대한 Posterior는 GP가 된다.
mean function을 0으로 가정하고 주어진 데이터로 Marginal likelihood를 구하면 다음과 같다. (사전정보가 없는 경우에는 mean function을 0으로 둔다)

p(yx)=p(yf,x)p(fx)df=N(0,K)p(\textbf y | \textbf x) = \int p(\textbf y | f, \textbf x)p(f| \textbf x)df = N(0,K)

따라서 Log marginal likelihood는 아래와 같다.

logp(yx,θ)=12logK12yTK1yn2log(2π)\log p(\textbf y | \textbf x , \theta) = -\frac{1}{2}\log |K| - \frac{1}{2}\textbf y^T K^{-1} \textbf y - \frac{n}{2}\log (2\pi)

이제 새로운 관측값 xx_*가 주어졌을 때, Posterior distribution 다음과 같다.

p(yx,D)=p(yx,f,D)p(fD)df=N(KK1y,KKK1KT)p(y_*|x_*, \mathcal D) = \int p(y_* | x_* , f, \mathcal D)p(f|\mathcal D)df\\ = N(K_* K^{-1}\textbf y, K_** - K_* K^{-1} K_*^T)

여기에서 평균인 KK1yK_*K^{-1}\textbf yy\textbf y에 대한 선형결합으로 표현할 수도 있다.

KK1y=i=1nαik(xi,x)α=K1yK_* K^{-1} \textbf y = \sum_{i=1}^n \alpha_i k(x_i, x_*)\alpha = K^{-1}\textbf y
profile
안녕하세요

0개의 댓글