Perché non usiamo codificatori automatici invece di GAN?

Sep 01 2020

Ho visto le lezioni di Stanford sull'intelligenza artificiale, al momento ho una domanda: perché non usiamo gli autoencoder invece dei GAN?

Fondamentalmente, ciò che fa GAN è che riceve un vettore casuale e da esso genera un nuovo campione. Quindi, se addestriamo gli autoencoder, ad esempio, sul set di dati cats vs dogs, e poi tagliamo la parte del decoder e poi inseriamo il vettore di rumore casuale, non farebbe lo stesso lavoro?

Risposte

4 nbro Sep 03 2020 at 06:37

Gli auto-encoder sono ampiamente utilizzati e forse anche più utilizzati dei GAN (in effetti, gli auto-encoder sono più vecchi dei GAN, sebbene l'idea generale principale dietro i GAN sia piuttosto vecchia). Ad esempio, gli auto-codificatori vengono utilizzati in World Models , per la progettazione di farmaci (ad esempio, vedere questo documento ) e molte altre attività che implicano la compressione o la generazione di dati.

Quindi, se addestriamo gli autoencoder, ad esempio, sul set di dati cats vs dogs, e poi tagliamo la parte del decoder e poi inseriamo il vettore di rumore casuale, non farebbe lo stesso lavoro?

Sì, la parte del codificatore dell'auto-codificatore produce un vettore che rappresenta l'input in una forma compressa. Potresti anche essere interessato al denoising degli auto-encoder , ma ci sono altre varianti, come gli auto-encoder convoluzionali o gli auto-encoder variazionali.

4 MightestDuck Sep 01 2020 at 16:07

In effetti, gli autoencoder vengono utilizzati per attività generative. Dai un'occhiata al Tutorial sugli Autoencoder Variational (VAE).

La cosa più interessante di VAE è che le caratteristiche astratte possono essere facilmente amplificate o soppresse in base a vettori estratti dallo spazio latente. Immaginiamo un modello addestrato su MNIST per generare cifre. Se prendi due immagini della stessa cifra che variano solo in spessore, le codifichi entrambe e sottrai i due vettori, il vettore risultante sarà una descrizione dello spessore nello spazio latente. Ora puoi generare una cifra arbitraria e regolarne lo spessore in modo incrementale in base a quel vettore.