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
AI Generativa

bookReti Generative Avversarie (GAN)

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 migliora nella produzione di dati realistici e il discriminatore migliora nel distinguere i dati reali da quelli falsi.

Architettura di un GAN

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

1. Generatore (G)

  • Riceve come 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) destinato ad assomigliare ai dati della distribuzione reale.

2. Discriminatore (D)

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

Questi due componenti vengono addestrati 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 della teoria dei giochi. In questa configurazione:

  • Il generatore GG e il discriminatore DD sono giocatori in competizione;
  • DD mira a massimizzare la propria 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, in cui 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 perdita

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

  • Perdita 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 ha buone prestazioni.

  • Perdita 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 perdita 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 limitazioni specifiche o per migliorare le prestazioni:

Conditional GAN (cGAN)

I Conditional GAN 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 in base a quella condizione.

  • Casi d'uso: generazione di immagini condizionata alla classe, traduzione immagine-a-immagine, generazione di testo-a-immagine.

Deep Convolutional GAN (DCGAN)

DCGAN sostituisce i layer completamente connessi nei GAN originali con layer convoluzionali e convoluzionali trasposti, rendendoli più efficaci nella generazione di immagini. Introduce inoltre linee guida architetturali come la rimozione dei layer completamente connessi, l'utilizzo 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 di feature.

CycleGAN I CycleGAN affrontano il problema della traduzione immagine-a-immagine senza coppie abbinate. A differenza di altri modelli che richiedono dataset abbinati (ad esempio, la stessa foto in due stili diversi), i CycleGAN possono apprendere le mappature tra due domini senza esempi abbinati. Introducono due generatori e due discriminatori, ciascuno responsabile della mappatura in una direzione (ad esempio, da foto a dipinti e viceversa), e applicano una perdita di coerenza ciclica 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 coerenza ciclica 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 le 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 il 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 layer del generatore. Ciò consente un controllo dettagliato sulle caratteristiche visive come colore dei capelli, espressioni facciali o illuminazione.

Innovazioni rilevanti:

  • Style mixing, consente di combinare più codici latenti;
  • Adaptive Instance Normalization (AdaIN), controlla le feature map 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 degli attributi visivi, generazione artistica.

Confronto: GANs vs VAEs

Le GANs rappresentano una potente classe di modelli generativi in grado di produrre dati altamente realistici tramite un processo di addestramento avversariale. Il loro nucleo risiede in un gioco minimax tra due reti, utilizzando funzioni di perdita avversariali 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 le VAE fornisce ai professionisti le basi necessarie per applicazioni in ambiti quali generazione di immagini, sintesi video, data augmentation e altro ancora.

1. Quale delle seguenti opzioni descrive meglio i componenti di una 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 una architettura GAN di base?

Select the correct answer

question mark

Qual è l'obiettivo del gioco minimax nei GAN?

Select the correct answer

question mark

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

Select the correct answer

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

Awesome!

Completion rate improved to 4.76

bookReti 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 migliora nella produzione di dati realistici e il discriminatore migliora nel distinguere i dati reali da quelli falsi.

Architettura di un GAN

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

1. Generatore (G)

  • Riceve come 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) destinato ad assomigliare ai dati della distribuzione reale.

2. Discriminatore (D)

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

Questi due componenti vengono addestrati 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 della teoria dei giochi. In questa configurazione:

  • Il generatore GG e il discriminatore DD sono giocatori in competizione;
  • DD mira a massimizzare la propria 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, in cui 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 perdita

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

  • Perdita 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 ha buone prestazioni.

  • Perdita 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 perdita 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 limitazioni specifiche o per migliorare le prestazioni:

Conditional GAN (cGAN)

I Conditional GAN 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 in base a quella condizione.

  • Casi d'uso: generazione di immagini condizionata alla classe, traduzione immagine-a-immagine, generazione di testo-a-immagine.

Deep Convolutional GAN (DCGAN)

DCGAN sostituisce i layer completamente connessi nei GAN originali con layer convoluzionali e convoluzionali trasposti, rendendoli più efficaci nella generazione di immagini. Introduce inoltre linee guida architetturali come la rimozione dei layer completamente connessi, l'utilizzo 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 di feature.

CycleGAN I CycleGAN affrontano il problema della traduzione immagine-a-immagine senza coppie abbinate. A differenza di altri modelli che richiedono dataset abbinati (ad esempio, la stessa foto in due stili diversi), i CycleGAN possono apprendere le mappature tra due domini senza esempi abbinati. Introducono due generatori e due discriminatori, ciascuno responsabile della mappatura in una direzione (ad esempio, da foto a dipinti e viceversa), e applicano una perdita di coerenza ciclica 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 coerenza ciclica 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 le 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 il 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 layer del generatore. Ciò consente un controllo dettagliato sulle caratteristiche visive come colore dei capelli, espressioni facciali o illuminazione.

Innovazioni rilevanti:

  • Style mixing, consente di combinare più codici latenti;
  • Adaptive Instance Normalization (AdaIN), controlla le feature map 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 degli attributi visivi, generazione artistica.

Confronto: GANs vs VAEs

Le GANs rappresentano una potente classe di modelli generativi in grado di produrre dati altamente realistici tramite un processo di addestramento avversariale. Il loro nucleo risiede in un gioco minimax tra due reti, utilizzando funzioni di perdita avversariali 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 le VAE fornisce ai professionisti le basi necessarie per applicazioni in ambiti quali generazione di immagini, sintesi video, data augmentation e altro ancora.

1. Quale delle seguenti opzioni descrive meglio i componenti di una 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 una architettura GAN di base?

Select the correct answer

question mark

Qual è l'obiettivo del gioco minimax nei GAN?

Select the correct answer

question mark

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

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 7
some-alt