Generatore

Il generatore di una GAN impara a creare dati falsi incorporando i feedback del discriminatore. Impara a fare in modo che l'autore della distinzione classifichi in modo originale il suo output.

L'addestramento del generatore richiede una maggiore integrazione tra il generatore e il discriminatore rispetto a quanto richiesto dalla formazione dei discriminatori. La porzione di GAN che addestra il generatore include:

  • input casuale
  • rete di generazione di dati, che trasforma l'input casuale in un'istanza di dati
  • rete di discriminazione, che classifica i dati generati
  • uscita del discriminatore
  • perdita del generatore, che penalizza il generatore per non aver ingannare l'discriminatore

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 una casella etichettata '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. Sul lato destro del riquadro 'Discriminator', due
          frecce portano 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'. Un riquadro giallo con una freccia che punta a sinistra e la parola 'Backpropagation' è disegnata attorno al riquadro 'Shuffle casuale

Figura 1: retropropagazione nell'addestramento del generatore.

Ingresso casuale

Le reti neurali richiedono una forma di input. Normalmente, inseriamo i dati con cui vogliamo fare qualcosa, ad esempio un'istanza su cui vogliamo classificare o fare una previsione. Ma cosa utilizziamo per l'input di una rete che genera istanze di dati completamente nuove?

Nella sua forma più basilare, un GAN sfrutta il rumore casuale come input. Il generatore trasforma quindi questo rumore in un output significativo. Introducendo il rumore, possiamo far sì che il GAN produca un'ampia varietà di dati, campionando i dati da diverse posizioni della distribuzione target.

Gli esperimenti suggeriscono che la distribuzione del rumore non è molto importante, quindi possiamo scegliere qualcosa da cui è facile campionare, come una distribuzione uniforme. Per comodità, lo spazio da cui viene campionato il rumore è solitamente di dimensioni inferiori rispetto alla dimensione dello spazio di output.

Utilizzo del Discriminatore per addestrare il generatore

Per addestrare una rete neurale, modifichiamo i suoi valori per ridurre l'errore o la perdita di output. Tuttavia, nel nostro GAN non è direttamente collegato alla perdita che stiamo perdendo. Il generatore ricade nella rete del discriminatore e l'discriminatore produce l'output che stiamo cercando di influenzare. La perdita del generatore penalizza il generatore per la produzione di un campione che la rete del discriminatore classifica come falso.

Questo blocco di rete aggiuntivo deve essere incluso nella retropropagazione. La retropropagazione regola ogni peso nella direzione giusta calcolando l'impatto del peso sull'output, ovvero come cambierebbe se il peso viene modificato. Tuttavia, l'impatto di un peso del generatore dipende dall'impatto del peso del discriminatore a cui si riferisce. La propagazione inizia dall'output e ritorna attraverso il discriminatore nel generatore.

Allo stesso tempo, non vogliamo che il discriminatore cambi durante l'addestramento del generatore. Cercare di raggiungere un bersaglio mobile renderebbe un problema ancora più difficile per il generatore.

Quindi addestriamo il generatore seguendo la seguente procedura:

  1. Esempio di rumore casuale.
  2. Produzione dell'output del generatore da rumore casuale campionato.
  3. Ottieni discriminazione "Reale" o "Falso", classificazione per l'output del generatore.
  4. Calcola la perdita dalla classificazione dei discriminatori.
  5. Backpropagate attraverso il discriminatore e il generatore per ottenere gradienti.
  6. Utilizza i gradienti per modificare solo le ponderazioni del generatore.

Questa è un'iterazione dell'addestramento del generatore. Nella sezione successiva vedremo come destreggiarti tra la formazione del generatore e del discriminatore.