http://blog.class.vision/1397/10/generative-adversarial-networks/