가우시안 프로세스 (Gaussian Process Regression)
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Gaussian Process
가우시안 프로세스 는 Regression을 하는 과정에서 정확한 값을 얻는 것이 아니라 어떠한 확률 분포를 얻는 것입니다. Regression을 할때 정확한 Weight(계수)를 얻는 것이 이전에 방법이 었다면, 가우시안 프로세스 는 확률적으로 Weight를 얻는 것이라고 말할 수 있습니다. Weight가 확률적으로 표현이 되니 평균 값 또한, 확률적 표현을 가지는 Mean function으로 예측이 됩니다. 이러한 Weight는 Covariance Function이 됩니다. 즉, 가우시안 프로세스는 적합한 Coviance를 찾아주는 작업이라고 볼 수 있습니다.
Data 란?
우리는 데이터를 해석하기 위해서는 다음과 같은 성질이 있음을 알아야 합니다. Data는 Random error와 Main effect로 구별 할 수 있습니다.![](https://hdchemeng.com/wp-content/uploads/2021/11/가우스프로세스.png)위 그림을 보시면 같은 포인트에서 여러번 실험해서 분산을 구하는 경우가 White noise인 Random error 부분에 해당합니다. 이 Random error는 평균이 0이게 되며, 반복 실험을 통해 얻어진 실험은 노이즈가 제거된 데이터로볼 수 있습니다. 반복 실험의 평균을 모아 전체 평균을 다시 내주게 되면, 우리는 Rnadom variable의 level 변화에 따라 (온도의 변화에 따라), 전체 평균으로 얼마나 멀어지는지 알 수 있습니다. 우리는 이를 가지고 Main effect라고 해주게됩니다.(a) 여기서 Main effcet라는 것이 Variance가 됩니다.즉, 가우시안 프로세스를 수행한다는 것은 이 Main effect에 대한 영향이 얼마나 잇는지 확인해주는 과정이라고도 볼 수 있습니다. 만약, 여러개의 Variable을 해석하는 경우에서는 Main effect들이 증가하게되고, Main effect들 끼리의 상호 작용이 발생할 수 있습니다. ab가 상호작용을 말하게되며 이는, Covariance로 수식에서 나타나게됩니다. 이에 따라 Covariance를 표현하는 것은 위에 대한 데이터 해석의 과정임을 알 수 있습니다.
Moving Average
평균이 확률적인 함수이기 때문에분산 또한 함수의 형태로 나타납니다. Mean function을 Moving average로 표현을 해주게 됩니다. Mean Average(function)는 아래와 같이 정의 해줄 수 있습니다. (개념만 확인하고 넘어가주세요).
MA(x)=\frac{1}{\Sigma_{x_i \in D}k(x,x_i)}\Sigma_{x_i \in D}k(x,x_i)y_i \\ k(x,x_i)=exp(-\frac{|x-x_i|^2}{L^2})
Kernel
여기서 k는 kernel이라고 불리우는 함수가 됩니다. 먼저, Mean average식을 보면 MA(x)=\frac{1}{\Sigma_{x_i \in D}k(x,x_i)}\Sigma_{x_i \in D}k(x,x_i)y_i , 전체 합으로 나눠 주워서 Probability 형태로 나타내준 것으로 볼 수 있습니다. 이를 Normalization을 시켜서 0 ~ 1 사이의 분포를 가지고 있다고도 말 할 수 있습니다. 이에, 다음과 같이 확률 형태로도 볼 수 있겠습니다.
P(x,x_i)=\frac{k(x,x_i)}{\Sigma_{x_i \in D}k(x,x_i)}
Mean function and Covariance
Weight가 확률 분포를 따를때, Y도 확률 분포를 따르는지 확인해보겠습니다. Weight가 평균이 0이고 분산이 \alpha^{-1} 의 확률 분포를 따른다고 보도록 하겠습니다. 그러면 선형회귀에서는 Model 곡선에 대하여 다음과 같이 표현을 해줍니다. Y=\phi w 여기서, \phi basis function, w는 Weight vector가 됩니다.만약, 우리가 원하고자 하는 함수 또한 linear mapping이 가능하다고 하겠습니다. 이러면, Weight가 확률 분포를 따른다고 했으니 관측치 Y 값도 확률 분포를 따르게 됩니다.
Y=\phi w\\ \phi:Design \ matrix. \ \phi_{nk}=\phi_k(x_n)\\ if \text{ w is prbabilistically distributed values (not deterministic)} \\ P(w)=N(w|0,\alpha^{-1} I) \rightarrow E[Y]=E[\phi w]=\phi E[w]=0 \\
이렇게 되면 weight가 어떠한 확률 분포를 따르게 되니, Y도 확률 분포인 함수가 됩니다. Mean자체가 deterministic한 것이 아니라 확률적인 분포를 가지는 형태가 됩니다. 이렇게 확률을 가지고 해석하는 과정을 프로세스라하며, 이러한 확률적인 회귀 과정을 가우시안 프로세스라고 불러 주게됩니다.
정규화 작업
가우시안 프로세스 해석을 위해선 먼저 정규화 작업이 필요하게 됩니다. 먼저 Notation은 w|0 \leftarrow | 옆에 있는 부분은 w=0일 경우를 말하게 됩니다. N은 Normal Distribution을 말하며, 표기에서는 N(평균,분산)순서로 표기합니다.
여기서 평균을 0으로 Normalization하게 된 이유는 계산의 편의성때문에 수행이 되었습니다. Weight간의 Independent하다고 보면 ( w_iw_j=0, i\neq j ) , 대각행렬만 남게되어서 Covariance를 다음과 같이 쉽게 구해줄 수 있게됩니다.
\begin {align} Cov[Y] &=E[(Y-0)(Y-0)^T]=E[YY^T] \\ &=E[\phi w w^T \phi^T]=\phi E[WW^T]=\frac{1}{\alpha}\phi\phi^T \\ \end{align}
Basis Function
위의 형태를 보게되면, Covariance 값은 Basis function을 가지고 Matrix 형태로 만들어준 형태가 됩니다. (이러한 연산을 뭐라해야할지는 잘 모르겠습니다..) 이를 우리가 Kernel 이라는 형태로 부르게됩니다. 그러면 Y에 대한 확률 분포는 평균이 0이며 Covariance는 Kernel인 분포를 따르는 것을 확인할 수 있습니다.
\begin {align} K_{n,m} &= k(x_n,x_m)= \frac{1}{\alpha}\phi(x_n)\phi(x_m)^T \\ P(Y) &=N(Y|0,K) \\ \end {align}
이제 Basis function을 무엇을 쓸 것인가 결정을 해야하는데, 보통 Mathern이나 Gaussian 형태로 쓴다고 합니다.
장점은 차수가 정해진 것이 아닌 무한대로 확장이 된 개념으로 볼 수 있기 때문에 많이 사용한다고 합니다. 이는 Exponential 함수가 가지고 있는 특성이라고 볼 수 있습니다. Exponential 함수는 미분이 계속 가능하기 때문에 (Analytic) 차수를 정할 수 없는 듯합니다. 반면, Basis function을 2차, 3차로 정해두게 되면, 한정적인 해밖에 얻을 수 없게됩니다.
또한, Gaussian을 Basis Function을 쓰게 되는 경우 수식을 생각해본다면, x와 가까울 수록 최대치가 1인 값을 멀어지면 점점 줄어드는 값을 가지게 됩니다. 이는 Moving Average를 구하는 것과 동일하게 됩니다.
k(x_i,x_j)=exp(-\gamma ||x_i-x_j||^2), \gamma=1/2\sigma^2
Kernel Matrix
가우시안 프로세스의 핵심은 Kernel matrix는 이라고 볼 수 있습니다. 여기에서 중요한 내용은 먼저 거리를 구한다음에, Kernel matrix 자체를 먼저 만들어 준다음에, Regression이 된다는 장점이 있습니다.그 다음으로는 Maximize Likelihood와 같은 최적화를 통해 Gamma값을 찾아, 예측의 정확성을 높이는 작업이 수행됩니다. 즉, Direct로 \phi 를 구하지 않고, Kernel을 통해 얻어진 공간을 가지고 \phi$$ 를 예측하는 과정이라고 볼 수 있겠습니다. 이제 이에 대한 활용법을 어떻게 쓸 수 잇는지 알아 보겠습니다.관측 값이 t_n=y_n+e_n 으로 주어져 있다고 보겠습니다. 어느정도 노이즈가 섞인 값이 되겠죠?
t_n: Observed \ Value, y_n:Latent, (error-free value) , e_n: Error\ term(Noise).y_n을 True 라는 사실을 가정하고 t_n 의 분포를 보고 싶다. 라고하면 아래와 같이 써줄 수 있게 됩니다. (아직까지는 굳이 이런걸 해야하나 싶을 수 도있습니다…)
n시점에 대해서는 다음과 같이 표현되고 P(t_n|y_n)=N(t_n|y_n,\beta^{-1}), where \beta is error precision.
(분산의 역수를 precision이라고 표현합니다.) 전체 Set에서 Vector와 Matrix로 표현해줄 수 있습니다.
P(T|Y)=N(T|Y,\beta^{-1}I_N)
Joint Distribution
여기서 보게되면 Y가 정규분포를 따르고, Error도 정규분포를 따르니 T도 정규분포를 따른다고 할 수 있습니다. T에 대한 분포 예측 값은 joint distribution으로 표현됩니다.
P(T)=\int P(T|Y)P(Y)dY=\int N(T|Y,\beta^{-1}I_N)N(Y|0,K)dY
Joint distribution을 조건부 확률의 정의를 이용해서 나타내면 다음과 같이 표기 됩니다. P(T|Y)P(Y) =P(T,Y)=P(Z)
각 확률 들이 정규분포를 따르는 경우 아래와 같이 식을 써서 전개를 해줄 수가 있습니다. 여기서 log를 씌운뒤에 Z에 대한 분포를 구하면 아래와 같은 형태로 나타나게 됩니다.
\begin{align} P(T|Y)P(Y) &=P(T,Y)=P(Z) \\ N(x|\mu,\Sigma ) &=\frac{1}{\sqrt{2\pi}^{D/2}|\Sigma|^{1/2}}exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)) \\ lnP(z) &=lnP(Y)+lnP(T|Y) \\ &=-1/2*Y^TK^{-1}Y-1/2(T-Y)^T\beta I_n(T-Y)+constant \\ \end{align}
위에서 나타낸 식들을 변수 (T,Y)에 대하여 Matrix 형태로 변환해주면 다음과 같이 정리해줄 수 있게 됩니다.
lnP(z)=-\frac{1}{2} \left( \begin{matrix} Y \\T \end{matrix}\right)^T \left[ \begin{matrix} K^{-1}+\beta I_n && -\beta I_n \\ -\beta I_n && \beta I_n \end{matrix}\right] \left( \begin{matrix} Y \\T \end{matrix}\right) =\frac{-1}{2}Z^TRZ \\ \left[ \begin{matrix} A && B\\ C && D \end{matrix}\right] ^{-1}= \left[ \begin{matrix} M && -MBD^{-1}\\ -D^{-1}CM && D^{-1}+D^{-1}CMBD^{-1} \end{matrix}\right] , \\ where \, M=(A-BD^{-1}C)^{-1} \\ R^{-1}= \left[ \begin{matrix} K && K\\ K && \beta^{-1} I_n+K \end{matrix}\right]
이제 Kernel의 중요성이 나오게 되는데, Matrix형태의 역행렬을 구해보면 Kernel Matrix로 나오게 됩니다. 이는 분산이 Kernel matrix(R^{-1})을 따르는 것을 말해주고 평균이 0인 분포를 말해줍니다. P(Z)=N(Z|0,R^{-1})
Marginal probability
가우시안 프로세스 마지막 단계입니다. Joint distribution에서 Marginalize 해줘야합니다. Marginalize의 실질적인 의미는 근체의 확률 분포를 예측을 하는 것입니다. 그냥 우리는 Joint Distribution에서 우리가 원하는 값만 꺼내는 것이라고 생각하는 것이 편할 수도 있습니다.
수식적으로 표현하자면 다음과 같이 정의해줄 수 있습니다.
이 과정에서 사용될 Multivariate Normal Distribution의 2가지 Theorem을 이용해줄 예정입니다.
Given X=[X_1,X_2]^T, \mu=[\mu_1,\mu_2]^T, \Sigma=\left[\begin {matrix} \Sigma_{11} & \Sigma_{12} \\ \Sigma_{21} & \Sigma_{22} \end{matrix} \right] \\ P(X_1)=N(X_1|\mu_1,\Sigma_{11})\\ P(X_1|X_2)=N(X_1|\mu_1+\Sigma_{12}\Sigma_{22}^{-1}(X_2-\mu_2),\Sigma_{11}-\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21})
Covariance의 물리적 의미
이 식의 의미를 보자면, X_2 가 주어졌을 때, X_1 의 분포가 어떻게 될 것인가를 보는 것입니다.
간단하게 생각해보면 X_1 은 평균 \mu_1 근처에 있을 것인데 이는 X_2 평균에서 얼마나 떨어져 있는가를 가지고 X_1의 분포를 예측하는 것입니다. 먼저 \Sigma_{22}를 가지고 역수를 취하게 되는데 이는 X_2가 가지고 Scale을 없에주는 역할을 하게 됩니다. 다음으로는 \Sigma_{12}가 연산이 되는데 이는 X_2 가 변화 했을 때, X_1의 변화정도를 말해주게됩니다. 이에 X_2변화량 대비 X_1의 평균 변화량을 알게 해주는 Factor 가 됩니다.
다음으로 분산도 동일하게 됩니다. 먼저 X_2가 가지고 있는 분산을 정규화시켜준 뒤에, X_1 로 보내주어서 분산의 변화량을 말해주게 됩니다. 실제로 수식에서는 Exponential 함수이니 교집합의 분포를 구한뒤에 X_2의 분포로 나눠주면 됩니다.
P(X|Y)=\frac{P(Z)}{P(Y)}=N(0+R^{-1}Y)참고사항
Marginal Probability
\begin {equation} \begin {aligned} p_X(x) &=\int_y p_{X|Y}p_Y(y)dy=E_Y(p_{X|Y}(x|y)), \text {where } p_{Y|X}=\frac{P(X=x,Y=y)}{P_X(x)} \\ E_Y[F(Y)] &=\int_yf(y)p_ydy \\ \end {aligned} \end {equation}
댓글
댓글 쓰기