VAE
forkortelse for Variational Autoencoder
En generativ model der kombinerer en encoder-decoder-struktur med variationel inferens for at lære en latent repræsentation af data.
Kort fortalt
En type neuralt netværk der kan generere nye data, for eksempel billeder, ved at lære en komprimeret (latent) repræsentation af træningsdata.
- Kategori
- arkitektur
- Niveau
- øvet
- Udtale
- viː eɪ iː
Betydninger
1- 1
En neural netværksarkitektur bestående af en encoder der kortlægger input til en fordeling over latente variable, og en decoder der rekonstruerer input fra samplede latente variable, trænet med variationel inferens til at maksimere en evidensnedre grænse (ELBO).
- VAE'en blev trænet på MNIST-datasættet og kunne generere nye håndskrevne cifre ved at sample fra den latente rum. — Kingma & Welling, 2013
- En conditional VAE (CVAE) tilføjer en betingelsesvariabel for at styre generationen.
Hvornår bruges det
VAE bruges til at generere nye dataeksempler, til usædvanlighedsdetektion, og til at lære meningsfulde latente repræsentationer. Det anvendes ofte inden for billedgenerering, molekylær design og anbefalingssystemer.
Formel
Loss = -E[log p(x|z)] + KL(q(z|x) || p(z))Kodeeksempel
import torch
import torch.nn as nn
import torch.nn.functional as F
class VAE(nn.Module):
def __init__(self, input_dim, latent_dim):
super().__init__()
self.encoder = nn.Sequential(
nn.Linear(input_dim, 256),
nn.ReLU(),
nn.Linear(256, latent_dim * 2) # mean and log_var
)
self.decoder = nn.Sequential(
nn.Linear(latent_dim, 256),
nn.ReLU(),
nn.Linear(256, input_dim),
nn.Sigmoid()
)
def reparameterize(self, mu, log_var):
std = torch.exp(0.5 * log_var)
eps = torch.randn_like(std)
return mu + eps * std
def forward(self, x):
h = self.encoder(x)
mu, log_var = h.chunk(2, dim=1)
z = self.reparameterize(mu, log_var)
recon = self.decoder(z)
return recon, mu, log_varEn simpel PyTorch-implementering af en VAE med lineære lag, der modtager inputdimension og latent dimension, og returnerer rekonstruktion samt latent middelværdi og log-varians.
Oprindelse
'Variational Autoencoder' – 'variationel' henviser til variationel inferens, og 'autoencoder' henviser til arkitekturen der rekonstruerer input.
Afledte ord
3Kilder
1- Auto-Encoding Variational Bayes (Kingma & Welling, 2013)