Learning Disentangled Representations with Semi-Supervised Deep Generative Models