高斯过程:如何使用 GPML 进行多维输出

机器算法验证 回归 机器学习 matlab 高斯过程 非参数贝叶斯
2022-02-07 12:20:14

有没有办法使用GPML对多维输出(可能相关)执行高斯过程回归?

演示脚本中 ,我只能找到一个 1D 示例。

一个关于 CV 的类似问题,它解决了多维输入的情况。


我翻阅了他们的书,看看是否能找到任何东西。本书的第 9 章(第 9.1 节)中,他们已经提到了这种多输出的情况。他们提到了几种处理这个问题的方法,一种是使用相关噪声过程,另一种是使用 Cokriging(相关先验)。

我仍然不知道如何将这些想法融入 GPML 框架。


另外,还有其他支持多维输出的 GP 库/框架吗?

4个回答

我相信双高斯过程正是您正在寻找的。我无法比论文本身的摘要更好地描述模型,所以我只是复制粘贴它:

我们描述双高斯过程 (TGP) 1,一种通用的结构化预测方法,它在协变量和响应上使用高斯过程 (GP) 先验 [2],都是多元的,并通过最小化两个 GP 之间的 Kullback-Leibler 散度来估计输出,该两个 GP 建模为有限索引集上的正态分布,并且测试示例,强调相似输入应该产生相似感知的目标,并且这应该平均保持在它们的边际分布之间。TGP 不仅像典型的 GP 那样捕获协变量之间的相互依赖关系,而且还捕获响应之间的相互依赖关系,因此考虑了输入和输出之间的相关性。在最近推出的 HumanEva 基准测试中,TGP 被举例说明了从单目和多摄像机视频序列重建 3d 人体姿势,并取得了可喜的结果,对于联合训练的模型,我们使用来自多人和多项活动的数据,平均每个 3d 标记实现 5 厘米的误差。该方法快速且自动:它不需要手工制作初始姿势、相机校准参数或与用于训练或测试的人类受试者相关的 3d 身体模型的可用性。

作者慷慨地提供了代码和示例数据集以供入门。

您好 这个双高过程的代码哪里可以找到 我没在作者原文中看到代码链接

2022-11-15 15:31:11

简答 多维输出的回归有点棘手,并且在我目前的知识水平上并没有直接包含在 GPML 工具箱中。

长答案您可以将多维输出回归问题分解为 3 个不同的部分。

  1. 输出彼此不相关- 只需像 1d 案例的演示脚本一样单独回归输出。
  2. 输出是相关的,但不知道它们之间的关系- 您基本上想了解输出之间的内在关系。正如书中提到的,coKriging 是一个很好的开始方法。除了 GPML 之外,还有其他软件可以直接让您执行协同克里金,例如。ooDace
  3. 输出是相关的,您知道它们之间的关系- 执行常规 cokriging,但您可以通过在优化器中应用约束(同时最小化对数边际可能性)在输出之间应用硬约束,如Hall & Huang 2001所说,或者如Constantinescu & Anitescu 2013所述,在先验函数中应用关系

我希望它有帮助:)

这是 scikit-learn 的一个模块,它对我来说非常好:

http://scikit-learn.org/stable/auto_examples/gaussian_process/plot_gp_regression.html

# Instanciate a Gaussian Process model
gp = GaussianProcess(corr='cubic', theta0=1e-2, thetaL=1e-4, thetaU=1e-1,
                     random_start=100)

# Fit to data using Maximum Likelihood Estimation of the parameters
gp.fit(X, y)

# Make the prediction on the meshed x-axis (ask for MSE as well)
y_pred, MSE = gp.predict(x, eval_MSE=True)
sigma = np.sqrt(MSE)

我正在寻找多输出高斯过程,并找到了许多使用它的方法,例如卷积方法、混合效果建模方法和最新的双高斯过程 (TGP)。

我对双高斯过程(TGP)的​​概念有疑问。有人可以帮我吗?

在 TGP 中,作者正在找出预测的输出 (y^) 最小化输入和输出之间的 KL 散度,反之亦然。但总的来说,我们寻找输出的预测分布,即p(y|y)(μ,σ2). 这里要注意的一件事是预测方差即σ2,y在其中没有任何作用。在 TGP 的情况下,是预测输出y^与预测分布的均值相同y?

您好 您的问题得到解决了吗?

2022-11-15 15:32:04