Skip to content

11. VAE, GAN

Definice

Jak fungují generativní modely?

  • Generativní modely se snaží namodelovat distribuci trénovacích dat. Model má pak generovat data ze stejného rozdělení, aby nebylo poznat, že jsou syntetická.

Použiti

K čemu se používají generativní modely?

  • generování obrázků,
  • generovani textu
  • mohou sloužit jako způsob dogenerování dat pro jiné metody.

Otázky

Co je GMM a jak mu může pomoci AE?

Gaussian mixture models (GMM)

  • Distribuce se modeluje pomocí váženého sčítání gaussovských distribucí.
  • Trénujeme váhy a parametry rozdělení (střední hodnota a rozptyl) pomocí expectation maximization (EM).
  • EM je třída algoritmů, kde nejprve nějak nastřelíme parametry modelu a pak je upřesňujeme. Příkladem tohoto algoritmu je k-means.
  • Autoencoder můžeme využít tak, že jím zakódujeme vstupy do latentního prostoru nízké dimenze, zde použijeme GMM k naučení distribuce a dále pomocí naučeného rozdělení generujeme nová data, která decoderem převádíme do původních dimenzí a tím získáváme podobné hodnota jako byly na vstupu. Problém je, že toto se nedá učit end-to-end jako klasické AE.

Znáte nějaké autoregresivní generativní modely a jak fungují? ?

Autoregresivní generativní modely

  • Predikují budoucí chování na základě známých dat z minulosti.
  • Použití pro forecasting časových řad.
  • Předpokladem je, že trénovací data musí obsahovat autokorelaci, tedy nějaké pravidlo určující korelaci signálu a jeho časového zpoždění. Např. v obrázku když máme nějaký přechod pozadí, tak vidíme jak se okolní pixely postupně mění a jsme schopni je predikovat. Takže pro obrázky je vysoká autokorelace pokud mají pozvolné přechody.
  • PixelRNN k predikci pixelů jako časových řad. Může být že v obrázku jdeme postupně od rohu a predikujeme (row LSTM) nebo jdeme proti sobě ze dvou směrů (bidirectional LSTM). Výhodou je, že díky paměti lze hledat i netriviální sekvence. Nevýhoda, že je to poměrně pomalé a nelze paralelizovat, proto se tolik nepoužívají.
    • Každý pixel se generuje postupně a je závislý na všech předchozích pixelech
  • Častější jsou PixelCNN, kde se pomocí konvolučních filtrů vyberou oblasti obrázků, podle kterých se pak dopočítávají pixely. Výhodou je, že lze více paralelizovat. Postupně se generují části obrázku a konvolucí se extrahujou příznaky na základě kterých se dobarvují další a další pixely. Lze použít i pro Super-Resolution, kde nejprve modelujeme obecné tvarové charakteristiky a postupně se doplňují detaily do většího rozlišení.
    • Vezme masku ktera se nachazi okolo generovaneho pixelu a zase bere vsechny predchozi vygenerovane, ted tedy v masce.

Popište GAN.

  • Dvě komponety – Generátor a Diskriminátor – hrají spolu zero-sum hru, kde mají společný loss a jeden se ho snaží minimalizovat a druhý maximalizovat.
  • Generátor z náhodného vektoru v latentním prostoru generuje upsamplingem (dekonvoluce) obrázek např. a diskriminátor se snaží rozeznat skutečné obrázky od těch uměle vygenerovaných. Postupně se takhle navzájem vylepšují ve svých činnostech.
  • Trénují se v praxi zvlášť tím, že pro každý minibatch se nejprve zafixuje G a trénuje D, a pak se zafixuje D a trénuje G.
  • Nestabilní trénování, často problém, že jeden model se moc rychle zlepší a druhý ho nemá šanci dohnat.
  • Dalsi problemy jsou kvalitativni, neumi pocitat, prespectiva atd...
  • Problém s GANy je také v tom, že výstupy generují z náhodného šumu, takže pokud bychom chtěli generovat na základě nějakých konkrétních příznaků, tak nelze jednoduše určit zdrojový šum. Také je problém v tom, že diskriminátor se učí jen rozpoznat skutečné a vygenerované vstupy, ale už neřeší jestli ty vstupy vypadají tak jak mají.

Popište VAE.

  • Jedná se o autoencoder, jehož rozdělení latentního prostoru (embeddingů) je regularizováno tak, aby mělo dobré vlastnosti pro generování nových dat.
  • Generovat nová data s vanilla AE je složité, protože latentní prostor nemusí být úplný, může se stát že náhodně zvolený bod nás pak v decodingu hodí někam mimo rozsah platých hodnot.
  • VAE nedělají encoding vstupu na jeden bod latentního prostoru, ale encodují ho jako distribuci na latentním prostoru, ze které je pak vzorkován bod a ten je dekódován a porovnán se vstupem.
  • VAE loss zakomponuje dva typy chyb: jednak reconstruction error původního vstupu (least squares stejně jako AE) a také jak moc se latentní distribuce liší od jednotkového normálního rozdělení, protože to je takové ideální rozdělení co chceme.