假设我在使用同位素数据的D输出时遇到问题,我想在 gpflow 中为多输出 GP 模型(内在共区域化模型)的每个输出维度使用独立噪声,这是最常见的情况,例如:
我已经看到了一些在 GPflow 中使用多输出 GP 的例子,比如这个笔记本和这个问题
但是,对于 gpflow 中的模型类,即使指定了产品内核(即内核 *GPR
共区域化),似然方差($\Sigma$)仍然是一个数字而不是D数字。
有没有办法做到这一点?
就像您可以增加X
一列,该列指定与输出相关的每个数据点(行)(该列由内核的active_dims
关键字参数指定Coregion
;请注意,它是从零开始的索引),您可以Y
增加列来指定不同的可能性(SwitchedLikelihood
硬编码要求索引位于 的最后一列) -在 GPflow 教程的不同噪声笔记本Y
中有一个示例(演示 2) 。您只需将两者结合起来,使用 Coregion 内核和 SwitchedLikelihood,并使用同一列指示输出来增加 X 和 Y!
但是,由于普通 GPR 仅适用于高斯似然,因此 GPR 模型已针对高斯似然进行了硬编码。当然可以编写一个可以处理不同输出的不同高斯可能性的版本,但是您必须在_build_likelihood
新模型的方法中手动完成所有操作(合并来自 的拼接代码SwitchedLikelihood
)。
简单地使用可以处理任何可能性的模型会容易得多VGP
- 对于高斯可能性,优化问题非常简单,应该很容易使用ScipyOptimizer
.