Riassunti
Appunti universitari in formato Markdown da Obsidian.
GAN (Generative Adversarial Networks)
download Scarica MDLe GAN (Goodfellow et al., 2014) rappresentano un approccio radicalmente diverso alla modellazione generativa. Invece di modellare esplicitamente una distribuzione di probabilità (come i VAE), le GAN imparano a generare dati attraverso un gioco competitivo tra due reti neurali.
1. I Giocatori
Immaginiamo una sfida tra un falsario d'arte e un critico d'arte.
Il Generatore ($G$) - Il Falsario
- Input: Un vettore di rumore casuale $z$ (vettore latente).
- Obiettivo: Trasformare questo rumore in un'immagine $x_{fake}$ che sia indistinguibile da un'immagine reale del dataset di training.
- Non vede mai le immagini reali! Impara solo dai feedback del discriminatore.
Il Discriminatore ($D$) - Il Critico
- Input: Un'immagine (che può essere reale $x$ o falsa $x_{fake}$).
- Obiettivo: Classificare correttamente l'immagine come "Reale" (1) o "Falsa" (0).
- È un classico classificatore binario addestrato in modo supervisionato.
2. Il Gioco Minimax
L'addestramento è un gioco a somma zero.
- $D$ cerca di massimizzare la sua accuratezza (riconoscere i falsi).
- $G$ cerca di minimizzare l'accuratezza di $D$ (ingannarlo).
Matematicamente, cercano di ottimizzare la funzione valore $V(D, G)$:
3. Sfide nell'Addestramento
Le GAN sono notoriamente difficili da addestrare a causa dell'instabilità dinamica.
Mode Collapse (Collasso Modale)
Il generatore trova una immagine che inganna bene il discriminatore (es. una specifica scarpa) e inizia a generare solo quella, ignorando la varietà del dataset reale. Il discriminatore impara a bloccarla, il generatore si sposta su un'altra singola immagine, e così via, girando in tondo senza imparare la distribuzione completa.
Vanishing Gradients
Se il discriminatore è troppo bravo (perfetto), non fornisce gradienti utili al generatore per migliorare (la curva di loss diventa piatta). Bisogna mantenere i due avversari bilanciati.
4. Varianti Famose
DCGAN (Deep Convolutional GAN)
La prima architettura stabile per generare immagini. Usa convoluzioni trasposte (Deconvolutions) nel generatore per up-campionare il rumore in un'immagine, e convoluzioni con stride nel discriminatore. Elimina i livelli di Pooling e Fully Connected.
CycleGAN: Traduzione Image-to-Image senza Coppie
Supponiamo di voler trasformare foto di cavalli in zebre. Con i metodi classici (Pix2Pix), servirebbero migliaia di foto esattamente accoppiate (stessa posa, stesso sfondo). CycleGAN risolve il problema usando due generatori ($G: X \to Y$ e $F: Y \to X$) e due discriminatori. Introduce la Cycle Consistency Loss:
- Se traduco una frase in Inglese -> Francese -> Inglese, devo riottenere la frase originale.
- Se trasformo Cavallo -> Zebra -> Cavallo, l'immagine finale deve essere identica all'originale. Questo vincolo costringe la rete a preservare la struttura della scena mentre cambia solo lo stile (texture).