Trening: dla próbki x encoder zwraca parametry rozkładu q_φ(z|x) = 𝒩(μ_φ(x), σ²_φ(x)·I). Próbkujemy z = μ + σ·ε, gdzie ε ~ 𝒩(0,I) (reparametryzacja umożliwia gradient). Decoder daje p_θ(x|z) (Gauss albo Bernoulli). Funkcja kosztu: ℒ_ELBO = − ℒ_rekon (np. MSE lub BCE) − β·KL(q_φ(z|x) ∥ p(z)), gdzie β=1 to klasyczny VAE, β-VAE używa innych wag. Generacja: próbkujemy z ~ p(z) = 𝒩(0,I), przepuszczamy przez decoder. Warianty: β-VAE (kontrola disentanglement), VQ-VAE (dyskretne kody przez vector quantization), KL-VAE (kontynuacyjne, używane w SD), conditional VAE (warunkowanie), hierarchical VAE (NVAE, VDVAE). W pipeline'ach LDM trening VAE jest wzbogacony o LPIPS i adversarial loss dla lepszej rekonstrukcji percepcyjnej.
Klasyczne autoenkodery uczą się dowolnej (deterministycznej) przestrzeni latentnej, która nie nadaje się do generacji nowych próbek. VAE rozwiązuje ten problem, narzucając probabilistyczną strukturę i regularyzację KL — przestrzeń latentna staje się gładka i próbkowalna, co umożliwia generację nowych obrazów/sekwencji oraz interpretowalne interpolacje.
Sieć neuronowa wyznaczająca parametry rozkładu posteriornego (zwykle μ i log σ² Gaussa). Dla obrazów: CNN. Dla sekwencji: RNN/Transformer.
Sieć przekształcająca z w rekonstrukcję / próbkę x̂. Decoder definiuje rozkład warunkowy obserwacji.
z = μ + σ·ε, ε ~ 𝒩(0,I). Pozwala propagować gradient przez stochastyczny węzeł, kluczowe dla SGD na ELBO.
Oficjalna
KL(q_φ(z|x) ∥ p(z)) — analitycznie liczone dla Gaussa. Reguliryzacja zapobiegająca degeneracji do zwykłego autoenkodera.
Klasycznie 𝒩(0,I). Hierarchical VAE używa wielopoziomowych priorów; VQ-VAE używa kategorycznego priora uczonego osobno (PixelCNN, Transformer).
Posterior q_φ(z|x) zapada się do priora p(z), decoder ignoruje z, model traci zdolność reprezentacji.
Loss MSE/BCE prowadzi do uśredniania → rozmyte obrazy.
Większość kodów w słowniku przestaje być używana — efektywny rozmiar słownika spada drastycznie.
Próbkowanie z p(z) generuje próbki z obszarów, których agregowany posterior unika → niska jakość.
Kingma & Welling formalizują VAE z reparametryzacją; równolegle Rezende, Mohamed & Wierstra publikują „Stochastic Backpropagation".
Higgins i in. wprowadzają β-VAE, kontrolując disentanglement reprezentacji przez wagę KL.
van den Oord i in. wprowadzają vector quantization w przestrzeni latentnej; fundament DALL·E 1, MUSE, Parti.
Razavi i in. uzyskują wysokorozdzielcze próbki przez hierarchię kodów.
Hafner i in. używają wariacyjnej dynamiki latentnej do model-based RL z pikseli.
Vahdat & Kautz oraz Child pokazują, że bardzo głębokie hierarchiczne VAE konkurują z dyfuzją w jakości.
Rombach i in. używają KL-VAE z LPIPS + adversarial loss jako pierwszego stopnia LDM.
Stability AI rozszerza VAE z 4 na 16 kanałów dla znacząco lepszej rekonstrukcji w SD3.
Rozmiar przestrzeni latentnej. Za mała → utrata informacji; za duża → trudność próbkowania.
Współczynnik wagi KL w β-VAE. β>1 → silniejszy disentanglement, β<1 → lepsza rekonstrukcja.
Stopniowe podnoszenie wagi KL przeciw posterior collapse, szczególnie w sekwencyjnych VAE.
Próg poniżej którego KL nie jest karany, zapobiega zapadaniu się posterioru.
Gauss diagonalny / Gauss z pełną kowariancją / VQ (kategoryczny) / hierarchiczny.
MSE / BCE / LPIPS + adversarial (jak w SD VAE) — silnie wpływa na jakość percepcyjną.
Cały encoder i decoder są aktywne w każdym kroku.
Encoder, decoder i obliczenia ELBO są w pełni równoległe w batchu. Brak rekurencji w czasie (poza wariantami sekwencyjnymi jak RSSM).
Encoder i decoder to w większości CNN/Transformer — idealnie pasują do tensor cores. KL i ELBO to tania arytmetyka tensorowa.
Treningi VAE w JAX/TPU są dobrze wspierane (Diffusers, Flax).