Principles of GANs