What is a Generative Adversarial Network?
Generative Adversarial Networks (GANs) are a powerful class of neural networks that are used for unsupervised learning. It was developed and introduced by Ian J. Goodfellow in 2014. GANs are basically made up of a system of two competing neural network models which compete with each other and are able to analyze, capture and copy the variations within a dataset.
A GAN is a pair of neural networks used to imitate an existing data source. The first network takes a set of random numbers and creates something approximately fitting the data you’re trying to imitate. The second network is trained using standard methods to distinguish between items in the target data and items generated by the first network. The method for treating the first network has a few more steps:
- Pass some random numbers all the way through both networks
- Run backpropagation through the second network as if you were training it to recognize the sample as part of the target data, use this to get the error signal to train the first network but don’t change the second network
- Use the error signal from step 2 to train the first network.
By repeatedly training both networks: the outputs from the first network gradually become harder to distinguish from the example data.