0

我正在试验 GPy 如何捕获底层过程。我使用已知的rbf超参数模拟了许多高斯过程,并试图查看 GPy 模型是否对超参数做出有意义的推断。

起点很简单,模拟无噪音:

import numpy as np
import GPy

def arbKer(var, l):  # Arbitrary kernel with variance and lengthscale
    # RBF form
    kernel = GPy.kern.RBF(input_dim=1, variance=var, lengthscale=l)
    return kernel

def priorGPclean(X, var, l, nsamp, show=True):  # Simulate a bunch of noiseless/clean kernel
    # GP controlled noise drawn from a covariance matrix generated from kernel
    k = arbKer(var, l)
    mu = np.zeros((len(X))) # vector of the means
    C = k.K(X,X) # covariance matrix
    
    Y = np.random.multivariate_normal(mu,C,nsamp)
    Y = np.transpose(Y)
    return (Y)

X = np.random.rand(100)[:,None]; X=X*15-5
Y = priorGPclean(X, 4.5, 2., nsamp=1, show=False)

现在,很明显,根据下图,即使是来自这个模拟 GP 曲线的非常密集的采样也不会导致推断更接近已知方差:var = 4.5,这种模式怎么会导致推断var=8.5?我用不同的随机初始化重新运行了代码,但仍然得到了相同的不合理值。

图像可以在这里看到。

谁能给我一个提示?

非常感谢!

4

0 回答 0