It struck me that regular auto-encoders with batch-norm and dropout have quite similar properties to VAEs which made me wonder whether VAEs where really much better than this simpler alternative. Let me explain:
- BatchNorm: encourages activations to follow N(0,1), just like KL-divergence does to the output layer of the encoder
- Dropout: during training time creates random (Gaussian due to CLT) encoder output distribution, mean and variance are learnable indirectly via network weights and mean/variance override params of batch norm layer
You might argue that KL-divergence adds more flexibility by allowing it to not exactly follow N(0,1) but batch norm allows learning to override this by default anyways.
All that considered are there really any practical benefits to VAEs which cannot be provided by this simpler setup?