给定高斯过程中的核,是否有可能在不首先采样的情况下知道从先验分布中得出的函数的形状?
最佳答案
我认为了解先验函数形状的最好方法是绘制它们。这是一维示例:
这些是来自 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()
关于machine-learning - 高斯过程中的核函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46334298/