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
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:
- Esempio di rumore casuale.
- Produzione dell'output del generatore da rumore casuale campionato.
- Ottieni discriminazione "Reale" o "Falso", classificazione per l'output del generatore.
- Calcola la perdita dalla classificazione dei discriminatori.
- Backpropagate attraverso il discriminatore e il generatore per ottenere gradienti.
- 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.