A Generative Adversarial Network (GAN) is a deep learning framework that consists of two neural networks: a generator and a discriminator.
The generator is trained to produce synthetic data, such as images, text, or audio. It learns to produce realistic fake data from a random seed. The fake examples produced by the generator are used as negative examples for training the discriminator.
The discriminator is a binary classifier that learns to distinguish the fake data from realistic data. It tries to distinguish between the synthetic data and real data from a training set. If the generator produces implausible results, the discriminator penalizes the generator.
The two networks compete against each other in a zero-sum game framework. Over time, the generator’s output becomes more realistic and it gets better at fooling the discriminator. Eventually, the generator’s outputs are so realistic that the discriminator is unable to distinguish them from the real examples.
For example, a GAN trained on photographs can generate new photographs that look at least superficially authentic to human observers, having many realistic characteristics. They are used widely in image generation, video generation and voice generation.