VQ-VAE

forkortelse for Vector Quantized Variational Autoencoder

VQ-VAE er en type variational autoencoder der anvender vektorkvantisering til at lære diskrete latente repræsentationer.

Kort fortalt

VQ-VAE laver en diskret kodebog over latente repræsentationer, så modellen kan generere data i høj kvalitet, fx billeder eller lyd.

Kategori
arkitektur
Niveau
ekspert

Betydninger

1
  1. 1

    En generativ model der ved hjælp af vektorkvantisering lærer en diskret kodebog af latente repræsentationer. Encoderen producerer en kontinuert vektor, som kvantiseres til den nærmeste kodebogsvektor, og decoderen genererer data ud fra denne diskrete kode. Træning bruger en straight-through estimator til at propagere gradienter gennem det ikke-differentierbare kvantiseringstrin.

    • VQ-VAE har vist imponerende resultater inden for billedgenerering ved at lære en diskret kodebog på 512 indgange.van den Oord et al., 2017
    • VQ-VAE bruges som grundlag for DALL-E's dVAE-komponent.DALL-E paper, 2021

Hvornår bruges det

Bruges i generative modeller hvor diskrete repræsentationer er vigtige, fx i DALL-E (som en VQ-VAE komponent) og i lydgenerering som WaveNet. Vektorkvantiseringslaget tvinger encoderen til at producere en embedding, der matches til nærmeste kodebogsvektor.

Formel

Loss = ||x - decoder(z_q)||^2 + ||sg[z_e] - e||^2 + β||z_e - sg[e]||^2

Kodeeksempel

class VectorQuantizer(nn.Module):
    def __init__(self, num_embeddings, embedding_dim):
        super().__init__()
        self.embedding = nn.Embedding(num_embeddings, embedding_dim)
        self.embedding.weight.data.uniform_(-1/num_embeddings, 1/num_embeddings)

    def forward(self, z):
        z_flat = z.permute(0,2,3,1).reshape(-1, z.size(1))
        distances = torch.cdist(z_flat, self.embedding.weight)
        indices = distances.argmin(1)
        z_q = self.embedding(indices).reshape(z.shape)
        return z_q + (z - z_q).detach()

Simpel PyTorch-implementering af vektorkvantiseringslaget i VQ-VAE.

Oprindelse

VQ-VAE står for Vector Quantized Variational Autoencoder, en kombination af VAE (Variational Autoencoder) og vektorkvantisering fra signalbehandling.

Afledte ord

3

Kilder

1
  • Neural Discrete Representation Learning