Towards Principled Methods for Training Generative Adversarial Networks