Perdita funzioni

Le GAN cercano di replicare una distribuzione di probabilità. Dovrebbero quindi utilizzare funzioni di perdita che riflettano la distanza tra la distribuzione dei dati generati dalla GAN e la distribuzione dei dati reali.

Come si acquisisce la differenza tra due distribuzioni nelle funzioni di perdita GAN? Questa domanda è un'area di ricerca attiva e sono stati proposti molti approcci. Qui illustreremo due funzioni di perdita GAN comuni, entrambe implementate in TF-GAN:

TF-GAN implementa anche molte altre funzioni di perdita.

Una o due funzioni di perdita?

Un GAN può avere due funzioni di perdita: una per l'addestramento del generatore e una per l'addestramento del discriminatore. In che modo due funzioni di perdita possono funzionare insieme per riflettere una misura della distanza tra le distribuzioni di probabilità?

Nei schemi di perdita che esamineremo qui, le perdite del generatore e del discriminatore derivano da una singola misura della distanza tra le distribuzioni di probabilità. Tuttavia, in entrambi questi schemi, il generatore può influire solo su un termine nella misura della distanza: il termine che riflette la distribuzione dei dati falsi. Pertanto, durante l'addestramento del generatore eliminiamo l'altro termine, che riflette la distribuzione dei dati reali.

Alla fine, le perdite del generatore e del discriminatore sembrano diverse, anche se derivano da una singola formula.

Perdita minimax

Nel documento che ha introdotto le GAN, il generatore cerca di ridurre al minimo la seguente funzione, mentre il discriminatore cerca di massimizzarla:

Ex[log(D(x))]+Ez[log(1D(G(z)))]

In questa funzione:

  • D(x) è la stima del discriminatore della probabilità che l'istanza di dati reali x sia reale.
  • Ex è il valore previsto per tutte le istanze di dati reali.
  • G(z) è l'output del generatore quando viene fornito il rumore z.
  • D(G(z)) è la stima del discriminatore della probabilità che un'istanza falsa sia reale.
  • Ez è il valore atteso per tutti gli input casuali al generatore (in pratica, il valore atteso per tutte le istanze false generate G(z)).
  • La formula deriva dall'entropia incrociata tra le distribuzioni reali e generate.

Il generatore non può influire direttamente sul termine log(D(x)) nella funzione, pertanto, per il generatore, la minimizzazione della perdita è equivalente alla minimizzazione di log(1 - D(G(z))).

In TF-GAN, consulta minimax_discriminator_loss e minimax_generator_loss per un'implementazione di questa funzione di perdita.

Perdita minimax modificata

Il documento originale sulle GAN indica che la funzione di perdita minimax riportata sopra può causare il blocco della GAN nelle prime fasi dell'addestramento quando il compito del discriminatore è molto semplice. Pertanto, il documento suggerisce di modificare la perdita del generatore in modo che il generatore cerchi di massimizzare log D(G(z)).

In TF-GAN, consulta modified_generator_loss per un'implementazione di questa modifica.

Perdita di Wasserstein

Per impostazione predefinita, TF-GAN utilizza la funzione di perdita di Wasserstein.

Questa funzione di perdita dipende da una modifica dello schema GAN (chiamato "Wasserstein GAN" o "WGAN") in cui il discriminatore non classifica effettivamente le istanze. Per ogni istanza viene visualizzato un numero. Questo numero non deve essere inferiore a 1 o superiore a 0, pertanto non possiamo utilizzare 0,5 come soglia per decidere se un'istanza è reale o falsa. L'addestramento del discriminatore tenta semplicemente di aumentare l'output per le istanze reali rispetto a quelle false.

Poiché non è in grado di distinguere tra reale e falso, il discriminatore WGAN è in realtà chiamato "critico" anziché "discriminatore". Questa distinta ha un'importanza teorica, ma per scopi pratici possiamo trattarla come un riconoscimento del fatto che gli input alle funzioni di perdita non devono essere probabilità.

Le funzioni di perdita sono apparentemente semplici:

Perdita di critici: D(x) - D(G(z))

Il discriminatore cerca di massimizzare questa funzione. In altre parole, cerca di massimizzare la differenza tra l'output sulle istanze reali e l'output sulle istanze false.

Perdita del generatore: D(G(z))

Il generatore cerca di massimizzare questa funzione. In altre parole, cerca di massimizzare l'output del discriminatore per le sue istanze false.

In queste funzioni:

  • D(x) è l'output del validatore per un'istanza reale.
  • G(z) è l'output del generatore quando viene fornito il rumore z.
  • D(G(z)) è l'output del validatore per un'istanza falsa.
  • L'output del critico D non deve essere compreso tra 1 e 0.
  • Le formule derivano dalla distanza di spostamento della Terra tra le distribuzioni reali e generate.

In TF-GAN, consulta wasserstein_generator_loss e wasserstein_discriminator_loss per le implementazioni.

Requisiti

La giustificazione teorica della GAN di Wasserstein (o WGAN) richiede che i pesi in tutta la GAN vengano tagliati in modo che rimangano all'interno di un intervallo limitato.

Vantaggi

Le GAN di Wasserstein sono meno vulnerabili al blocco rispetto alle GAN basate su minimax e evitano i problemi relativi ai gradienti che svaniscono. La distanza del movimento della terra ha anche il vantaggio di essere una metrica vera e propria: una misura della distanza in uno spazio di distribuzioni di probabilità. L'entropia incrociata non è una metrica in questo senso.