Closed salemohamedo closed 2 years ago
Hi @salemohamedo, thanks for your interest in the paper and code! Let me try to answer your questions below:
use_flow_prior
False.I hope these answers clarify a bit the intuition behind the VAE prior of CITRIS. Let me know if you have any further questions or something is unclear!
Best, Phillip
Hi Phillip,
Thank you very much! I appreciate the quick and thorough responses - that helps clear up my confusion.
Omar
Hi Phillip,
Thanks for sharing the code - I enjoyed the paper! I'm trying to reproduce the CITRIS-VAE (w/ autoregressive prior) experiments as part of a class project and just had a few questions.
Could you please further explain the intuition behind how the autoregressive transition prior works? My understanding is that it takes samples of
z_t+1, z_t, I
and tries to predictp(z_t+1| z_t, I)
, which can be factored over the assignment of latent to causal variables. We samplez_t+1 ~ q(z_t+1|x_t+1) (VAE encoder)
and then we use these samples, along withz_t, I
to modelp(z_t+1| z_t, I)
and then try to minimize theKL(q(z_t+1|x_t+1), p(z_t+1| z_t, I))
. I think the part that confuses me is that we're usingz_t+1
samples from the encoder and then feeding them into the autoregressive prior. I would have expected the transition prior to only takez_t, I
as input and try to predictz_t+1
. I might be misunderstanding something here, so any clarification would be helpful, thanks!I'm a bit confused about the KL calculation here, which I assume corresponds to the second term in equation 4 of the paper. From looking at the code it seems as though the transition prior predicts the distribution of all latent variables
z_t+1
for each causal variable, however, I understood equation 4 as stating that the transition prior should only predict the distribution of the latent variables that have been assigned to a given causal variable.What is the correct way to configure CITRISVAE to use the autoregressive prior (based on MADE) and not the normalizing flow prior? I saw that the
train_vae.py
takes a--autoregressive_prior
flag, however, in order to get the code to actually use the autoregressive prior I had to modify the code here and set this toFalse
. I'm wondering if I may be misunderstanding how to properly use the code.Thanks very much! Omar