The best reason I have seen for using variational autoencoders is when dealing with sparse data. The Gaussian noise "splats" out the input distribution (see this StackExchange answer).

However, normalizing flows do the same thing, without the loss of information a VAE incurs. It feels as if VAEs are used only because everyone else is using them, and then a bunch of StackExchange posts reinforce the message that VAEs are the way to go, when they're theoretically suboptimal.

I understand that normalizing flows are a little slower (at either training or inference), and more difficult to implement, but is there a theoretical reason that makes VAEs a legitimate choice?

  • $\begingroup$ Can you be more precise in what kind of task you are looking to solve? Or what kind of theoretical improvement you are looking for specifically? $\endgroup$
    – vl_knd
    Commented Feb 15 at 18:20
  • $\begingroup$ I think VAEs are a virus---a suboptimal meme that has infected the ML community. However, popular things are also often right (e.g. cross entropy loss), so I might be missing something. $\endgroup$ Commented Feb 15 at 21:45

1 Answer 1


I feel like VAE's and Normalising Flows are used for different purposes in general, you can not build latent representation with the latter for example.

Also Normalising Flows restrict the architecture to use invertible neural networks in practice, since you need a bijection by Normalising flows construction. However such an architecture is not as expressive as a normal fully connected layer or convolutional layer. Also for Normalising Flows you have to keep input and output dimensions of the network fixed, which imposes other restrictions in practice.

VAE's on the other hand allow to sample your objects distribution by exploring smaller latent distribution, this is now used in diffusion networks for example. There is even a connection between Denoising Diffusion and VAE.

Overall its just different architectures of neural networks and different approaches to generative modelling.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .