본문 바로가기
AI 딥러닝/ML

[GP-1] 가우시안 프로세스 (Gaussian Process)의 개념

by 세인트워터멜론 2022. 6. 26.

랜덤변수(random variable)는 확률 실험의 결과에 실숫값을 대응시키는 함수로 정의된다. 또한 랜덤 프로세스(random process)는 어떤 파라미터로 인덱스(index)된 무한개의 랜덤변수의 집합으로 정의된다.

 

 

즉 랜덤 프로세스는 확률 실험 결과와 인덱스 파라미터 등 두 개의 변수로 구성된 함수로 생각할 수 있다. 보통 인덱스로 시간 파라미터가 많이 사용되지만 공간 파라미터도 인덱스가 될 수 있다. 여기서는 인덱스를 공간 파라미터인 \(\mathbf{x}\) 로, 랜덤 프로세스를 \(f\) 로 표기하겠다. 그러면 랜덤 프로세스를 다음과 같이 함수 형태로 쓸 수 있다.

 

\[ f(e,\mathbf{x}) \]

 

여기서 \(e\) 는 확률 실험을 나타낸다. 하지만 일반적으로 확률 실험을 명시적으로 나타내지 않고 인덱스만을 표시한 \(f(\mathbf{x})\) 로 표기한다.

인덱스 파라미터를 고정시킨다면 랜덤 프로세스는 랜덤변수가 된다. 또한 확률 실험 결과를 고정시킨다면 랜덤 프로세스는 확정적 함수가 된다. 이 함수를 샘플함수(sample function)라고 한다.

 

 

가우시안 프로세스(GP, Gaussian process)는 프로세스 집합 내에 있는 랜덤변수들의 임의의 조합이 모두 결합(joint) 가우시안 분포를 갖는 랜덤 프로세스로 정의된다.

예를 들어서 인덱스 \(\mathbf{x}_1, \mathbf{x}_2, ... , \mathbf{x}_m\) 에 해당하는 랜덤변수가 \(f_i=f(\mathbf{x}_i )\) 일 때, 이로부터 가능한 모든 부분 집합 \( \{f_1\}, \{f_2, f_3 \}, ... , \{f_1, f_2, f_m \} \) 이 모두 결합 가우시안 분포를 갖는 프로세스이다. 달리 설명하자면, \(f_i\) 을 성분으로 하는 벡터 \(\mathbf{f}_{1:m}= \begin{bmatrix} f_1 & f_2 & ... & f_m \end{bmatrix}^T\) 가 가우시안 랜덤벡터인 프로세스이다. 여기서 \(m\) 은 프로세스에서 임의로 선정한 인덱스의 갯수이므로, 가우시안 랜덤벡터는 무한 차원을 가질 수 있다. 즉 가우시안 프로세스는 가우시안 랜덤벡터를 무한 차원으로 확장한 것으로 설명할 수도 있겠다.

가우시안 랜덤벡터의 특성을 평균과 공분산으로 표현하듯이 가우시안 프로세스도 평균함수 \(\mu(\mathbf{x})\) 와 공분산 \(k(\mathbf{x}, \mathbf{x}^\prime )\) 로 특징지울 수 있다.

 

\[ f(\mathbf{x}) \sim \mathcal{GP} \left( \mu (\mathbf{x}), k(\mathbf{x}, \mathbf{x}^\prime ) \right) \]

 

여기서 공분산 \(k(\mathbf{x}, \mathbf{x}' )\) 는 다음과 같다.

 

\[ k(\mathbf{x}, \mathbf{x}' ) = \mathbb{E} \left[ (f(\mathbf{x})- \mu (\mathbf{x}))(f(\mathbf{x'})- \mu (\mathbf{x'})) \right] \]

 

공분산은 프로세스 내에서 서로 다른 두 점 \(\mathbf{x}\) 와 \(\mathbf{x}'\) 의 상호 연관성을 나타낸다. 가우시안 프로세스에서는 공분산 \(k(\mathbf{x}, \mathbf{x}' )\) 을 커널함수(kernel function)라고 한다. 다음 그림은 \(\mu (x)=0, \ k(x, x' ) = \exp \left( -\frac{1}{2} (x-x' )^2 \right)\) 일 때의 가우시안 프로세스의 샘플함수10개를 그린 것이다.

 

 

여기까지가 가우시안 프로세스의 일반적인 설명이다. 이제 기계학습에서 사용되는 가우시안 프로세스에 대해서 알아보기로 하자.

 

 

가우시안 프로세스는 회귀(regression) 문제, 분류(classification) 문제, 차원축소(dimensionality reduction) 문제 등에 적용할 수 있다. 이 중에서 가우시안 프로세스 회귀(GP regression) 문제를 먼저 다루어 보기로 하자.

다음 그림과 같이 \(m\) 개의 데이터셋 \(\mathcal{D}= \{ (\mathbf{x}_1, f_1 ), (\mathbf{x}_2, f_2 ), ... , (\mathbf{x}_m, f_m ) \}\) 이 주어졌다고 하자.

 

 

회귀 문제는 데이터셋에 없는 독립변수의 특정 값 \(\mathbf{x}_*\) 에 대응하는 종속변수 값 \(f_*\) 을 추정하는 문제다. 일반적으로 생각할 수 있는 방법은 함수 피팅(fitting)이다. 데이터의 추세에 따라서 미지의 목표 함수(target function) \(g(\mathbf{x})\) 를 1차, 2차 함수 등의 다항식 또는 비다항식 함수로 가정하고, 선정된 함수 모델의 파라미터를 최소제곱법 등을 이용하여 추정한다. 그리고 그 추정된 함수를 이용하여 \(f_*=g(\mathbf{x}_*)\) 를 계산한다.

 

 

반면에 GP 회귀 문제에서는 이와 다른 접근 방법을 사용한다. 목표 함수가 특정 형태를 갖는다고 가정하는 대신에 가우시안 프로세스 \(f(\mathbf{x})\) 로 간주한다. 구현 가능한 모든 함수에 대해 확률을 부여하는 접근 방법이라고 볼 수 있겠다. 미지의 함수를 가우시안 프로세스 \(f(\mathbf{x})\) 로 표현한다는 것은 데이터셋에서 \(m\) 개의 관측값 \(\mathbf{f}_{1:m} = \begin{bmatrix} f_1 & f_2 & ... & f_m \end{bmatrix}^T\) 을 어떤 가우시안 프로세스의 특정 인덱스 \(\mathbf{x}_{1:m}\) 에서 샘플링된 값으로 간주하는 것이다. 즉,

 

\[ \mathbf{f}_{1:m} \sim \mathcal{N} \left( \mu (\mathbf{x}_{1:m} ), K \right) \]

 

여기서

 

\[ \begin{align} & \mathbf{x}_{1:m} = \{ \mathbf{x}_1, \mathbf{x}_2, ... , \mathbf{x}_m \} \\ \\ & K = \begin{bmatrix} k(\mathbf{x}_1, \mathbf{x}_1) & k(\mathbf{x}_1, \mathbf{x}_2) & \cdots & k(\mathbf{x}_1, \mathbf{x}_m) \\ k(\mathbf{x}_2, \mathbf{x}_1) & k(\mathbf{x}_2, \mathbf{x}_2) & \cdots & k(\mathbf{x}_2, \mathbf{x}_m) \\ \vdots & \vdots & \ddots & \vdots \\ k(\mathbf{x}_m, \mathbf{x}_1) & k(\mathbf{x}_m, \mathbf{x}_2) & \cdots & k(\mathbf{x}_m, \mathbf{x}_m ) \end{bmatrix} \end{align} \]

 

이다.

 

 

GP 회귀 문제에서는 인덱스 파라미터 \( \mathbf{x}\) 를 입력이라고 한다. 그림의 예와는 다르게 일반적으로 입력은 많은 입력 변수가 있기 때문에 벡터로 표시한다. 관측값 또는 출력 \(f_i\) 는 연속값(continuous value)을 갖는다. 참고로 GP 분류 문제에서는 관측값이 이산값(discrete value)이다. 평균함수 \(\mu (\mathbf{x})\) 는 관측값의 전반적인 추세를 나타내고 커널함수 \(k(\mathbf{x}, \mathbf{x}' )\) 는 두 관측값의 사이의 기하학적인 유사도를 나타낸다.

미지의 목표함수에 대한 사전 정보가 없는 경우에는 평균함수는 \(\mu( \mathbf{x})=0\) 으로 놓는다. 커널함수로 많이 사용되는 함수는 다음과 같이 가우시안 확률밀도함수와 유사한 RBF (radial basis function) 이다.

 

\[ k(\mathbf{x}, \mathbf{x}' ) = \sigma_f^2 \exp \left( - \frac{ ‖ \mathbf{x}- \mathbf{x}' ‖_2^2 }{2 \lambda^2 } \right) \]

 

여기서 \(\sigma_f^2\) 는 커널이 표현할 수 있는 최대 공분산의 크기를 나타낸다. \(\mathbf{x} \approx \mathbf{x}'\) 이면 커널은 최대값 \(\sigma_f^2\) 에 가까워진다. 두 점이 서로 밀접하게 관련되어 있다는 뜻이다. \(\mathbf{x}\) 와 \(\mathbf{x}'\) 가 서로 멀리 떨어질 수록 커널값은 \(0\) 에 가까워지는데 이는 두 점 사이의 관련성이 떨어진다는 뜻이다. 이 관련성의 정도를 조절할 수 있는 값이 \(\lambda^2\) 이다. 두 점 사이의 거리가 같더라도 이 값이 클수록 두 점의 관련성이 높아진다. \(\sigma_f^2\) 와 \(\lambda^2\) 를 커널 파라미터라고 한다.

GP 회귀 문제는 \(m\) 개의 데이터셋 \(\mathcal{D}= \{ (\mathbf{x}_i, f_i ), \ i= 1, ... ,m \}\) 이 주어졌을 때, \(p\) 개의 입력 \(\{\mathbf{x}_{m+1}, ... , \mathbf{x}_{m+p} \}\) 에 대응하는 출력 \(\mathbf{f}_* = \begin{bmatrix} f_{m+1} & ... & f_{m+p} \end{bmatrix}^T\) 를 추정하는 문제로서 가우시안 프로세스 틀에서 다음과 같이 정식화 할 수 있다.

즉, 다음과 같이 가우시안 분포가 주어졌을 때,

 

\[ \begin{bmatrix} \mathbf{f}_{1:m} \\ \mathbf{f}_* \end{bmatrix} \sim \mathcal{N} \left( \begin{bmatrix} \mu (\mathbf{x}_{1:m}) \\ \mu (\mathbf{x}_{m+1:m+p}) \end{bmatrix}, \begin{bmatrix} K & K_* \\ K_*^T & K_{**} \end{bmatrix} \right) \]

 

\(\mathbf{f}_*\) 의 조건부 확률밀도함수 \(p ( \mathbf{f}_* \vert \mathbf{x}_{1:m}, \mathbf{x}_{m+1:m+p}, \mathbf{f}_{1:m} )\) 를 구하는 문제다. 여기서

 

\[ \begin{align} & K_* = \begin{bmatrix} k(\mathbf{x}_1, \mathbf{x}_{m+1}) & \cdots & k(\mathbf{x}_1, \mathbf{x}_{m+p}) \\ \vdots & \ddots & \vdots \\ k(\mathbf{x}_m, \mathbf{x}_{m+1}) & \cdots & k(\mathbf{x}_m, \mathbf{x}_{m+p}) \end{bmatrix} \\ \\ & K_{**} = \begin{bmatrix} k(\mathbf{x}_{m+1}, \mathbf{x}_{m+1}) & \cdots & k(\mathbf{x}_{m+1}, \mathbf{x}_{m+p}) \\ \vdots & \ddots & \vdots \\ k(\mathbf{x}_{m+p}, \mathbf{x}_{m+1}) & \cdots & k(\mathbf{x}_{m+p}, \mathbf{x}_{m+p}) \end{bmatrix} \end{align} \]

 

이다.

다음 포스팅에서는 조건부 확률밀도함수를 계산하는 방법, 주어진 데이터셋을 이용하여 커널 파라미터를 학습하는 방법, 미지의 목표함수를 효과적으로 추정하기 위한 입력 \(\mathbf{x}\) 의 선정 방법, GP 회귀 문제의 응용 등에 대해서 차례로 알아보기로 한다.

 

 

 

댓글0