我们如何在 GPflow 中为 multi-output GP 的每个输出维度建模独立噪声?

How can we model independent noise for every output dimension of a multi-output GP in GPflow?

假设我在 D 输出同位素数据时遇到问题,我想对 multi-output GP 模型的每个输出维度使用独立噪声(内在共区域化模型)在 gpflow 中,这是最常见的情况,例如:

我看过一些在 GPflow 中使用 multi-output GP 的例子,比如 this notebook and

不过gpflow中的GPR模型class,似然方差($\Sigma$)似乎还是一个数,而不是D 数字,即使指定了产品内核(即内核 * Coregionalization)。

有什么办法可以实现吗?

就像您可以使用指定输出相关的每个数据点(行)的列来扩充 X(该列由 active_dims 关键字参数指定 Coregion 内核;请注意它是从零开始的索引),您可以使用列扩充 Y 以指定不同的可能性(SwitchedLikelihood 被硬编码为要求索引位于 last column of Y) - 在 GPflow 教程的 varying noise notebook 中有一个示例(Demo 2)。您只需将两者结合起来,使用 Coregion 内核和 SwitchedLikelihood,并使用指示输出的同一列来增加 X 和 Y!

但是,由于普通 GPR 仅适用于高斯似然,因此 GPR 模型已针对高斯似然进行了硬编码。编写一个可以处理不同输出的不同高斯可能性的版本肯定是 可能 ,但是你必须在 _build_likelihood 方法中手动完成这一切一个新模型(合并来自 SwitchedLikelihood 的拼接代码)。

简单地使用可以处理任何可能性的 VGP 模型会容易得多 - 对于高斯似然,优化问题非常简单,使用 ScipyOptimizer 应该很容易优化。