我们如何在 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
应该很容易优化。
假设我在 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
应该很容易优化。