0

有没有办法从GPflow GPR 模型中检索权重?

我不一定需要明确的权重。但是,我有两个问题可以使用权重解决:

  1. 我想编译一个经过训练的模型并将其发送给第三方。我想在不发送训练数据且第三方无法访问训练数据的情况下执行此操作。
  2. 我希望能够在不计算新方差的情况下预测新的平均值。目前 predict_f 计算均值和方差,但我只使用均值。我相信如果我不计算方差,我可以显着加快我的预测。

如果我可以在训练后从 GPR 模型中检索权重,我可以解决这两个问题。但是,如果可以在不处理显式权重的情况下解决这些任务,那就更好了。

4

1 回答 1

1

尚不完全清楚“显式权重”是什么意思,但是如果您的意思是 k(x,x') 的评估alpha = Kxx^{-1} y在哪里并且是观察目标的向量,那么您可以使用 Posterior 对象来获得它(参见https ://github.com/GPflow/GPflow/blob/develop/gpflow/postteriors.py),您可以通过调用. 然后就可以访问了。Kxxyposterior = model.posterior()posterior.alpha

Re 1.:但是,对于预测,您仍然需要能够计算Kzx新测试点和训练点之间的协方差,因此您还需要提供训练位置和内核超参数。

这也意味着您不能依靠它来保密您的训练数据,因为第三方可以简单地计算Kxx而不是Kzx然后返回y = Kxx @ alpha。您可以通过使用稀疏近似来避免共享精确的 (x,y) 训练集对(这至少会消除“个体可识别性”)。但我仍然不会依赖它来保护隐私。

Re 2.:后天体已经提供了更快的预测;如果您只要求full_cov=False(边际方差,默认值),那么您在最坏的情况下比仅预测平均值慢约 3 倍左右(在实践中,我估计慢了不到 1.5 倍)。从 GPflow 2.3.0 开始,GPflow 中没有实现仅预测平均值。

于 2021-10-27T19:15:08.067 回答