가우스 과정
정의 1
확률과정 $\left\{ X_{t} \right\}$ 의 모든 유한 부분집합 $S = \left\{ X_{t_{k}} \right\}_{k=1}^{n} \subset \left\{ X_{t} \right\}$ 에 대해 $S$ 의 원소들의 모든 선형결합 $$ \sum_{k=1}^{n} a_{k} X_{t_{k}} \qquad , \left\{ a_{k} \right\}_{k=1}^{n} \subset \mathbb{R} $$ 가 다변량 정규분포를 따르면 $\left\{ X_{t} \right\}$ 가 가우시안 프로세스Gaussian process라고 한다.
설명
비전공자가 보기에는 정의가 조금 지나치게 수학적으로 보일 수 있는데, 직관적으로 보았을 땐 위너 프로세스와 크게 다르지 않다. 물론 정의에 따라 엄밀하게 따져보면 위너 프로세스는 가우시안 프로세스지만 그 역은 성립하지 않는다.
기하 브라운 운동은 각 시점에서 로그-정규분포를 따르므로 가우시안 프로세스가 아니다.
응용
베이지안에서는 사전 분포 그 자체로. 머신러닝에서는 랜덤한 데이터를 만들어내는 등으로 자주 쓰인다. 예로써 $\left[ x_{1} , x_{n} \right]$ 에서 가우시안 프로세스를 만드는 수단으로는 다음과 같이 가우시안 커널 $k = k(u,v)$ 로 공분산행렬 $\Sigma$ 를 만들어서 다변량정규분포에서 샘플링하는 방법이 널리 사용되고 있다. $$ \begin{align*} k \left( u, v \right) =& \exp \left( - {\frac{ 1 }{ 2 }} \left( u - v \right)^{2} \right) \\ \Sigma =& \begin{bmatrix} k \left( x_{1} , x_{1} \right) & k \left( x_{1} , x_{2} \right) & \cdots & k \left( x_{1} , x_{n} \right) \\ k \left( x_{2} , x_{1} \right) & k \left( x_{2} , x_{2} \right) & \cdots & k \left( x_{2} , x_{n} \right) \\ \vdots & \vdots & \ddots & \vdots \\ k \left( x_{n} , x_{1} \right) & k \left( x_{n} , x_{2} \right) & \cdots & k \left( x_{n} , x_{n} \right) \end{bmatrix} \end{align*} $$
다음은 가우시안 프로세스를 샘플링하는 예제 코드를 줄리아로 구현한 것이다. 중간에 $\Sigma$ 에 아주 작게 $\varepsilon I$ 을 더하는 이유는 수치적인 오류를 방지하기 위함이다.
$\mathbb{R}^{1}$ 에서 샘플링
using Distributions, LinearAlgebra, Plots
k(u, v) = exp(-abs2(u - v) / 2)
x = LinRange(-5, 5, 100)
Σ = [k(x[i],x[j],1) for i ∈ 1:100, j ∈ 1:100]
ϵ = 1e-6
Σ += ϵ*I
plot(x, [rand(MvNormal(zeros(100), Σ)) for _ in 1:10],
legend = :none, title = "Gaussian Process", lw = 2, alpha = .5)
$\mathbb{R}^{2}$ 에서 샘플링
$\mathbb{R}^{1}$ 에서와 달리 커널 함수에 들어가는 좌표가 $2$차원 벡터로 대체된다. 그러나 샘플링이 다변량 정규분포를 따르는 랜덤 벡터로써 얻어지는 것엔 차이가 없다. 그 벡터를 행렬의 모양으로 바꾸는 것이 핵심이다.
using Distributions, LinearAlgebra, Plots
k(u, v) = exp(-norm(u - v) / 2)
L = 100
x = LinRange(-5, 5, L)
Σ = reshape([k(u, v) for u in collect.(Base.product(x, x)) for v in collect.(Base.product(x, x))], L^2, L^2)
ϵ = 1e-6
Σ += ϵ*I
heatmap(x, x, reshape(rand(MvNormal(zeros(L^2), Σ)), L, L),
title = "Gaussian Process", size = [400, 400])
같이보기
Yang. (2008). LRD of Fractional Brownian Motion and Application in Data Network: p3. ↩︎