GANs: Generator und Diskriminator
Minimax-Spieltheorie, Trainingsinstabilität von GANs, Mode Collapse, DCGAN-Implementierung.
GANs: Generator und Diskriminator ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein GAN?
Ein Generative Adversarial Network lässt zwei Netzwerke gegeneinander antreten: einen Generator, der künstliche Daten erzeugt, und einen Diskriminator, der echte von künstlichen Daten unterscheidet. Sie konkurrieren miteinander, wodurch der Generator lernt, überzeugende Beispiele zu erzeugen.
Das adversarielle Spiel
Stellen Sie sich einen Fälscher (Generator) und einen Ermittler (Diskriminator) vor. Der Fälscher verbessert seine Fälschungen, um den Ermittler zu täuschen, während der Ermittler seinen Blick schärft. Dieses Wettrüsten treibt beide dazu an, immer besser zu werden, bis die Fälschungen echt aussehen.
Der Generator
Der Generator bildet einen zufälligen Rauschvektor auf ein künstliches Bild ab. Er lernt, bedeutungslose Zufallszahlen in strukturierte, realistisch aussehende Daten umzuwandeln.
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)Der Rauschvektor
Die Eingabe z wird aus einer Standardnormalverteilung gesampelt. Verschiedene Rauschvektoren erzeugen verschiedene Bilder, daher ist das Rauschen der „Startwert“ der Generierung. Seine Dimension (hier 100) ist die Größe des latenten Raums.
z = torch.randn(batch_size, 100)
fake_images = generator(z)Der Diskriminator
Der Diskriminator nimmt ein Bild und gibt eine einzelne Wahrscheinlichkeit aus: Wie wahrscheinlich ist es, dass das Bild echt ist? Eine Sigmoid-Funktion liefert einen Wert im Bereich [0,1], wobei 1 echt und 0 künstlich bedeutet.
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()
)Den Diskriminator trainieren
Trainieren Sie D mit einem Stapel echter Bilder, die mit 1 gelabelt sind, und künstlicher Bilder, die mit 0 gelabelt sind. Mithilfe der binären Kreuzentropie lernt D, die Bewertungen echter Bilder zu erhöhen und die künstlicher Bilder zu senken.
d_real = criterion(D(real), ones)
d_fake = criterion(D(fake.detach()), zeros)
d_loss = d_real + d_fake
d_loss.backward()Warum detach() für künstliche Bilder?
Beim Training von D verwenden wir fake.detach(), damit keine Gradienten in den Generator fließen. In diesem Schritt aktualisieren wir ausschließlich den Diskriminator; der Generator ist separat an der Reihe.
Den Generator trainieren
Trainieren Sie nun G, um D zu täuschen: Leiten Sie die künstlichen Bilder durch D und belohnen Sie den Generator, wenn D echt (Label 1) ausgibt. Der Generator verbessert sich, indem er D davon überzeugt, dass seine Fälschungen echt sind.
g_loss = criterion(D(fake), ones) # want D to say "real"
g_loss.backward()
g_optimizer.step()Abwechselndes Training
Jede Iteration wechselt ab: Zuerst wird D aktualisiert, dann G. Es ist entscheidend, beide ungefähr im Gleichgewicht zu halten: Wird D zu stark, erhält G keinen nützlichen Gradienten; ist D zu schwach, steht G vor keiner Herausforderung.
# per step
# 1) update Discriminator
# 2) update GeneratorModenkollaps
Ein klassischer Fehler ist der Modenkollaps: Der Generator findet eine oder wenige Ausgaben, die D täuschen, und erzeugt nur diese, während er die Vielfalt der Daten ignoriert. Ein typisches Anzeichen ist, dass jedes generierte Beispiel nahezu identisch aussieht.
Instabilität beim Training
GANs sind bekanntermaßen instabil: Die Verluste schwanken, eines der Netzwerke kann das andere überwältigen, und die Konvergenz ist empfindlich. Maßnahmen wie LeakyReLU, sorgfältig gewählte Lernraten und Label Smoothing helfen, das Training zu stabilisieren.
Kurzer Test
Testen Sie Ihr Verständnis von GANs.
Zusammenfassung: GANs
Sie haben den adversariellen Aufbau kennengelernt: Ein Generator wandelt einen Rauschvektor in künstliche Daten um, ein Diskriminator gibt eine Wahrscheinlichkeit für echt oder künstlich aus, und beide werden durch abwechselndes Training von D und anschließend G trainiert. Außerdem haben Sie gelernt, den Modenkollaps und die allgemeine Instabilität zu erkennen, die das Training von GANs schwierig macht.
Häufig gestellte Fragen
Ist die Lektion „GANs: Generator und Diskriminator“ kostenlos?
Ja — der vollständige Text von „GANs: Generator und Diskriminator“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „GANs: Generator und Diskriminator“?
Minimax-Spieltheorie, Trainingsinstabilität von GANs, Mode Collapse, DCGAN-Implementierung. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „GANs: Generator und Diskriminator“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Autoencoder für Repräsentationslernen
- Variational Autoencoder (VAE)
- GANs: Generator und Diskriminator
- Bedingte GANs und Style Transfer