Conditional VAE
forkortelse for Conditional Variational Autoencoder
En generativ model, der udvider VAE med betingelsesvariable for at styre outputtet.
Kort fortalt
En Conditional VAE er en variant af Variational Autoencoder, hvor du kan give modellen ekstra information (fx en etiket), så den genererer data med bestemte egenskaber.
- Kategori
- model
- Niveau
- øvet
- Udtale
- kənˈdɪʃənl viː eɪ iː
Betydninger
1- 1
En generativ dybdelæringsarkitektur, der ved at tilføje betingelsesvariable til encoderen og/eller dekoderen muliggør målrettet generering af data, der opfylder bestemte betingelser.
- Conditional VAE kan generere håndskrevne cifre fra MNIST-datasættet betinget af cifferets etiket.
- I en Conditional VAE optimeres den evidensnedre grænse (ELBO) med hensyn til både latente variable og betingelser. — Sohn et al., 2015
Hvornår bruges det
Conditional VAE bruges til betinget generering, fx at generere billeder af bestemte klasser, syntetisere tale med en given stemme eller forudsige manglende data ud fra kontekst.
Formel
L(θ, φ; x, c) = -KL(q_φ(z|x,c) || p_θ(z)) + E_{q_φ(z|x,c)}[log p_θ(x|z,c)]Kodeeksempel
import torch
import torch.nn as nn
class CVAE(nn.Module):
def __init__(self, input_dim=784, cond_dim=10, latent_dim=20):
super().__init__()
self.encoder = nn.Sequential(
nn.Linear(input_dim+cond_dim, 400),
nn.ReLU(),
nn.Linear(400, latent_dim*2) # mean and logvar
)
self.decoder = nn.Sequential(
nn.Linear(latent_dim+cond_dim, 400),
nn.ReLU(),
nn.Linear(400, input_dim),
nn.Sigmoid()
)
def reparameterize(self, mu, logvar):
std = torch.exp(0.5*logvar)
eps = torch.randn_like(std)
return mu + eps*std
def forward(self, x, c):
# concat conditioning to input
xc = torch.cat([x, c], dim=1)
h = self.encoder(xc)
mu, logvar = h.chunk(2, dim=1)
z = self.reparameterize(mu, logvar)
zc = torch.cat([z, c], dim=1)
recon = self.decoder(zc)
return recon, mu, logvarSimpel PyTorch-implementering af en Conditional VAE med betingelse c, der sættes sammen med input i encoderen og med latent variabel i dekoderen.
Oprindelse
Conditional VAE stammer fra Variational Autoencoder (2013) introduceret af Kingma & Welling og udvidet med betingelser af Sohn et al. i 2015.
Afledte ord
1Kilder
2- Auto-Encoding Variational Bayes
- Learning Structured Output Representation using Deep Conditional Generative Models