Variational Autoencoder (VAE)
ELBO-Loss, Reparametrisierungs-Trick, Erkunden des latenten Raums, Bilderzeugung mit VAE.
Variational Autoencoder (VAE) ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 2 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.
Vom Autoencoder zum VAE
Ein einfacher Autoencoder lernt verstreute Punkte, sodass das Sampeln neuer Punkte unbrauchbare Ergebnisse liefert. Ein Variational Autoencoder (VAE) lernt dagegen einen glatten, kontinuierlichen latenten Raum, aus dem Sie sampeln können, und wird dadurch zu einem echten generativen Modell.
Kodieren als Verteilung
Statt eines einzelnen Punkts gibt der Encoder eines VAE für jede Eingabe eine Verteilung aus: einen Mittelwert mu und eine Log-Varianz log_var. Jede Eingabe wird auf eine kleine, unscharfe Region des latenten Raums abgebildet, nicht auf einen einzelnen Punkt.
class Encoder(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(784, 256)
self.fc_mu = nn.Linear(256, 64)
self.fc_logvar = nn.Linear(256, 64)Warum mu und log_var?
Wir sagen log_var statt der Varianz direkt voraus, weil dieser Wert jede reelle Zahl annehmen kann und daher keiner Positivitätsbedingung unterliegt. Außerdem ist die Berechnung numerisch stabil. Durch Exponentieren erhalten wir bei Bedarf wieder die Varianz.
def forward(self, x):
h = torch.relu(self.fc(x))
return self.fc_mu(h), self.fc_logvar(h)Latentes z sampeln
Für die Dekodierung müssen wir z aus der vorhergesagten Verteilung sampeln. Diese zufällige Ziehung ist naiv betrachtet nicht differenzierbar, sodass wir nicht durch sie rückwärts propagieren können. Der Reparametrisierungstrick löst dieses Problem.
Der Reparametrisierungstrick
Schreiben Sie die Stichprobe als z = mu + eps * exp(0.5 * log_var), wobei eps zufälliges Rauschen ist. Die Zufälligkeit steckt nun in eps (dafür wird kein Gradient benötigt), während die Gradienten durch mu und log_var fließen.
def reparameterize(mu, log_var):
std = torch.exp(0.5 * log_var)
eps = torch.randn_like(std)
return mu + eps * stdDer Decoder
Der Decoder nimmt das gesampelte z und rekonstruiert das Bild – genau wie der Decoder eines normalen Autoencoders. Dabei erweitert er 64 Dimensionen wieder auf 784 Pixel und verwendet eine Sigmoid-Ausgabe.
decoder = nn.Sequential(
nn.Linear(64, 256),
nn.ReLU(),
nn.Linear(256, 784),
nn.Sigmoid()
)Term für den Rekonstruktionsverlust
Die erste Hälfte des VAE-Verlusts ist die Rekonstruktion: Wie gut stimmt das dekodierte Bild mit der Eingabe überein? Für die Pixel wird die binäre Kreuzentropie (oder MSE) verwendet.
recon_loss = nn.functional.binary_cross_entropy(
recon, x, reduction="sum"
)Der Term der KL-Divergenz
Die zweite Hälfte ist die KL-Divergenz. Sie zieht jede kodierte Verteilung zu einer Standardnormalverteilung hin. Dadurch wird der latente Raum regularisiert und glatt sowie kontinuierlich, was die Generierung ermöglicht.
kl = -0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp())Das ELBO-Ziel
VAEs maximieren das ELBO (Evidence Lower Bound, untere Evidenzschranke), was dem Minimieren von reconstruction + KL entspricht. Die Rekonstruktion sorgt für originalgetreue Ausgaben, während die KL-Divergenz den Raum sinnvoll strukturiert. Das Gleichgewicht zwischen beiden ist entscheidend.
loss = recon_loss + kl
loss.backward()Neue Bilder generieren
Da der latente Raum einer Standardnormalverteilung entspricht, können Sie völlig neue Bilder generieren, indem Sie z aus N(0,1) sampeln und dekodieren – ganz ohne Eingabebild.
with torch.no_grad():
z = torch.randn(16, 64)
new_images = decoder(z) # 16 generated samplesWarum VAEs wichtig sind
VAEs bieten einen prinzipiell begründeten, glatten latenten Raum, in dem Sie interpolieren und sampeln können. Sie bilden die Grundlage vieler generativer Verfahren und vermitteln die zentrale Idee, Verteilungen statt bloßer Punkte zu lernen.
Kurzer Test
Testen Sie Ihr Verständnis von VAEs.
Zusammenfassung: Variational Autoencoders
Sie haben den VAE kennengelernt: Ein Encoder gibt mu und log_var aus, der Reparametrisierungstrick z = mu + eps * exp(0.5 * log_var) hält das Sampeln differenzierbar, und der Verlust lautet ELBO = reconstruction + KL. Durch das Sampeln von z aus N(0,1) und anschließendes Dekodieren lassen sich neue Bilder generieren.
Häufig gestellte Fragen
Ist die Lektion „Variational Autoencoder (VAE)“ kostenlos?
Ja — der vollständige Text von „Variational Autoencoder (VAE)“ 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 „Variational Autoencoder (VAE)“?
ELBO-Loss, Reparametrisierungs-Trick, Erkunden des latenten Raums, Bilderzeugung mit VAE. 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 2 von 4.
Wie lange dauert die Lektion „Variational Autoencoder (VAE)“?
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