2

就 SGPMC 论文 [1] 而言,预训练应该与 SVGP 几乎相同。q_sqrt=None但是,实现(当前开发版本)略有不同,由于调度编程风格,我在理解所有内容时遇到了一些问题(尤其是条件句 with 会发生什么)。

我是否正确地看到它,不同之处在于q_mu/q_var现在由该self.V正态分布表示?唯一的其他变化是默认情况下启用白化,因为它是采样所必需的?

奇怪的是,SPGMC 的随机优化(还没有任何采样)在我的特定数据上似乎比 SVGP 类工作得更好,这让我有点困惑,因为它应该基本上是相同的。

[1]亨斯曼、詹姆斯等人。“用于变分稀疏高斯过程的 MCMC。” 神经信息处理系统的进展。2015 年。

Edit2:在当前的开发分支中,我看到(负)training_objective 基本上包括: VariationalExp + self.log_prior_density(),而 SVGP ELBO 是VariationalExp - KL(q(u)|p(u))

self.log_prior_density()显然增加了所有先前的密度。所以训练目标看起来像 SGPMC 论文的方程(7)(白化的最优变分分布)。

因此,通过优化后验的最优变分近似p(f*,f, u, θ | y),我们将得到诱导点的 MAP 估计?

4

1 回答 1

1

您的问题有几个要素,我将尝试分别解决它们:

SVGP 与 SGPMC 目标: 在 SVGP 中,我们通过将封闭形式的后验分布 q(u) 定义为具有均值q_mu和协方差的正态(高斯)分布来参数化它q_sqrt @ q_sqrt.T。在 SGPMC 中,分布 q(u) 由样本隐式表示 -V一次保存一个样本。在 SVGP 中,ELBO 有一个 KL 项,它将 q_mu 和 q_sqrt 拉向 q(u) = p(u) = N(0, Kuu)(使用白化,q_mu 和 q_sqrt 参数化 q(v),KL 项正在驱动它们朝向 q(v) = p(v) = N(0, I) 和 u = chol(Kuu) v)。在 SGPMC 中,同样的效果来自 MCMC 采样中 V 的先验。这在使用随机优化器进行 MAP 优化时仍然反映,但与 KL 项不同。对于 SVGP 模型,您可以将 q_sqrt 设置为零且不可训练,但它们的目标仍然略有不同。SGPMC 模型中的随机优化可能会为您提供更好的数据拟合,但这不是变分优化,因此您可能会过度拟合您的训练数据。

training_loss 对于所有 GPflow 模型,model.training_loss包括log_prior_density. (只是默认情况下,SVGP 模型参数没有任何先验设置。)SGPMC training_loss() 对应于 eq 的负数。(7) 在 SGPMC 论文 [1] 中。

诱导点: 默认情况下,诱导点 Z 没有先验,因此它只是最大似然。请注意,[1] 建议在 SGPMC 模型中保持 Z 固定(并将其基于先前拟合的 SVGP 模型中的优化位置)。

conditional()发生了什么q_sqrt=None conditional()在给定 u 分布的情况下计算 f(Xnew) 的后验分布;这处理了 (S)VGP 中使用的情况,其中我们有一个变分分布q(u) = N(q_mu, q_sqrt q_sqrt^T),以及在 ( S)GPMC。q_sqrt=None相当于说“方差为零”,就像平均值上的增量峰值一样,但可以节省计算量。

于 2020-04-29T16:24:52.110 回答