就 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 估计?