【问题标题】:Kernel Function in Gaussian Processes高斯过程中的核函数
【发布时间】:2018-03-02 05:42:08
【问题描述】:

在高斯过程中给定一个核,是否有可能在不首先采样的情况下知道从先验分布中提取的函数的形状?

【问题讨论】:

  • 我不确定我是否理解您的问题。全科医生有多少观察结果?如果你说一个函数是从先验中采样的,那么GP如何影响它?另外,形状是什么意思?
  • 你做对了!采样函数是从先验中提取的,它们不依赖于 GP。我假设先验是具有零均值和协方差矩阵(由内核定义)的多元高斯。现在你得到内核说平方指数或布朗运动等。是否有可能从这个先验判断采样函数的平滑或变化程度? f ~ N (0, \sigma),这里\sigma是协方差矩阵,由内核定义计算。
  • 知道了。请看我的回答。

标签: machine-learning gaussian kernel-density


【解决方案1】:

我认为了解先前函数形状的最佳方法是绘制它们。这是一维示例:

这些是来自 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    相关资源
    最近更新 更多