Panoramica della struttura GAN

Una rete adversary generativa (GAN) si compone di due parti:

  • Il generatore impara a generare dati plausibili. Le istanze generate diventano esempi di addestramento negativi per il discriminatore.
  • Il discriminatore impara a distinguere i dati falsi del generatore da dati reali. Il discriminatore penalizza il generatore per la produzione di risultati non plausibili.

Quando inizia l'addestramento, il generatore produce dati ovviamente falsi e l'autore della discrimina impara rapidamente a dire che è falso:

Tre colonne sono etichettate 'Dati generati', 'Discriminatore' e
          Dati reali'. In 'Generated Data' un rettangolo blu contiene
          uno scoiattolo e un cerchio. Il rettangolo è il primo, cattivo tentativo del generatore di generare un conto in dollari. In 'Real Data' c’è l’immagine di una banconota da
          dieci dollari reali. In 'Discriminator' sono le parole 'FAKE' e
          'REAL'. Una freccia indica la parola 'FAKE' all'immagine sotto
          'Dati generati'. Un'altra freccia punta dalla parola 'REAL' alla
          immagine sotto 'Real Data'.

Man mano che l'addestramento procede, il generatore si avvicina alla produzione di output che può ingannare il discriminatore:

Questa immagine aggiunge una nuova riga nelle intestazioni 'Dati generati', 'Discriminator'
          e 'Dati reali' nell'immagine precedente. Sotto 'Generated Data'
          è presente un rettangolo verde con il numero 10 nell'angolo in alto a sinistra
          e un semplice disegno di una faccina. In 'Real Data' c’è l’immagine di una
          banconota reale da 100 dollari. In 'Discriminator' è la parola "#FAK".

Infine, se l'addestramento al generatore va bene, il discriminatore peggiora nella comprensione della differenza tra reale e falso. Inizia a classificare i dati falsi come reali e la sua accuratezza diminuisce.

Questa immagine aggiunge una nuova riga nelle intestazioni 'Dati generati', 'Discriminator'
          e 'Dati reali' nella prima immagine precedente. In 'Generated
          Data' è presente l'immagine di una banconota da venti dollari. In 'Real Data
          è presente l'immagine di una banconota da venti dollari. In 'Discriminator'
          è la parola 'REAL' con
          una freccia che punta all’immagine sotto 'Generated Data' e la parola
          'REAL' con una freccia che punta all’immagine in 'Real Data'.

Ecco un'immagine dell'intero sistema:

Diagramma di una rete avversaria generativa. Al centro del diagramma è presente una casella con l'etichetta 'discriminator'. Due rami si spostano in questa casella a sinistra.  Il ramo in alto inizia in alto a sinistra nel diagramma con un cilindro con l'etichetta 'real world images'. Una freccia porta da questo cilindro a una casella con l'etichetta 'Sample'. Una freccia dalla casella etichettata 'Sample' si inserisce nella casella 'Discriminator'. Il ramo inferiore
          si inserisce nella casella 'Discriminator' che inizia con una casella etichettata 'random
          Input'. Una freccia porta da 'Input casuale' a una casella etichettata
          'Generatore'. Una freccia porta dalla casella 'Generatore' a una seconda
          casella 'Esempio'. Una freccia passa dalla casella 'Sample' alla
          casella ##39;Discriminator. A destra della casella Discriminatore, una
          freccia rimanda a una casella contenente un cerchio verde e un cerchio rosso. La parola 'Real' viene visualizzata in testo verde sopra la casella e la parola 'False'
 appare in rosso sotto la casella. Due frecce portano da questa casella a due caselle sul lato destro del diagramma. Una freccia conduce a una casella
          etichettata 'Discriminator perdita'. L'altra freccia conduce a una casella denominata
          'Perdita del generatore'.

Sia il generatore che il discriminatore sono reti neurali. L'output del generatore è collegato direttamente all'ingresso del discriminatore. Attraverso la backpropagation, la classificazione del discriminatore fornisce un indicatore che il generatore utilizza per aggiornare le sue ponderazioni.

Vediamo più in dettaglio come funziona questo sistema.