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. 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_var

En 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

3

Kilder

1
  • Auto-Encoding Variational Bayes (Kingma & Welling, 2013)