0

GPflow GPR モデルから重みを取得する方法はありますか?

明示的な重みは必ずしも必要ではありません。ただし、重みを使用して解決できる可能性のある 2 つの問題があります。

  1. トレーニング済みのモデルをコンパイルしてサードパーティに送信したいと考えています。トレーニング データを送信せず、サード パーティがトレーニング データにアクセスすることなく、これを行いたいと考えています。
  2. 新しい分散を計算せずに新しい平均値を予測できるようにしたいと考えています。現在、predict_f は平均と分散の両方を計算しますが、私は平均のみを使用します。分散を計算しなければ、予測を大幅に高速化できると思います。

トレーニング後に GPR モデルから重みを取得できれば、これらの問題は両方とも解決できます。ただし、明示的な重みを扱わずにこれらのタスクを解決できれば、さらに優れたものになります。

4

1 に答える 1

1

「明示的な重み」が何を意味するのかは完全には明らかではありませんが、k(x,x') の評価がalpha = Kxx^{-1} yどこにあり、観測対象のベクトルであるかを意味する場合は、事後オブジェクトを使用してそれを取得できます ( httpsを参照) ://github.com/GPflow/GPflow/blob/develop/gpflow/posteriors.py ) を呼び出して取得します。にアクセスできます。Kxxyposterior = model.posterior()posterior.alpha

Re 1.: ただし、予測のためには、新しいテスト ポイントとトレーニング ポイントの間の共分散を計算できるKzx必要があるため、トレーニングの場所とカーネル ハイパーパラメーターも提供する必要があります。

これは、トレーニング データの秘密を保持するためにこれに頼ることができないことも意味KxxKzxますy = Kxx @ alpha。疎な近似を使用して、正確な (x,y) トレーニング セットのペアを共有することを回避できます (これにより、少なくとも「個人の識別可能性」が削除されます)。しかし、私はまだプライバシーのためにそれを信頼するつもりはありません.

Re 2.: 事後オブジェクトはすでにはるかに高速な予測を提供しています。(限界分散、デフォルト)のみを求める場合full_cov=False、最悪の場合、平均だけを予測するよりも約3倍遅くなります(実際には、1.5倍未満の速度が遅いと推測します)。GPflow 2.3.0 の時点で、平均のみを予測する GPflow 内の実装はありません。

于 2021-10-27T19:15:08.067 に答える