Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Reti Generative Avversarie (GAN) | Fondamenti Teorici
Modelli Generativi Profondi con Python

Reti Generative Avversarie (GAN)

Scorri per mostrare il menu

Generative Adversarial Networks (GANs) sono una classe di modelli generativi introdotti da Ian Goodfellow nel 2014. Sono composti da due reti neurali — il Generatore e il Discriminatore — addestrate simultaneamente in un contesto di teoria dei giochi. Il generatore cerca di produrre dati che assomigliano ai dati reali, mentre il discriminatore cerca di distinguere i dati reali da quelli generati.

I GAN apprendono a generare campioni di dati a partire dal rumore risolvendo un gioco minimax. Durante l'addestramento, il generatore diventa sempre più abile nel produrre dati realistici e il discriminatore migliora nel distinguere i dati reali da quelli falsi.

Architettura di una GAN

immagine

Un modello GAN di base è composto da due componenti principali:

1. Generatore (G)

  • Riceve in input un vettore di rumore casuale zpz(z)z \sim p_z(z);
  • Lo trasforma tramite una rete neurale in un campione di dati G(z)G(z) progettato per assomigliare ai dati della distribuzione reale.

2. Discriminatore (D)

  • Riceve in input un campione di dati reali xpx(x)x \sim p_x(x) oppure un campione generato G(z)G(z);
  • Restituisce uno scalare compreso tra 0 e 1, che stima la probabilità che l'input sia reale.

Queste due componenti vengono addestrate simultaneamente. Il generatore mira a produrre campioni realistici per ingannare il discriminatore, mentre il discriminatore mira a identificare correttamente i campioni reali rispetto a quelli generati.

Gioco Minimax dei GAN

Al centro dei GAN si trova il gioco minimax, un concetto derivato dalla teoria dei giochi. In questa configurazione:

  • Il generatore GG e il discriminatore DD sono giocatori in competizione;
  • DD mira a massimizzare la sua capacità di distinguere dati reali da quelli generati;
  • GG mira a minimizzare la capacità di DD di rilevare i suoi dati falsi.

Questa dinamica definisce un gioco a somma zero, dove il guadagno di un giocatore corrisponde alla perdita dell'altro. L'ottimizzazione è definita come:

minGmaxDV(D,G)=Expx[logD(x)]+Ezpz[log(1D(G(z)))]\underset{G}{\min} \, \underset{D}{\max} \, V(D, G) = \mathbb{E}_{\mathbf{x} \sim p_{x}}[\log D(\mathbf{x})] + \mathbb{E}_{\mathbf{z} \sim p_z}[\log(1 - D(G(\mathbf{z})))]

Il generatore cerca di ingannare il discriminatore generando campioni G(z)G(z) il più possibile simili ai dati reali.

Funzioni di Loss

Sebbene l'obiettivo originale dei GAN definisca un gioco minimax, nella pratica vengono utilizzate funzioni di loss alternative per stabilizzare l'addestramento.

  • Loss del Generatore Non Saturante:
LG=Ezpz[logD(G(z))]L_G=-\mathbb{E}_{z \sim p_z}[\log{D(G(z))}]

Questo aiuta il generatore a ricevere gradienti forti anche quando il discriminatore funziona bene.

  • Loss del Discriminatore:
LD=Expx[logD(x)]Ezpz[log(1D(G(z)))]L_D = -\mathbb{E}_{x \sim p_x}[\log{D(x)}] - \mathbb{E}_{z \sim p_z}[\log{(1-D(G(z)))}]

Queste funzioni di loss incoraggiano il generatore a produrre campioni che aumentano l'incertezza del discriminatore e migliorano la convergenza durante l'addestramento.

Principali Varianti delle Architetture GAN

Sono emersi diversi tipi di GAN per affrontare specifiche limitazioni o per migliorare le prestazioni:

immagine

GAN Condizionale (cGAN)

I GAN condizionali estendono il framework standard dei GAN introducendo informazioni aggiuntive (solitamente etichette) sia nel generatore che nel discriminatore. Invece di generare dati solo dal rumore casuale, il generatore riceve sia il rumore zz che una condizione yy (ad esempio, un'etichetta di classe). Anche il discriminatore riceve yy per valutare se il campione è realistico sotto quella condizione.

  • Casi d'uso: generazione di immagini condizionate dalla classe, traduzione immagine-a-immagine, generazione di immagini da testo.

GAN Convoluzionale Profondo (DCGAN)

I DCGAN sostituiscono i layer completamente connessi nei GAN originali con layer convoluzionali e convoluzionali trasposti, rendendoli più efficaci per la generazione di immagini. Introdotti anche linee guida architetturali come la rimozione dei layer completamente connessi, l'uso della batch normalization e l'impiego di attivazioni ReLU/LeakyReLU.

  • Casi d'uso: generazione di immagini foto-realistiche, apprendimento di rappresentazioni visive, apprendimento non supervisionato delle caratteristiche.

CycleGAN I CycleGAN affrontano il problema della traduzione immagine-a-immagine senza coppie abbinate. A differenza di altri modelli che richiedono dataset accoppiati (ad esempio, la stessa foto in due stili diversi), i CycleGAN possono apprendere le mappature tra due domini senza esempi accoppiati. Introdotti due generatori e due discriminatori, ciascuno responsabile della mappatura in una direzione (ad esempio, da foto a dipinti e viceversa), viene applicata una perdita di ciclo-consistenza per garantire che la traduzione da un dominio e ritorno restituisca l'immagine originale. Questa perdita è fondamentale per preservare contenuto e struttura.

La perdita di ciclo-consistenza garantisce:

GBA(GAB(x))x e GAB(GBA(y))yG_{BA}(G_{AB}(x)) \approx x\ \text{e}\ G_{AB}(G_{BA}(y))\approx y

dove:

  • GABG_{AB} mappa immagini dal dominio A al dominio B;
  • GBAG_{BA} mappa dal dominio B al dominio A.
  • xA,yBx \in A, y \in B.

Casi d'uso: conversione da foto ad opera d'arte, traduzione da cavallo a zebra, conversione vocale tra parlanti.

StyleGAN

StyleGAN, sviluppato da NVIDIA, introduce un controllo basato sullo stile all'interno del generatore. Invece di fornire direttamente un vettore di rumore al generatore, questo passa attraverso una rete di mappatura per produrre "style vector" che influenzano ogni livello del generatore. Questo consente un controllo preciso su caratteristiche visive come colore dei capelli, espressioni facciali o illuminazione.

Innovazioni rilevanti:

  • Style mixing, permette di combinare più codici latenti;
  • Adaptive Instance Normalization (AdaIN), controlla le mappe di caratteristiche nel generatore;
  • Crescita progressiva, l'addestramento inizia a bassa risoluzione e aumenta nel tempo.

Casi d'uso: generazione di immagini ad altissima risoluzione (ad esempio, volti), controllo di attributi visivi, generazione artistica.

Confronto: GAN vs VAE

I GAN sono una potente classe di modelli generativi in grado di produrre dati altamente realistici attraverso un processo di addestramento avversario. Il loro nucleo risiede in un gioco minimax tra due reti, utilizzando perdite avversarie per migliorare iterativamente entrambi i componenti. Una solida comprensione della loro architettura, delle funzioni di perdita—incluse varianti come cGAN, DCGAN, CycleGAN e StyleGAN—e del loro confronto con altri modelli come i VAE fornisce ai professionisti le basi necessarie per applicazioni in campi come generazione di immagini, sintesi video, data augmentation e altro ancora.

1. Quale delle seguenti opzioni descrive meglio i componenti di un'architettura GAN di base?

2. Qual è l'obiettivo del gioco minimax nei GAN?

3. Quale delle seguenti affermazioni è vera riguardo alla differenza tra GAN e VAE?

question mark

Quale delle seguenti opzioni descrive meglio i componenti di un'architettura GAN di base?

Seleziona la risposta corretta

question mark

Qual è l'obiettivo del gioco minimax nei GAN?

Seleziona la risposta corretta

question mark

Quale delle seguenti affermazioni è vera riguardo alla differenza tra GAN e VAE?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 7

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 2. Capitolo 7
some-alt