Lær AI med Python · leksjon

GAN-er: generator og diskriminator

Minimaks-spillteori, ustabilitet i GAN-trening, moduskollaps og implementasjon av DCGAN.

Leksjon 3 av 413 trinn

GAN-er: generator og diskriminator er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.

Hva er et GAN?

Et Generative Adversarial Network setter to nettverk opp mot hverandre: en generator som lager falske data, og en diskriminator som avgjør hva som er ekte og falskt. De konkurrerer, og generatoren lærer å produsere overbevisende eksempler.

Det adversarielle spillet

Tenk på en forfalsker (generator) og en detektiv (diskriminator). Forfalskeren forbedrer forfalskningene for å lure detektiven, mens detektiven skjerper blikket. Dette kappløpet driver begge til å bli bedre, helt til forfalskningene ser ekte ut.

Generatoren

Generatoren avbilder en tilfeldig støyvektor til et falskt bilde. Den lærer å omforme meningsløse tilfeldige tall til strukturerte data som ser realistiske ut.

class Generator(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(100, 256), nn.ReLU(),
            nn.Linear(256, 784), nn.Tanh()
        )
    def forward(self, z):
        return self.net(z)

Støyvektoren

Inndataene z trekkes fra en standardnormalfordeling. Ulike støyvektorer gir ulike bilder, så støyen er genereringens «frø». Dimensjonen (her 100) er størrelsen på det latente rommet.

z = torch.randn(batch_size, 100)
fake_images = generator(z)

Diskriminatoren

Diskriminatoren tar imot et bilde og gir ut én sannsynlighet: hvor sannsynlig det er at bildet er ekte. En Sigmoid gir en verdi i [0,1], der 1 betyr ekte og 0 betyr falskt.

class Discriminator(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(784, 256), nn.LeakyReLU(0.2),
            nn.Linear(256, 1), nn.Sigmoid()
        )

Trening av diskriminatoren

Tren D på et parti med ekte bilder merket 1 og falske bilder merket 0. Den lærer å øke poengsummene for ekte bilder og redusere dem for falske ved hjelp av binært kryssentropitap.

d_real = criterion(D(real), ones)
d_fake = criterion(D(fake.detach()), zeros)
d_loss = d_real + d_fake
d_loss.backward()

Hvorfor detach() de falske eksemplene?

Når D trenes, bruker vi fake.detach() slik at gradientene ikke flyter inn i generatoren. Det er bare diskriminatoren som oppdateres i dette trinnet; generatoren får sin tur separat.

Trening av generatoren

Nå trenes G til å lure D: Send de falske eksemplene gjennom D, og belønn generatoren når D gir ut ekte (etikett 1). Generatoren forbedres ved å få D til å tro at forfalskningene er ekte.

g_loss = criterion(D(fake), ones)  # want D to say "real"
g_loss.backward()
g_optimizer.step()

Vekslende trening

Hver iterasjon veksler: Oppdater først D og deretter G. Det er viktig å holde dem omtrent i balanse: Hvis D blir for sterk, får G ingen nyttig gradient; hvis D blir for svak, møter G ingen utfordring.

# per step
# 1) update Discriminator
# 2) update Generator

Moduskollaps

En klassisk feil er moduskollaps: Generatoren finner ett eller noen få utdata som lurer D, og produserer bare disse, slik at variasjonen i dataene ignoreres. Symptomet er at hvert genererte eksempel ser nesten identisk ut.

Treningsustabilitet

GAN-er er notorisk ustabile: Tapene svinger, det ene nettverket kan få overtaket på det andre, og konvergensen er skjør. Teknikker som LeakyReLU, nøye valgte læringsrater og label smoothing bidrar til å stabilisere treningen.

Kort sjekk

Test forståelsen av GAN-er.

Oppsummering: GAN-er

Det adversarielle oppsettet ble gjennomgått: En generator gjør en støyvektor om til falske eksempler, en diskriminator gir ut en sannsynlighet for ekte eller falsk, og de trenes ved å veksle mellom D og G. Det ble også gjennomgått hvordan man oppdager moduskollaps og den generelle ustabiliteten som gjør GAN-er vanskelige å trene.

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
53
Leksjoner
225

Ofte stilte spørsmål

Er leksjonen «GAN-er: generator og diskriminator» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «GAN-er: generator og diskriminator», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.

Hva lærer jeg i «GAN-er: generator og diskriminator»?

Minimaks-spillteori, ustabilitet i GAN-trening, moduskollaps og implementasjon av DCGAN. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Lær AI med Python?

Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «GAN-er: generator og diskriminator»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?

Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Autoenkodere for læring av representasjoner
  2. Variasjonelle autoenkodere (VAE)
  3. GAN-er: generator og diskriminator
  4. Betingede GAN-er og stiloverføring
← Tilbake til Lær AI med Python