The title of the question is basically all I'm asking, but I should explain why GANs don't seem to be unsupervised to me!

Here's my understanding of unsupervised learning: Unsupervised learning is when you have an set of data (the X values) but no classes (y values). It's typically done for clustering similar samples in the data together.

Here's my understanding of how a GAN works: You have a generator that produces a sample of the data from a random noise input. Many hundreds of samples are generated and fed to the discriminator along with a bunch of real examples; the discriminator processes each sample and outputs the likelihood that each sample is real or generated. The discriminators predictions are compared to the true (whether or not the sample was generated) and then discriminator goes through a back propagation cycle to learn to discriminate better. The predictions from the discriminator are also fed back to the generator as cost (or I guess 1-cost if the discriminator using 1 to represent real, and 0 to represent fake). The generator then goes through back propagation to get better at fooling the discriminator.

If both of the statements above are true, the system can't work without labelled data and hence is supervised learning. The problem is I've read multiple articles that flat out state that generative adversarial networks are unsupervised. Where am I hitting my head against the wall?


2 Answers 2


There are many different flavors of GANs, so in this answer, I will refer to the original GAN. It's regarded as unsupervised because you don't assume that you have a target variable in your dataset -- and if you have one, you don't use it. All you need is some features (e.g., images) -- you don't need class label information for these images etc. Your goal is to sample from the distribution generating these images (via the generator).

You are right though that there is some supervised learning going on inside a GAN via the discriminator. I.e., the discriminator is a binary classifier. The labels are not describing the content of the images, they are not part of the training set. It's merely an indicator whether the image is form the training set or from the generator.

So, in that sense, GANs are for unsupervervised problems where you don't have label information, yet it also incorporates techniques from supervised learning. To call it an "unsupervised learning" technique is hence just a convention and in that case it's up for interpretation (I mean, DL technical language is broken anyway with lots of inconsistent terminology, so we shouldn't take it too seriously or literally I guess :))


I think the following perspective might further clarify the confusion.

Generative Adversarial Networks attempt to solve an unsupervised learning problem by jointly solving

  1. a supervised learning problems,
  2. an optimization problem.

Suppose we have training data that takes the form x1,...,xN without labels. Since there are no labels, this problem is unsupervised. Suppose we train a generator to produce fake samples, while simultaneously training a discriminator to tell real samples from fake.

Training the discriminator is a supervised learning problem. Training the generator to fool the discriminator is an optimization problem.

In summary: It is possible to train a GAN on data without labels, unsupervised learning. Doing this require us to jointly solve a supervised learning problem and an optimization problem.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.