Hi all,
I have a question which relates or adds to this post.
My question is: what is the inference algorithm that pyro use for Trace_ELBO()
?
On this page, it says that the estimator uses [1] and [2]. However, in [4] it says that the primary inference algorithm pyro implements is [3]. In the SVI tutorial, there is a section here that references the reparameterisation trick used in [3].
From my understanding of [3], gradient of ELBO is w.r.t both \theta and variational parameter \phi. And in each iteration, ELBO increases by updating \theta, \phi. And in [1] and [2], gradient of ELBO is w.r.t the variational parameters \phi only – the gradient of ELBO w.r.t the model parameter \theta is not computed nor is \theta adjusted in each iteration.
Under the hood, what is the inference algorithm for Trace_ELBO()
? Does using Trace_ELBO()
involve estimating/computing \nabla_{\theta, \phi}\text{ELBO} or \nabla_{\phi}\text{ELBO}?
References:
[1] Automated Variational Inference in Probabilistic Programming,
David Wingate, Theo Weber
[2] Black Box Variational Inference,
Rajesh Ranganath, Sean Gerrish, David M. Blei
[3] Auto-Encoding Variational Bayes,
Diederik P Kingma, Max Welling
[4] Pyro: Deep Universal Probabilistic Programming
Eli Bingham, Jonathan P. Chen, Martin Jankowiak, Fritz Obermeyer, Neeraj Pradhan, Theofanis Karaletsos, Rohit Singh, Paul Szerlip, Paul Horsfall, Noah D. Goodman