【问题标题】:Is there a way to retrieve the weights from a GPflow GPR model?有没有办法从 GPflow GPR 模型中检索权重?
【发布时间】:2021-12-12 23:16:50
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: tensorflow non-linear-regression gpflow gaussian-process


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,alphas* 正是我想要的。但是,当我使用 GPR 尝试此操作时,它仅返回 y 值。这段代码似乎是罪魁祸首:github.com/GPflow/GPflow/blob/…
    • 协方差矩阵需要反相乘以y
    • @partyphysics 不错,这很奇怪;你能在 Github 上打开一个问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多