GANs (Generative Adversarial Networks) are a set of deep neural network models used to produce synthetic data.
The method was developed by Ian Goodfellow in 2014 and is outlined in the paper Generative Adversarial Networks.
The goal of a GAN is to train a discriminator to be able to distinguish between real and fake data while simultaneously training a generator to produce synthetic instances of data that can reliably trick the discriminator.
Here’s a great tutorial on how to create GANs in Python.
A popular application of GANs was in the ‘GANgough’ project where synthetic paintings were generated by GANs trained on paintings from wikiart.org. The independent researchers, Kenny Jones and Derrick Bonafilia, were able to generate synthetic religious, landscape, flower and portrait images with impressive performance. The article GANGough: Creating Art with GANs details the method. In this post, we will walk through the process of building a basic GAN in python which we will use to generate synthetic images of handwritten digits.