Variational Autoencoder

forkortelse for VAE

En generativ model der kombinerer en autoencoder med variational inference for at lære en latent repræsentation af data.

Kort fortalt

En Variational Autoencoder (VAE) lærer at generere nye data (f.eks. billeder) ved at komprimere data til en latent fordeling og derefter dekomprimere den.

Kategori
model
Niveau
øvet

Betydninger

1
  1. 1

    En type generativ model der består af en encoder, der estimerer en variabel fordeling over latente variable, og en decoder, der genererer data fra latente prøver.

    • VAE'en blev trænet på MNIST-datasættet for at generere håndskrevne cifre.
    • Ved at interpolere i det latente rum kan VAE'en skabe glatte overgange mellem forskellige billeder.

Hvornår bruges det

VAE'er bruges til generering af billeder, tekst og lyd, samt til anomalidetektion og repræsentationslæring. De er særligt nyttige når man ønsker en kontinuerlig latent rummets struktur.

Formel

ELBO = E_{q_φ(z|x)}[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, 400),
            nn.ReLU(),
        )
        self.mu = nn.Linear(400, latent_dim)
        self.logvar = nn.Linear(400, latent_dim)
        self.decoder = nn.Sequential(
            nn.Linear(latent_dim, 400),
            nn.ReLU(),
            nn.Linear(400, input_dim),
            nn.Sigmoid()
        )
    def encode(self, x):
        h = self.encoder(x)
        return self.mu(h), self.logvar(h)
    def reparameterize(self, mu, logvar):
        std = torch.exp(0.5 * logvar)
        eps = torch.randn_like(std)
        return mu + eps * std
    def forward(self, x):
        mu, logvar = self.encode(x.view(-1, 784))
        z = self.reparameterize(mu, logvar)
        return self.decoder(z), mu, logvar

En simpel implementering af en VAE i PyTorch med lineære lag, der illustrerer encoder, decoder og reparameterization trick.

Oprindelse

Udtrykket kombinerer 'variational' (fra variational inference) og 'autoencoder' (en neural netværkstype der komprimerer og dekomprimerer data).

Afledte ord

3

Kilder

2