Mathematics/Statistics

[Bayesian] Gaussian process

언킴 2021. 8. 8. 17:56
반응형

edwith 최성준님의 강의를 참고했다.

 

 

Gaussian process

 


왜 우리는 가우시안 분포를 사용할까? 가우시안 분포는 $\sigma$와 $\mu$ 두가지 변수만 알면 분포를 찾을 수 있기 때문이다. 그리고 중심극한정리(CLT)가 성립하기 때문에 가장 많이 사용한다고 할 수 있다. 가우시안 분포는 다음과 같이 표현한다.

 

univariate Gaussian distribution

$f(x) = {1 \over \sqrt{2 \pi \sigma}} exp(-{1 \over 2}(x-\mu)^2) $

 

central limit theorem : Let $X_{1}, X_{2}, ...$ be independent and identically distributed with $\mathbb{E}(X_{i}) = \mu $ and $var(X_{i}) = \sigma^2 $. If $S_{n} = X_{1} + X_{2} +\ \cdots\ X_{n}$, then

 

${S_{n} - n\mu \over \sigma \sqrt{n}} \overset{d}{\sim} N(0,1) $

 

 

multivariate Gaussian distribution 

$f(x) = {1 \over (2\pi)^{n/2}|\Sigma|^{1/2}} exp(-{1 \over 2}(x-\mu)^{T}\Sigma^{-1}(x-\mu))$

 

$x \sim N(\mu,\Sigma)$, where $\mu$ is the mena vector and $\Sigma$ is the covariance matrix.

 

$\mu = \mathbb{E}(x) = \begin{bmatrix} \mathbb{E}(X_{1}) \\ \vdots \\ \mathbb{E}(X_{n}) \end{bmatrix} $   $\Sigma = cov(x)$

 

우리가 univariate Gaussian distribution 을 표현할 때에는 1-dimention 의 $\mu$와 $\sigma$가 필요하지만 multivariate Gaussian distribution 을 표현하기 위해서는 n-dimention 의 $\mu$와 $\sigma$가 필요하다. 

 

conditional Gaussian distribution

If $x \in \mathbb{R}^r\ and\ y \in \mathbb{R}^m $ are jointly Gaussian with n = r + m, mean vector 

 

$\mu = \begin{bmatrix} \mathbb{E}(x) \\ \mathbb{E}(y) \end{bmatrix}$ , and covariance matrix $\Sigma = \begin{bmatrix} \Sigma_{xx} & \Sigma_{xy} \\ \Sigma_{yx} & \Sigma_{yy} \end{bmatrix} $

 

Then the conditional pdf p(x|y) is also a Gaussian random vector with mean $\mathbb{E}(x|y)$ and covariance matrix $\Sigma_{x|y}$ where

 

$\mathbb{E}(x|y) = \mathbb{E}(x) + \Sigma_{xy}\Sigma^{-1}_{yy}(y - \mathbb{E}(y)) $

$\Sigma_{x|y} = \Sigma_{xx} - \Sigma_{xy}\Sigma^{-1}_{yy}\Sigma_{yx} $

 

다음과 같이 conditional Gaussian distribution 를 정의할 수 있다. 

 

 

 

우리는 Gaussian process에서 임의의 k를 뽑을 때 jointly Gaussian 이면 Gaussian process가 된다. 그리고 $X(1),...,X(t_{k}) $ 는 Gaussian process이기 때문에 다음과 같은 정의를 만족해야한다. 

 

The joint density is completely specified by

- Mean : $m(t) = \mathbb{E}(X(t))$, where $m(\cdot)$ is known as a mean function 

- Covariance : $k(t,s) = cov(X(t), X(s)) =$, where $k(\cdot,\cdot)$ is known as a covariance function.

 

하지만 우리는 $t_{k}$ 가 몇개인지 모른다. 1개를 뽑든, 2개를 뽑든 모두 Gaussian 이기 때문이다. 그렇기 때문에 다음과 같이 적는다. 

 

Notation : $ X(t) \sim \mathcal{GP}(m(t), k(t,s))$

 

위 문제를 이해하기 위해 예제를 한 번 들어보자.

 

Example : $X(t) = tA$, where $A \sim N(0,1)$ and $t \in \mathbb{R}$

 

X(t)는 Gaussian process이다. 위 process의 mean function 을 구해보자. 위 경우 t를 고정하면 t는 constant가 되고, 시간을 고정했을 때 X(t) 는 random variable이 된다. random variable이 고정이 되면 X(t)는 시간에 대한 함수가 된다. 이것이 가장 간단한 random process가 된다. 

 

- Mean : $m(t) = \mathbb{E}(X(t)) = t\mathbb{E}(A) = 0 $

- Covariance : $k(t,s) = \mathbb{E}(tAsA) = ts$

 

 

지금까지 우리가 공부한 Gaussian process는 random process중 하나일 뿐이고 우리가 일반적으로 말하는 bayesian method는 Gaussian process regression을 지칭한다. Gaussian precess를 이용해서 사용하는 어떤 regression 방법론이 gpr이다. 

 

Gaussian process regression 

A nonparametric Bayesian regression method using the properties of Gaussian processes.

 

 

Linear Regression

$f(x) = x^T w $

$y(x) = f(x) + \epsilon \sim N(0,\sigma^2_n)$

 

$ Define X = [x^T_1;\ \cdots\ ;x^T_n]^T. $ Then 

$p(y|X,w) = \underset{i=1}{\overset{n}\prod} p(y_i |x_{i}, w)$

 

= $ \underset{i=1}{\overset{n}\prod} {1 \over \sqrt{2\pi\sigma^2}}exp(-{(y_i - x_i^T w)^2 \over 2\sigma^2_n}$

 

= ${1 \over (2\pi\sigma^2_n)^{n/2}} exp (1{1 \over 2\sigma^2_n}||\mathbf{y} - X^T \mathbf{w}||^2) $

 

= $ N(\mathbf{y}; X^T \mathbf{w}, \sigma^2_n \mathbf{I}). $

 

식을 잘 살펴보면 MLE의 식과 동일하다. Regression의 목적은 $||\mathbf{y} - X^T \mathbf{w}||^2$ 를 최소화 시켜주는 것이다. 위 식을 풀어보면 $ \hat{w} = (XX^T)^{-1}Xy $ 라는 식을 도출할 수 있다. 이 식은 Linear Regression의 솔루션이며, pseudo inverse ( 무어 펜로즈 유사역행렬) 이다. 

 

위 MLE와 Bayesian 과의 차이점은 무엇일까? Bayesian은 무조건 prior가 생긴다. prior는 내가 찾고 싶은 parameter에 대한 prior이다. 어떤 확률분포를 준다하더라도 Bayesian이 될 수 없다! (딥러닝에서는 weight에 대한 prior를 주는 것. 입력에 대한 prior를 주는 것이 아님)

 

 

 

Bayesian formulation

Put a prior over the parameters, i.e. $\mathbf{w} \sim N(\mathbf{0}, \Sigma^p) $

Finding the posterior distribution is the goal of a Bayesian method

 

$p(\mathbf{w}|\mathbf{y}, X) = {p(\mathbf{y}|X, \mathbf{w})\ \cdot\ p(\mathbf{w}) \over p(\mathbf{y}|X) } $ 

 

왜 $\mathbf{w}$를 가우시안 분포를 따른다고 설정했을까? 가우시안이 아니면 계산이 안되기 때문이다. Bayesian의 목적은 posterior distribution을 찾는 것이다. posterior는 데이터가 있을 때 w, parameter에 대한 확률이다. 우리는 prior를 가지고 posterior를 찾는 것으로 끝나는 것이 아니라 그렇게 만든 posterior를 최대로하는 parameter를 구하는 것이 최종적인 목표로 할 수 있다.  posterior를 찾기 위해서는 다음과 같이 우리가 알고 있는 식으로 바꿔주어야 한다. 

 

$p(\mathbf{w}|\mathbf{y}, X) = { p(\mathbf{y}|X, \mathbf{w})\ \cdot\ p(\mathbf{w}) \over p(\mathbf{y}|X)} $

 

$\propto exp({1 \over 2\sigma^2_n}(\mathbf{y} - X^T \mathbf{w} )^T (\mathbf{y} - X^T \mathbf{w})) exp ( -{1 \over 2} \mathbf{w}^T \Sigma^{-1}_p \mathbf{w}) $

 

$\propto exp({1 \over 2} (\mathbf{w} - \bar{\mathbf{w}})^T A(\mathbf{w} - \bar{\mathbf{w}})) $

 

$where\ \bar{\mathbf{w}} = {1 \over \sigma^2_n}A^{-1}X\mathbf{y}\ and\ A = ({1 \over \sigma^2_n}XX^T + \Sigma^{-1}_p) $

 

 

우리가 알고 있는 식으로 바꾸는 과정은 매우 복잡하기 때문에 비례식으로 만들어서 유도했다. 

 

Hence, 

$p(\mathbf{w}|\mathbf{y}, X) = N(\bar{\mathbf{w}}, A^{-1}) $

 

 

하지만 위 식이 항상 가능한 것은 아니고, 가능하게 만드는 prior를 일반적으로 conjugate prior라고 부른다.  우리는 앞에서 posterior distribution이 가우시안이라고 가정을 했다. 그렇다면 posterior distribution의 mean이 posterior를 최대로 만드는 점이 될 것이다. 그때의 parameter를 maximum a posteriori(MAP)이라고 부른다. MAP에서 아무런 의미가 없는 prior를 놓게 되면 MAP가 MLE로 수렴하게 된다. 

 

$\hat{\mathbf{w}}_{MAP} = {1 \over \sigma^2_n}( {1 \over \sigma^2_n}X^T + \Sigma^{-1}_p)^{-1} X\mathbf{y}$

 

아무런 의미없는 prior를 놓게되면 variance matrix 가 엄청나게 커지는, 무한대로 가게되며 그 값에 역을 취하면 0으로 수렴하기 때문에 $\Sigma^{-1}_p = 0 $ 이되며 아래의 MLE식과 동일하게 된다. 

 

$\hat{\mathbf{w}}_{MLE} = (XX^T)^{-1} X\mathbf{y}$

 

 

 

 

 

posterior distribution은 데이터가 주어졌을 때 w에 대한 분포다. 분포이기 때문에 w가 정해져 있는 것이 아니며 우리는 새로운 값이 들어왔을 때 w에 대한 분포를 이용하기 위해서는 평균을 알아야 한다. Bayesian solution은 posterior mean을 구하는 것이다. then the predictive distribution of $f_{*} = f_{*}(x_{*})$

 

$p(f_{*}|\mathbf{x}_{*}, X, \mathbf{y}) = \int p(f_{*}|\mathbf{x}_{*}, \mathbf{w})p(\mathbf{w}|X, \mathbf{y})d\mathbf{w} $

 

=$ N({1 \over \sigma^2_n} x^T_{*} A^{-1} X \mathbf{y}, \mathbf{x}^T_{*} A^{-1} x_{*}) $

 

$where\ A = ({1 \over \sigma^2_n}XX^T + \Sigma^{-1}_p) $

 

 

 

 

 

다시 돌아와서 Gaussian process를 살펴보자.

 

$ f(x) \sim \mathcal{GP}(m(x), k(x,x^{\prime}))$

 

where $m(x) = \mathbb{E}(f(x)) $ is a mean function 

$k(x,x^{\prime}) = \mathbb{E}[f(x) - m(x))(f(x^{\prime}) - m(x^{\prime})]$ is covariance function.

 

위 수식이 어떤 의미를 가지고 있을까? 커널 함수는 $x, x^{\prime}$의 입력이 주어졌을 때 두 값을 통해서 구해지는 함수값들이 얼마나 유사한지 정도를 나타내는 것이다. 커널 함수가 거리에 따라서 급격하게 떨어진다면 ? covariance 가 떨어진다는 것이고, 그 의미는 함수 값 사이의 값이 급격히 떨어지는 것을 의미하며 두 값은 관계가 없다는 것이다. 즉, $k(x,x^{\prime})$은 해당 함수의 굴곡을 정의한다. 

 

 

 Gaussian process latent variable model(GPLVM)

GPLVM은 우리가 가지고 있는 모델이 굉장히 고차원 데이터일 때, 고차원 데이터를 2차원으로 잘 만들어 고차원 데이터가 어떻게 생겼는지 보고 싶을 때 사용하는 시각화 모델이다. GPLVM은 non-linear probabilistic PCA(PPCA)이며 차원 축소와 비선형 구조의 매핑을 하는 것이 목적이다. 

 

observed data: $\mathbf{Y} = \begin{bmatrix} \mathbf{-y_1-} \\ \vdots \\ \mathbf{-y_n-} \end{bmatrix} \in \mathbb{R}^{n\times d} $ 

 

latent data : $\mathbf{X} = \begin{bmatrix} \mathbf{-x_1-} \\ \vdots \\ \mathbf{-x_n-} \end{bmatrix} \in \mathbb{R}^{n\times q}$

 

linear mapping matrix $W \in \mathbb{R}^{d\times q} \Rightarrow \mathbf{Y} = \mathbf{XW^{T}} $

 

d 보다 q는 작아야 한다. d가 더 커야지만 Y가 주어졌을 때 q차원으로 차원을 축소시켜 X를 우리가 관측할 수 있기 때문이다. 우리고 우리는 linear mapping 을 가정한다. 

 

$\mathbf{YY^{T}} $: matrix inner product

$\mathbf{Y^{T}Y} $: covariance matrix

 

 

 

Probabilistic PCA

우리가 알고 있는 PCA는 Latent Space X와 Data Space Y 공간 사이에 Linear mapping W가 존재하고, W를 찾는 것이 우리의 목적이며, W를 잘찾는 모델 중 하나가 PCA다. Probabilistic PCA는 PCA에 어떤 확률적인 요소가 들어간 모델이다. 

 

 

 

 

- Prior distribution 

 

$p(X) = \overset{n}{\underset{i=1}{\prod}} N(x_{(i)}|0,\mathbf{I})$

 

Y라는 데이터를 표현하는 X를 찾는 것이 목적이다. 하지만 우리는 X에 대해서 어떠한 제약도 두지 않는다. 만약 데이터가 충분히 있다면 결과적으로는 잘 찾을 수 있겠지만 데이터가 적으면 Y를 표현하는 데이터 X가 이곳저곳 이상하게 나올 수 있다. 우리가 prior distribution 을 준다는 것은 X라는 데이터가 어떠한 정규분포를 따른다고 가정하고 X를 찾는 것을 의미한다.  

 

- Likelihood

 

$p(Y|X, W) = \overset{n}{\underset{i=1}{\prod}} N(y_{(i)}|Wx_{(i)},\beta^{-1}\mathbf{I})$

 

우리는 측정되는 노이즈가 있다고 가정을 하게 되며, 이 노이즈를 $\beta^{-1}$로 정의한 것이다. 

 

 

- Marginal likelihood

 

$p(Y|W) = \int_{x} p(Y|X, W) p(X)dX = \overset{n}{\underset{i=1}{\prod}} N(y_{(i)}|0, WW^T + \beta^{-1}\mathbf{I})$

 

joint distribution 이 있을때, x를 날려버리려면 모든 가능한 x에 대해서 적분을 하는 것이기 때문에 x를 없애버리기 위해 가능한 모든 x에 적분을 취해주었다. 결과적으로 Marginal Likelihood는 어떠한 W가 주어졌을 때, Y에 대한 분포가 된다. 우리가 찾고 싶은 것이 W이며, 가지고 있는 observe 데이터가 Y이기 때문에 위 식은 Likelihood가 된다. 

 

어떤 파라미터가 있다고 가정했을 때 내 observe 데이터에 대한 확률 분포가 Likelihood이기 때문.

 

 

 

Dual probabilistic PCA

- Prior distribution 

 

$p(W) = \overset{n}{\underset{j=1}{\prod}} N(w_{(j)}|0,\mathbf{I})$

 

 

- Likelihood

 

$p(Y|X, W) = \overset{n}{\underset{i=1}{\prod}} N(y_{(i)}|Wx_{(i)},\beta^{-1}\mathbf{I})$

 

 

- Marginal likelihood

 

$p(Y|W) = \int_{w} p(Y|X, W) p(W)dW = \overset{d}{\underset{j=1}{\prod}} N(y_{(j)}|0, XX^T + \beta^{-1}\mathbf{I})$

 

아까의 Probabilistic PCA와 Dual Probabilistic PCA의 가장 큰 차이는 Dual 에서는 우리가 찾고자하는 파라미터에 대해서 prior를 설정하는 것이라는 점이다. 앞에서는 W를 찾아서 새로운 데이터가 들어왔을 때 W를 이용해서 Latent Space를 찾았는데, Dual PPCA 에서는 애초에 W를 어떠한 값을 가진 Prior random variable를 가지고 있으니 W를 찾아서 X를 찾는것이 아닌 바로 X를 찾는 것이다.

 

 

 

 

 

이제 다시 위로 돌아가서 Gaussian process 를 보면 다음과 같이 표현할 수 있다. 

 

$p(Y|X) = N(Y|0, \mathbf{K}) $

where $[\mathbf{K}]_{(i,j)} = k(x_i, x_j) $ is the kernel matrix.