正如问题所述,我想知道如何从 GPFlow 中的 SVGP 模型中获取噪声方差(而不是信号方差)。为了澄清,我所说的噪声方差是指高斯似然的参数,我理解它是观测值的预测方差减去潜在函数的预测方差之间的差异(后者是我所说的信号方差)。
SVGP 实际上不是我的目标,我试图理解异方差模型,但它也使用 SVGP,所以我想我会从那里开始。
正如问题所述,我想知道如何从 GPFlow 中的 SVGP 模型中获取噪声方差(而不是信号方差)。为了澄清,我所说的噪声方差是指高斯似然的参数,我理解它是观测值的预测方差减去潜在函数的预测方差之间的差异(后者是我所说的信号方差)。
SVGP 实际上不是我的目标,我试图理解异方差模型,但它也使用 SVGP,所以我想我会从那里开始。
似然对象存储在model.likelihood
. 对于精确的高斯过程回归模型(在 中实现gpflow.models.GPR
),这始终是一种Gaussian
可能性,您可以使用其likelihood.variance
属性访问噪声方差。因此,如果您将模型定义如下,
model = gpflow.models.SVGP(kernel, gpflow.likelihoods.Gaussian(0.01), inducing_variable, ...)
然后您可以使用 . 访问当前值(优化后)model.likelihood.variance
。
或者model.likelihood.variance.numpy()
,如果您希望它为 numpy 类型——这将是一个标量(0 维)数组,您可以使用model.likelihood.variance.numpy().item()
.
对于异方差模型,一个 GP 参数化均值,第二个参数化方差,因此您可以简单地使用第二个 GP 的预测(然后您必须通过您正在使用的链接函数将其传递)。