2

SGPMC の論文 [1] に関する限り、事前トレーニングは SVGP とほとんど同じであるはずです。q_sqrt=Noneただし、実装 (現在の開発バージョン) は少し異なり、ディスパッチ プログラミング スタイルが原因で、すべてを理解するのに問題があります (特に の条件付きで何が起こるか)。

違いは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 推定を取得できますか?

4

1 に答える 1

1

あなたの質問にはいくつかの要素があります。

SVGP と SGPMC の目的:q_mu SVGP では、平均と共分散 を持つ正規 (ガウス) 分布として定義することにより、閉形式の事後分布 q(u) をパラメータ化しq_sqrt @ q_sqrt.Tます。SGPMC では、分布 q(u) はサンプルによって暗黙的に表されます。V一度に 1 つのサンプルを保持します。SVGP では、ELBO は q_mu と q_sqrt を q(u) = p(u) = N(0, Kuu) に引き寄せる KL 項を持っています (ホワイトニング、q_mu と q_sqrt が q(v) をパラメータ化し、KL 項がそれらを駆動します)。 q(v) = p(v) = N(0, I)、および u = chol(Kuu) v) に向かって)。SGPMC では、同じ効果が MCMC サンプリングの V の事前から得られます。これは、ストキャスティクス オプティマイザーで MAP 最適化を行う場合にも反映されますが、KL 項とは異なります。q_sqrt を 0 に設定して SVGP モデルをトレーニングできないようにすることもできますが、目的は少し異なります。SGPMC モデルで確率的最適化を行うと、データの適合性が向上する可能性がありますが、これは変分最適化ではないため、トレーニング データに過剰適合している可能性があります。

training_loss: すべての GPflow モデルについて、model.training_lossが含まれますlog_prior_density。(デフォルトでは、SVGP モデル パラメータには事前確率が設定されていません。) SGPMC training_loss() は、式の負の値に対応します。(7) SGPMC 論文 [1]。

誘導ポイント: デフォルトでは、誘導ポイント Z には事前確率がないため、最尤法になります。[1] は、SGPMC モデルで Z を固定しておくことを提案していることに注意してください (そして、以前に適合した SVGP モデルの最適化された位置に基づいています)。

で何が起こるか:conditional()q_sqrt=None conditional()与えられた u の分布から f(Xnew) の事後分布を計算しますこれは、(S)VGP で使用される変分分布q(u) = N(q_mu, q_sqrt q_sqrt^T) で使用されるケースと、( S)GPMC。q_sqrt=None平均のデルタスパイクのように、「分散はゼロです」と言うのと同じですが、計算を節約します。

于 2020-04-29T16:24:52.110 に答える