2017-09-21 1 views
1

가우스 프로세스에서 커널이 주어지면 처음 샘플링하지 않고 이전 배포에서 가져온 함수의 모양을 알 수 있습니까?가우시안 프로세스의 커널 함수

+0

나는 당신의 질문을 이해 모르겠어요. GP에는 몇 번의 관찰이 있습니까? 함수가 이전에 샘플링되었다고 말하면 GP가 어떻게 효과를 낼 수 있습니까? 또한 모양으로 무엇을 의미합니까? – Maxim

+0

당신이 맞아! 샘플 함수는 이전에 작성된 함수이므로 GP에 종속되지 않습니다. 저는 이전에 제로 평균과 공분산 행렬 (커널에 의해 정의 됨)을 갖는 다중 변량 가우시안이라고 가정합니다. 이제 커널이 제곱 된 지수 또는 갈색 운동 등을하게됩니다. 샘플링 된 함수가 이전과 얼마나 부드럽거나 변화 하는지를 알 수 있습니까? f ~ N (0, \ sigma), 여기서 \ 시그마는 공분산 행렬이며 커널의 정의에 의해 계산된다. –

+0

네. 내 대답을 참조하십시오. – Maxim

답변

0

이전 함수의 모양을 파악하는 가장 좋은 방법은 그 (것)들을 그리는 것입니다. 여기서 1 차원 예제 :

prior samples

이 전에 GP에서 시료 (평균 제곱 지수 커널에 의해 유도 된 0 공분산 행렬)이다. 당신이 보듯이 그들은 부드럽고 일반적으로 그들이 얼마나 위그 일까라는 느낌을줍니다. 또한 다차원의 경우에는 각각 하나가 이렇게 보일 것입니다.

여기 내가 사용하는 전체 코드입니다, 자신의 커널을 작성하거나 샘플에 미치는 영향을 확인하기 위해 매개 변수를 조정할 주시기 :

import numpy as np 
import matplotlib.pyplot as pl 

def kernel(a, b, gamma=0.1): 
    """ GP squared exponential kernel """ 
    sq_dist = np.sum(a**2, 1).reshape(-1, 1) + np.sum(b**2, 1) - 2*np.dot(a, b.T) 
    return np.exp(-0.5 * (1/gamma) * sq_dist) 

n = 300  # number of points. 
m = 10  # number of functions to draw. 
s = 1e-6  # noise variance. 

X = np.linspace(-5, 5, n).reshape(-1, 1) 
K = kernel(X, X) 
L = np.linalg.cholesky(K + s * np.eye(n)) 
f_prior = np.dot(L, np.random.normal(size=(n, m))) 

pl.figure(1) 
pl.clf() 
pl.plot(X, f_prior) 
pl.title('%d samples from the GP prior' % m) 
pl.axis([-5, 5, -3, 3]) 
pl.show() 
관련 문제