가우스 과정
정의 1
확률과정 의 모든 유한 부분집합 에 대해 의 원소들의 모든 선형결합 가 다변량 정규분포를 따르면 가 가우시안 프로세스Gaussian process라고 한다.
설명
비전공자가 보기에는 정의가 조금 지나치게 수학적으로 보일 수 있는데, 직관적으로 보았을 땐 위너 프로세스와 크게 다르지 않다. 물론 정의에 따라 엄밀하게 따져보면 위너 프로세스는 가우시안 프로세스지만 그 역은 성립하지 않는다.
기하 브라운 운동은 각 시점에서 로그-정규분포를 따르므로 가우시안 프로세스가 아니다.
응용
베이지안에서는 사전 분포 그 자체로. 머신러닝에서는 랜덤한 데이터를 만들어내는 등으로 자주 쓰인다. 예로써 에서 가우시안 프로세스를 만드는 수단으로는 다음과 같이 가우시안 커널 로 공분산행렬 를 만들어서 다변량정규분포에서 샘플링하는 방법이 널리 사용되고 있다.
다음은 가우시안 프로세스를 샘플링하는 예제 코드를 줄리아로 구현한 것이다. 중간에 에 아주 작게 을 더하는 이유는 수치적인 오류를 방지하기 위함이다.
에서 샘플링
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)
에서 샘플링
에서와 달리 커널 함수에 들어가는 좌표가 차원 벡터로 대체된다. 그러나 샘플링이 다변량 정규분포를 따르는 랜덤 벡터로써 얻어지는 것엔 차이가 없다. 그 벡터를 행렬의 모양으로 바꾸는 것이 핵심이다.
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. ↩︎