0

GPFlow中,可以为 GP 回归添加拟合均值函数。在基本示例中执行此操作时,结果是,由于均值拟合的不确定性,将不存在不确定性。例如,在下面的示例中,误差条不会超出可用数据的范围,因为线性平均值的斜率保持固定在其优化值。有没有办法解释这些不确定性,以便在外推时误差带会增加?

(该问题最初在问题报告中陈述,但移至此处以便更易于访问)

在此处输入图像描述

import numpy as np
import matplotlib.pyplot as plt
import gpflow
from gpflow.utilities import print_summary

def f(x):
    return np.sin(3*x) + x

xtrain = np.linspace(0, 3, 50).reshape([-1, 1])
ytrain = f(xtrain) + 0.5*(np.random.randn(len(xtrain)).reshape([-1, 1]) - 0.5)

k = gpflow.kernels.SquaredExponential()
meanf = gpflow.mean_functions.Linear()
m = gpflow.models.GPR(data=(xtrain, ytrain), kernel=k, mean_function=meanf)
opt = gpflow.optimizers.Scipy()

def objective_closure():
    return - m.log_marginal_likelihood()

opt_logs = opt.minimize(objective_closure,
                        m.trainable_variables,
                        options=dict(maxiter=100))

print_summary(m)


xpl = np.linspace(-5, 10, 100).reshape(100, 1)
mean, var = m.predict_f(xpl)

plt.figure(figsize=(12, 6))
plt.plot(xtrain, ytrain, 'x')
plt.plot(xpl, mean, 'C0', lw=2)
plt.fill_between(xpl[:, 0],
                 mean[:, 0] - 1.96 * np.sqrt(var[:,0]),
                 mean[:, 0] + 1.96 * np.sqrt(var[:,0]),
                 color='C0', alpha=0.2)
4

1 回答 1

2

大多数 GPflow 的模型仅针对内核超参数、均值函数和似然度的 MAP 估计进行优化。这些模型在训练或预测期间没有考虑这些超参数的不确定性。虽然这可能会限制某些问题,但我们经常发现这是计算复杂性和不确定性量化之间的明智折衷。

话虽如此,在您的特定情况下(即线性均值函数),我们可以通过指定线性核函数而不是线性均值函数来解释数据线性趋势的不确定性。

将您的代码段与此模型规范一起使用:

k = gpflow.kernels.SquaredExponential() + gpflow.kernels.Linear()
meanf = gpflow.mean_functions.Zero()  
m = gpflow.models.GPR(data=(xtrain, ytrain), kernel=k, mean_function=meanf)

给出以下拟合,误差线超出数据范围: 使用平方指数和线性核拟合 GPR

于 2020-03-24T08:53:40.303 回答