Generative Adversarial Network

Et neuralt netværk bestående af to modeller, en generator og en diskriminator, der trænes samtidigt i et konkurrencepræget spil, hvor generatoren forsøger at producere data, der kan narre diskriminatoren.

Kort fortalt

En type AI, hvor to netværk konkurrerer mod hinanden: ét der skaber falske data, og ét der vurderer om data er ægte eller falsk.

Kategori
arkitektur
Niveau
øvet
Udtale
/ˈdʒɛnərətɪv ædˈvɜːrsəriəl ˈnɛtwɜːrk/

Betydninger

1
  1. 1

    En klasse af generative modeller, der består af et generatornetværk og et diskriminatornetværk, som trænes i et minimax-spil med henblik på at lære datafordelingen.

    • GANs har opnået imponerende resultater inden for billedgenerering, især med StyleGAN-arkitekturen. — Karras et al., 2019
    • Træning af GANs kan være ustabil og kræver ofte teknikker som gradient clipping eller spektral normalisering. — Miyato et al., 2018

Hvornår bruges det

GANs anvendes primært til generering af realistiske billeder, videoer og lyd, samt til data augmentation og super-resolution. De kræver omhyggelig tuning af hyperparametre for at undgå mode collapse og ustabil træning.

Formel

min_G max_D V(D,G) = E_{x~p_data(x)}[log D(x)] + E_{z~p_z(z)}[log(1 - D(G(z)))]

Kodeeksempel

import tensorflow as tf
from tensorflow.keras import layers

def build_generator(latent_dim):
    model = tf.keras.Sequential()
    model.add(layers.Dense(128, activation='relu', input_dim=latent_dim))
    model.add(layers.Dense(784, activation='sigmoid'))
    model.add(layers.Reshape((28, 28, 1)))
    return model

def build_discriminator():
    model = tf.keras.Sequential()
    model.add(layers.Flatten(input_shape=(28, 28, 1)))
    model.add(layers.Dense(128, activation='relu'))
    model.add(layers.Dense(1, activation='sigmoid'))
    return model

Eksempel på opbygning af en simpel GAN til MNIST-billeder: generatoren producerer 28x28 gråtonebilleder fra en latent vektor, og diskriminatoren klassificerer billeder som ægte eller falske.

Oprindelse

Termen blev introduceret af Ian Goodfellow og hans kolleger i 2014 i artiklen 'Generative Adversarial Nets'.

Afledte ord

4

Kilder

1