-->

Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

Reti GAN Funzionamento


Le reti Generative Adversarial Networks (GAN) un modello composto da due reti neurali che competono tra loro, il generatore e il discriminatore.

Reti GAN: Definizione e Funzionamento

Le reti Generative Adversarial Networks (GAN) sono un tipo di modello di intelligenza artificiale composto da due reti neurali che competono tra loro, il generatore e il discriminatore.
Queste reti sono state introdotte da Ian Goodfellow e i suoi colleghi nel 2014.

Generatore

Il generatore è una rete neurale che prende come input un vettore di rumore casuale (z) e genera dati falsi.
Questo vettore (z) è tipicamente campionato da una distribuzione uniforme o normale.
Il generatore può essere visto come una funzione \(G(z; \theta_g)\) dove \(\theta_g\) rappresenta i parametri della rete.
  • Architettura del Generatore: Di solito, il generatore è composto da una serie di strati di convoluzione trasposta (o deconvoluzione), batch normalization e attivazioni non lineari come ReLU o Leaky ReLU. Questi strati consentono al generatore di trasformare il rumore casuale in un dato strutturato (ad esempio, un'immagine).

  • Obiettivo del Generatore: L'obiettivo del generatore è produrre dati che siano il più possibile simili ai dati reali in modo che il discriminatore non riesca a distinguerli.
    Questo viene fatto minimizzando una funzione di perdita che rappresenta quanto il discriminatore è ingannato.

Discriminatore

Il discriminatore è una rete neurale che prende come input sia dati reali che dati generati e cerca di distinguere tra questi due.
Può essere visto come una funzione \(D(x; \theta_d)\) dove (x) è il dato di input (reale o generato) e \(\theta_d\) rappresenta i parametri della rete.
  • Architettura del Discriminatore: Il discriminatore è tipicamente composto da una serie di strati convoluzionali, batch normalization e attivazioni non lineari come Leaky ReLU.
    Alla fine, c'è uno strato completamente connesso che produce una singola uscita, rappresentante la probabilità che l'input sia reale.

  • Obiettivo del Discriminatore: L'obiettivo del discriminatore è quello di classificare correttamente i dati come reali o generati.
    Questo viene fatto massimizzando una funzione di perdita che rappresenta la correttezza delle sue classificazioni.

Addestramento

L'addestramento delle GAN avviene attraverso un processo iterativo in cui le due reti competono tra loro.
Il processo può essere riassunto nei seguenti passaggi:
1. Il generatore crea dati falsi: Il generatore produce un batch di dati falsi partendo da un vettore di rumore casuale.
2. Il discriminatore valuta i dati: Il discriminatore valuta sia i dati reali che quelli generati, cercando di classificarli correttamente.
3. Aggiornamento dei pesi:
- Il discriminatore viene aggiornato per migliorare la sua capacità di distinguere tra reale e falso.
- Il generatore viene aggiornato per migliorare la qualità dei dati generati al fine di ingannare meglio il discriminatore.

Funzione di Perdita del Discriminatore

La funzione di perdita del discriminatore \(L_D\) è basata sulla cross-entropia binaria.
Il discriminatore cerca di massimizzare la probabilità di assegnare l'etichetta corretta ai campioni reali e generati:
\[ L_D = -\left( \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log (1 - D(G(z)))] \right) \]
\(\mathbb{E}_{x \sim p_{data}}[\log D(x)]\) Rappresenta l'attesa della probabilità che il discriminatore assegna ai dati reali.
\(\mathbb{E}_{z \sim p_z}[\log (1 - D(G(z)))]\) Rappresenta l'attesa della probabilità che il discriminatore assegna ai dati generati.

Funzione di Perdita del Generatore

La funzione di perdita del generatore \(L_G\) è progettata per ingannare il discriminatore. Invece di massimizzare la probabilità che i dati generati siano classificati correttamente, il generatore cerca di minimizzare la probabilità che i dati generati siano classificati come falsi:
\[ L_G = -\mathbb{E}_{z \sim p_z}[\log D(G(z))] \]
\(\mathbb{E}_{z \sim p_z}[\log D(G(z))]\) Rappresenta l'attesa della probabilità che il discriminatore assegna ai dati generati come se fossero reali.

Procedura di Addestramento

L'addestramento delle GAN segue un processo iterativo in cui si alterna l'aggiornamento dei pesi del discriminatore e del generatore:

Aggiornamento del Discriminatore


- Campiona un batch di dati reali ( x ) dal dataset reale.
- Campiona un batch di rumore ( z ) dalla distribuzione del rumore.
- Genera dati falsi ( G(z) ) usando il generatore.
- Calcola la perdita del discriminatore \( L_D \) usando i dati reali e generati.
- Aggiorna i pesi del discriminatore \( \theta_d \) minimizzando \( L_D \)

Aggiornamento del Generatore


- Campiona un batch di rumore ( z ) dalla distribuzione del rumore.
- Genera dati falsi ( G(z) ) usando il generatore.
- Calcola la perdita del generatore \( L_G \) usando i dati generati.
- Aggiorna i pesi del generatore \( \theta_g \) minimizzando \( L_G \)

Problemi di Addestramento delle GAN


Nonostante le GAN abbiano mostrato risultati impressionanti in molti campi, il loro addestramento presenta diverse sfide:

Modal Collapse: Il generatore può imparare a produrre solo un sottoinsieme limitato di dati che ingannano il discriminatore, portando a una mancanza di diversità nei dati generati.
Questo problema si verifica quando il generatore converge a una soluzione che produce sempre lo stesso output.

Instabilità: L'addestramento delle GAN può essere instabile, con il rischio che il generatore e il discriminatore non migliorino simultaneamente, portando a un fallimento nell'addestramento.
L'instabilità può essere causata da aggiornamenti troppo grandi dei pesi o da un disequilibrio nella capacità delle due reti.

Difficoltà nel bilanciamento: È complicato mantenere un equilibrio tra il generatore e il discriminatore.
Se uno dei due diventa troppo potente rispetto all'altro, l'intero sistema può fallire.
Ad esempio, se il discriminatore è troppo forte, il generatore non riuscirà mai a ingannarlo e quindi non migliorerà.

Gradienti vanishing/exploding: Problemi comuni nelle reti neurali che possono influenzare negativamente l'addestramento delle GAN, rendendo difficile il progresso. I gradienti vanishing si verificano quando i gradienti che aggiornano i pesi diventano troppo piccoli, mentre i gradienti exploding si verificano quando diventano troppo grandi.