使用 SVGP 模型的超参数先验
Use of priors on hyper-parameters with SVGP model
我想像 (https://gpflow.readthedocs.io/en/develop/notebooks/advanced/mcmc.html) 那样在超参数上使用先验,但使用 SVGP 模型。
按照示例 1 的步骤,当我 运行 de run_chain_fn :
时出现错误
TypeError: maximum_log_likelihood_objective() missing 1 required positional argument: 'data'
与 GPR 或 SGPMC 相反,数据不是模型的属性,它们作为外部参数包含在内。
为了避免这个问题,我稍微修改了 SVGP class 以包含数据作为参数(我现在不关心小批量处理)
class SVGP_with_data(gpflow.models.SVGP):
"""This model is a tiny variation of classical SVGP. It just includes the data as an optionnal
parameter of the model, since they are necessary of MCMC sampling"""
def __init__(self,data,**kwargs):
super().__init__(**kwargs)
self.data = data
def maximum_log_likelihood_objective(self,_=None):
return self.elbo(self.data) #here we don't care about mini-batching
好像还不错。
我找不到带有超参数先验的 SVGP 代码示例。他们是处理此问题的更标准方法吗?
谢谢!
SVGP
是用于 变分 近似的 GPflow 模型。在由 q_mu
和 q_sqrt
参数化的 q(u) 分布上使用 MCMC 没有意义(如果你想在 上做 MCMC q(u) 在稀疏近似中,使用 SGPMC
).
您仍然可以在 SVGP
模型的超参数上放置(超)先验;基于梯度的优化将导致最大后验 (MAP) 点估计(与纯最大似然相反)。
我想像 (https://gpflow.readthedocs.io/en/develop/notebooks/advanced/mcmc.html) 那样在超参数上使用先验,但使用 SVGP 模型。
按照示例 1 的步骤,当我 运行 de run_chain_fn :
时出现错误TypeError: maximum_log_likelihood_objective() missing 1 required positional argument: 'data'
与 GPR 或 SGPMC 相反,数据不是模型的属性,它们作为外部参数包含在内。
为了避免这个问题,我稍微修改了 SVGP class 以包含数据作为参数(我现在不关心小批量处理)
class SVGP_with_data(gpflow.models.SVGP):
"""This model is a tiny variation of classical SVGP. It just includes the data as an optionnal
parameter of the model, since they are necessary of MCMC sampling"""
def __init__(self,data,**kwargs):
super().__init__(**kwargs)
self.data = data
def maximum_log_likelihood_objective(self,_=None):
return self.elbo(self.data) #here we don't care about mini-batching
好像还不错。
我找不到带有超参数先验的 SVGP 代码示例。他们是处理此问题的更标准方法吗?
谢谢!
SVGP
是用于 变分 近似的 GPflow 模型。在由 q_mu
和 q_sqrt
参数化的 q(u) 分布上使用 MCMC 没有意义(如果你想在 上做 MCMC q(u) 在稀疏近似中,使用 SGPMC
).
您仍然可以在 SVGP
模型的超参数上放置(超)先验;基于梯度的优化将导致最大后验 (MAP) 点估计(与纯最大似然相反)。