Variational Autoencoder

Generativ AI og agenter2026Generative AI

En variasjonell autoenkoder i PyTorch med sannsynlighetsbasert latent rom, reparametrisering og et ELBO-basert treningsmål med justerbar β-vekt.

Utfordringen

En vanlig autoenkoder lærer å komprimere og gjenskape data, men gir ikke et latent rom med en veldefinert sannsynlighetsfordeling. Målet var å implementere en variasjonell autoenkoder der den latente representasjonen er en fordeling, og å gjøre treningsmålet (rekonstruksjon pluss regularisering) fleksibelt og testbart.

Løsningen

Encoderen gir gjennomsnitt og log-varians for en gaussisk latent fordeling, og latente vektorer trekkes med reparametriseringstrikset, slik at modellen kan trenes med gradienter. Treningsmålet kombinerer rekonstruksjonstap og KL-divergens mot en standard normalfordeling, med en justerbar β-vekt.

Hvordan det ble bygget

Jeg implementerte modellen i PyTorch med en MLP-encoder og -decoder med egne hoder for gjennomsnitt og log-varians, gaussisk reparametrisering, KL-divergens fra den diagonale gaussiske posterioren til en standard normalfordeling og valgbart rekonstruksjonstap (BCE, MSE eller L1), kombinert i et β-vektet ELBO. Latent dimensjon, skjult dimensjon og β kan konfigureres; standardoppsettet er laget for 28×28-bilder med 16 latente dimensjoner. Implementasjonen ble skrevet mot tester som sjekker utdataformer, at tapet er endelig og at β-vektingen virker.

Resultat

Dette prosjektet dokumenterer en implementasjon, ikke en målt modellprestasjon. Arkitekturen, tapsfunksjonene og det β-vektede ELBO-et er implementert som beskrevet, men jeg har ikke bevart kvantitative resultater for rekonstruksjonskvalitet, treningskurver eller genererte eksempler, og siden oppgir derfor ingen slike tall.

Kontekst

Siden gjør ingen påstander om hvor godt modellen rekonstruerer eller genererer bilder. Prosjektet viser implementasjon av latent-variabel-modellering (reparametrisering, KL-regularisering og sammensatt tap), ikke en ferdig trent modell.

Teknologi og metoder

PythonPyTorchVariasjonell autoenkoderReparametriseringKL-divergensELBOβ-VAEBCE/MSE/L1-tap