Generative Adversarial Networks (GANs) Explained

Generative Adversarial Network Architecture

Generative Adversarial Networks Explained

The landscape of machine learning is teeming with algorithms and architectures that have revolutionized various aspects of our lives. Among these, Generative Adversarial Networks (GANs) have been causing a stir due to their unique ability to generate new, never-before-seen data. This post will guide you through the intricacies of GANs: their structure, how they function, and the myriad applications they power.

Understanding the Concept

To understand Generative Adversarial Networks, you must first grasp two concepts:

1. Generative model –ย A generative model learns the true data distribution of the training set.ย Why? so it will be able to generate new data points with some variations.ย 

2. Adversary –ย The ‘adversarial’ part comes into play with the unique structure of GANs, which pits two neural networks against each other, hence creating a game of cat-and-mouse.

Generative Model vs Discriminative Model

Discriminative Models

Discriminative models, on the other hand, learn the conditional probability

distribution p(y | x), i.e., the probability of the output label given the input data.

These models focus on the boundary between classes, and they don’t necessarily care about how the data is generated; they just want to know what the label is likely to be given the data.

In general discriminative models used for classification and regression tasks, where the goal is to predict a label for a given input.
They can be simpler and faster to train than generative models, and often yield better results on such tasks.
Examples of discriminative models include logistic regression, support vector machines, and most types of neural networks used for classification, such as convolutional neural networks (CNNs) for image classification and RNNs for sequence data.ย 

Generative Models

Generative models learn the joint probability distribution p(x, y), where ‘x’ is the input data and ‘y’ is the output label.ย 

In other words, they learn how the data is generated in terms of a probabilistic model.ย Once this model is learned, you can sample from this model, or generate new data points.ย 

This models have a wide range of uses, from generating artificial data (like images or text), to anomaly detection, where you’re looking for data that doesn’t fit the model.ย 

They can also be used for tasks like density estimation and missing value imputation.ย 

Examples of generative models includeย Gaussian Mixture Models (GMM),ย Hidden Markov Models (HMM), and more recent deep learning approaches likeย Variational Autoencoders (VAEs)ย andย Generative Adversarial Networks (GANs).ย 

ย 
Generative vs. Discriminative in the Context of GANs

GANs are a type of generative model, but they are unique.

They use both a generative component (the “generator”) and a discriminative component (the “discriminator”).

The generator’s goal is to create data that is indistinguishable from the real data, while the discriminator’s goal is to correctly classify data as real or fake (generated).

Adversarial Training and Adversarial Learning

Adversarial training and learning are central to the functioning of GANs, and they’re concepts worth exploring in detail.ย 

The process of Adversarial Learning that involves training a model to make it robust against adversarial attacks, which are designed to deceive machine learning models through malicious input.ย 

The objective is to improve the model’s performance in dealing with adversarial examples by integrating them into the learning process.

On the other hand,ย adversarial learning refers to a strategic game between two entities.

One trying to optimize a certain objective and the other aiming to generate adversarial examples to hinder this process.ย 

In the context of GANs, the entities are the generator and the discriminator.ย 

The generator tries to create data that mimic the real data distribution, while the discriminator learns to differentiate between real and fake data. They essentially ‘learn’ from each other, hence the term adversarial learning.

The Architecture

GANs consist of two main components:

a generator and a discriminator, both typically implemented as deep neural networks.ย 

1. Generator: The generator is akin to a counterfeiter. It takes in a random noise vector as input, passes it through a series of layers (often convolutions for image data), and outputs a data instance that looks as close as possible to a real instance from the data distribution.ย 

The noise vector serves as a seed for data generation, ensuring the output is varied and different each time.ย 

ย 

Convolutional Network Generator from GAN

2.ย Discriminator: The discriminator acts as the detective, working to distinguish the real data from the fake ones created by the generator.ย 

It is a binary classifier that, given a data instance (real from the dataset or fake from the generator), outputs the probability that the instance is real. It is also typically implemented as a deep neural network, often using convolutional layers for image data.

Discriminator

The Training Process

GANs are trained through a two-player minimax game.ย 

In this setup, the generator tries to produce data to fool the discriminator, and the discriminator tries to correctly classify real versus generated data.ย 

Generative adversarial Network high level Diagram

The training process involves the following steps:ย 

Step 1: The discriminator is trained for one or more epochs with the real data labeled as 1 and the generated data labeled as 0.

Step 2: The generator is trained for one or more epochs. Here, we use the discriminatorโ€™s output to guide the generator’s training. Specifically, we aim to adjust the generator’s parameters such that it makes the discriminator output a value close to 1 for generated data.

ย Step 3: These steps are repeated until the discriminator can no longer reliably differentiate between real and generated data, meaning the generator has become proficient at creating realistic data.

Applications of GANs

GANs have found applications in numerous areas:

ย 1.Image synthesis: GANs can generate realistic images that have never been seen before. This is used in video game design, art, and even fashion.

ย 
Images from StyleGAN2

ย 2. Super-resolution:ย GANs can take low-resolution images and enhance them, making the images clearer and easier to understand.

ย 3. Data augmentation: In machine learning, sometimes the available data is insufficient or unbalanced. GANs can generate additional data to improve model training.

ย 4. Drug discovery: Generate molecular structures for potential new drugs, speeding up the discovery process.

And many more ๐Ÿ™‚

Conclusion and Final words

So what did we covered today?

We started by learning the concept of Adversarial Training.
Next, we saw how GANs incorporate this paradigm in order to train the Generator to achieve such an amazing performance.

We covered the training procedure which is essentially a two players game, where the Generator and the Discriminator taking turns with different objectives.

Finally, we covered some common real-world application where GANs play an important role in their success.

What’s next ?

In the following post – Implementing GANs from Scratch – you’ll learn how to simply write the code using PyTorch to train and generate using a real GAN/

For more guides press here

Want to dive deeper to Recent papers and their summaries – click here