Why don't we use auto-encoders instead of GANs?

5

I have watched Stanford's lectures about artificial intelligence, I currently have one question: why don't we use autoencoders instead of GANs?

Basically, what GAN does is it receives a random vector and generates a new sample from it. So, if we train autoencoders, for example, on cats vs dogs dataset, and then cut off the decoder part and then input random noise vector, wouldn't it do the same job?

dato nefaridze

Posted 2020-08-31T18:45:53.633

Reputation: 464

Answers

3

Auto-encoders are widely used and maybe even more used than GANs (in fact, auto-encoders are older than GANs, although the main general idea behind GANs is quire old). For example, auto-encoders are used in World Models, for drug design (e.g. see this paper) and many other tasks that involve data compression or generation.

So, if we train autoencoders, for example, on cats vs dogs dataset, and then cut off the decoder part and then input random noise vector, wouldn't it do the same job?

Yes, the encoder part of the auto-encoder produces a vector that represents the input in a compressed form. You may also be interested in denoising auto-encoders, but there are other variations, such as convolutional auto-encoders or variational auto-encoders.

nbro

Posted 2020-08-31T18:45:53.633

Reputation: 19 783

The work done in World Models blew my mind. Do you know about any application of generative modeling for robotics? – MightestDuck – 2020-09-03T08:04:12.593

@MightestDuck Off the top of my head, no, but I am sure they have been used in robotics too. – nbro – 2020-09-03T10:07:37.807

3

In fact, autoencoders are used for generative tasks. Have a look at Tutorial on Variational Autoencoders (VAEs).

The coolest thing about VAE is that abstract features can be easily amplified or suppressed based on extracted vectors from the latent space. Let's imagine a model trained on MNIST to generate digits. If you take two images of the same digit which only vary in thickness, encode both of them and subtract the two vectors, the resulting vector will be a description of thickness in the latent space. Now you can generate an arbitrary digit and incrementally adjust its thickness based on that vector.

MightestDuck

Posted 2020-08-31T18:45:53.633

Reputation: 111