Jemný úvod do generativních adverzních sítí (GAN)

Tweet Sdílet Sdílet

Poslední aktualizace 19. července 2019

Generativní adverzní sítě, zkráceně GAN, představují přístup ke generativnímu modelování pomocí metod hlubokého učení, jako jsou konvoluční neuronové sítě.

Generativní modelování je neřízená úloha učení ve strojovém učení, která zahrnuje automatické objevování a učení pravidelností nebo vzorů ve vstupních datech takovým způsobem, že model lze použít ke generování nebo výstupu nových příkladů, které by pravděpodobně mohly být získány z původní sady dat.

GAN jsou chytrým způsobem trénování generativního modelu tím, že problém zarámují jako problém učení pod dohledem se dvěma dílčími modely: generátorovým modelem, který trénujeme za účelem generování nových příkladů, a diskriminačním modelem, který se snaží klasifikovat příklady jako skutečné (z domény) nebo falešné (generované). Tyto dva modely jsou společně trénovány ve hře s nulovým součtem, adversarial, dokud diskriminační model není oklamán přibližně v polovině případů, což znamená, že generátorový model generuje věrohodné příklady.

GAN jsou vzrušujícím a rychle se měnícím oborem, který plní sliby generativních modelů, pokud jde o jejich schopnost generovat realistické příklady v celé řadě problémových domén, zejména v úlohách překladu obrazu na obraz, jako je překlad fotografií léta na zimu nebo dne na noc, a při generování fotorealistických fotografií objektů, scén a lidí, u nichž ani člověk nepozná, že jsou falešné.

V tomto příspěvku se dozvíte jemný úvod do generativních adverzních sítí neboli GAN.

Po přečtení tohoto příspěvku budete vědět:

  • Kontext GAN, včetně učení pod dohledem vs. bez dohledu a diskriminačního vs. generativního modelování.
  • GAN jsou architekturou pro automatické trénování generativního modelu tím, že k problému bez dohledu přistupují jako k problému s dohledem a používají jak generativní, tak diskriminační model.
  • GAN poskytují cestu k sofistikovanému rozšiřování dat specifických pro danou doménu a řešení problémů, které vyžadují generativní řešení, jako je například překlad obrazu na obraz.

Začněte svůj projekt s mou novou knihou Generative Adversarial Networks with Python, která obsahuje návody krok za krokem a zdrojové soubory jazyka Python pro všechny příklady.

Začněme.

Šetrný úvod do obecných adverzních sítí (GAN)

Šetrný úvod do generativních adverzních sítí (GAN)
Foto: Barney Moss, některá práva vyhrazena.

Přehled

Tento výukový kurz je rozdělen do tří částí; jsou to:

  1. Co jsou generativní modely?
  2. Co jsou generativní adversární sítě?
  3. Proč generativní adverzní sítě?

Co jsou generativní modely?

V této části si projdeme myšlenku generativních modelů, projdeme paradigmata učení pod dohledem vs. bez dohledu a diskriminační vs. generativní modelování.

Pod dohledem vs. bez dohledu. Učení bez dohledu

Typický problém strojového učení zahrnuje použití modelu k vytvoření předpovědi, např. prediktivní modelování.

To vyžaduje trénovací datovou sadu, která se používá k trénování modelu a skládá se z více příkladů, tzv. vzorků, z nichž každý má vstupní proměnné (X) a výstupní značky tříd (y). Model se trénuje tak, že se mu ukazují příklady vstupů, nechává se předpovídat výstupy a model se opravuje, aby se výstupy více podobaly očekávaným výstupům.

Při prediktivním nebo kontrolovaném přístupu učení je cílem naučit se mapování ze vstupů x na výstupy y, přičemž je dána označená množina párů vstupů a výstupů …

– Strana 2, Strojové učení: A Probabilistic Perspective, 2012.

Tato oprava modelu se obecně označuje jako řízená forma učení neboli učení pod dohledem.

Příklad učení s dohledem

Příklad učení s dohledem

Příkladem problémů učení s dohledem je klasifikace a regrese a příkladem algoritmů učení s dohledem je logistická regrese a náhodný les.

Existuje další paradigma učení, kdy jsou modelu zadány pouze vstupní proměnné (X) a problém nemá žádné výstupní proměnné (y).

Model je konstruován extrakcí nebo shrnutím vzorů ve vstupních datech. Nedochází k žádné korekci modelu, protože model nic nepředpovídá.

Druhým hlavním typem strojového učení je popisný přístup neboli učení bez dohledu. Zde máme k dispozici pouze vstupy a cílem je najít v datech „zajímavé vzory“. Jedná se o mnohem hůře definovaný problém, protože nám není řečeno, jaké druhy vzorů máme hledat, a neexistuje žádná zřejmá metrika chyby, kterou bychom mohli použít (na rozdíl od učení pod dohledem, kde můžeme porovnat naši předpověď hodnoty y pro dané x s pozorovanou hodnotou).

– Strana 2, Strojové učení: A Probabilistic Perspective, 2012.

Tato absence korekce se obecně označuje jako neřízená forma učení neboli učení bez dohledu.

Příklad učení bez dohledu

Příklad učení bez dohledu

Příkladem problémů učení bez dohledu je shlukování a generativní modelování a příkladem algoritmů učení bez dohledu jsou K-means a generativní adverzní sítě.

Chcete vyvíjet GAN od nuly?

Zúčastněte se nyní mého bezplatného 7denního e-mailového rychlokurzu (s ukázkovým kódem).

Klikněte pro registraci a získejte také bezplatnou verzi kurzu ve formátu PDF Ebook.

Stáhněte si svůj minikurz ZDARMA

Diskriminační vs. Generativní modelování

Při učení pod dohledem nás může zajímat vývoj modelu pro předpovídání označení třídy vzhledem k příkladu vstupních proměnných.

Tato úloha prediktivního modelování se nazývá klasifikace.

Klasifikace se také tradičně označuje jako diskriminační modelování.

… použijeme trénovací data k nalezení diskriminační funkce f(x), která mapuje každé x přímo na značku třídy, čímž spojíme fázi inference a rozhodování do jediného problému učení.

— Page 44, Pattern Recognition and Machine Learning, 2006.

This is because a model must discriminate examples of input variables across classes; it must choose or make a decision as to what class a given example belongs.

Example of Discriminative Modeling

Example of Discriminative Modeling

Alternately, unsupervised models that summarize the distribution of input variables may be able to be used to create or generate new examples in the input distribution.

As such, these types of models are referred to as generative models.

Example of Generative Modeling

Example of Generative Modeling

For example, a single variable may have a known data distribution, such as a Gaussian distribution, or bell shape. Generativní model může být schopen dostatečně shrnout toto rozdělení dat a poté může být použit ke generování nových proměnných, které věrohodně zapadají do rozdělení vstupní proměnné.

Přístupy, které explicitně nebo implicitně modelují rozdělení vstupů i výstupů, se nazývají generativní modely, protože vzorkováním z nich lze generovat syntetické datové body ve vstupním prostoru.

– Strana 43, Rozpoznávání vzorů a strojové učení, 2006.

Ve skutečnosti může být skutečně dobrý generativní model schopen generovat nové příklady, které jsou nejen věrohodné, ale i nerozeznatelné od skutečných příkladů z problémové oblasti.

Příklady generativních modelů

Naivní Bayes je příkladem generativního modelu, který se častěji používá jako diskriminační model.

Naivní Bayes pracuje například tak, že shrnuje rozdělení pravděpodobnosti každé vstupní proměnné a výstupní třídy. Při předpovědi se pro každou proměnnou vypočítá pravděpodobnost pro každý možný výsledek, nezávislé pravděpodobnosti se zkombinují a předpoví se nejpravděpodobnější výsledek. Při opačném použití lze pravděpodobnostní rozdělení pro každou proměnnou vzorkovat a generovat nové pravděpodobné (nezávislé) hodnoty rysů.

Dalšími příklady generativních modelů jsou Latent Dirichlet Allocation neboli LDA a Gaussian Mixture Model neboli GMM.

Jako generativní modely lze použít metody hlubokého učení. Mezi dva populární příklady patří Restricted Boltzmann Machine neboli RBM a Deep Belief Network neboli DBN.

Dva moderní příklady algoritmů generativního modelování založené na hlubokém učení zahrnují Variational Autoencoder neboli VAE a Generative Adversarial Network neboli GAN.

Co jsou generativní adversariální sítě?

Generativní adversariální sítě neboli GAN jsou generativním modelem založeným na hlubokém učení.

Obecněji řečeno, GAN jsou modelovou architekturou pro trénování generativního modelu a nejčastěji se v této architektuře používají modely hlubokého učení.

Architektura GAN byla poprvé popsána v článku Iana Goodfellowa a kol. z roku 2014 s názvem „Generative Adversarial Networks.“

Standardizovaný přístup nazvaný Deep Convolutional Generative Adversarial Networks neboli DCGAN, který vedl ke stabilnějším modelům, později formalizovali Alec Radford a kol. v roce 2015 v článku nazvaném „Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks“.

Většina dnešních GAN je alespoň volně založena na architektuře DCGAN…

– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

Architektura modelu GAN zahrnuje dva dílčí modely: generátorový model pro generování nových příkladů a diskriminační model pro klasifikaci, zda jsou generované příklady skutečné, z domény, nebo falešné, generované generátorovým modelem.

  • Generátor. Model, který se používá ke generování nových věrohodných příkladů z problémové domény.
  • Diskriminátor. Model, který se používá ke klasifikaci příkladů jako skutečných (z domény) nebo falešných (generovaných).

Generativní adversariální sítě jsou založeny na scénáři teorie her, ve kterém musí generátorová síť soutěžit s protivníkem. Generátorová síť přímo vytváří vzorky. Její protivník, diskriminační síť, se snaží rozlišit mezi vzorky získanými z trénovacích dat a vzorky získanými z generátoru.

– Strana 699, Deep Learning, 2016.

Model generátoru

Model generátoru bere jako vstup náhodný vektor pevné délky a generuje vzorek v doméně.

Vektor je náhodně vybrán z Gaussova rozdělení a vektor je použit k nasazení generativního procesu. Po tréninku budou body v tomto vícerozměrném vektorovém prostoru odpovídat bodům v problémové doméně a vytvoří komprimovanou reprezentaci rozdělení dat.

Tento vektorový prostor se označuje jako latentní prostor nebo vektorový prostor složený z latentních proměnných. Latentní proměnné neboli skryté proměnné jsou proměnné, které jsou pro danou doménu důležité, ale nejsou přímo pozorovatelné.

Skrytá proměnná je náhodná proměnná, kterou nemůžeme přímo pozorovat.

– Strana 67, Deep Learning, 2016.

Často označujeme latentní proměnné nebo latentní prostor jako projekci nebo kompresi rozdělení dat. To znamená, že latentní prostor poskytuje kompresi nebo vysokoúrovňové koncepty pozorovaných surových dat, jako je například distribuce vstupních dat. V případě GAN model generátoru aplikuje význam na body ve zvoleném latentním prostoru tak, že nové body vytažené z latentního prostoru mohou být poskytnuty modelu generátoru jako vstup a použity k vytvoření nových a odlišných výstupních příkladů.

Model strojového učení se může naučit statistický latentní prostor obrázků, hudby a příběhů a poté může z tohoto prostoru odebírat vzorky a vytvářet nová umělecká díla s vlastnostmi podobnými těm, které model viděl ve svých trénovacích datech.

– Strana 270, Hluboké učení s Pythonem, 2017.

Po tréninku se generovaný model uchovává a používá se k vytváření nových vzorků.

Příklad modelu generátoru GAN

Příklad modelu generátoru GAN

Diskriminační model

Diskriminační model bere jako vstup příklad z domény (skutečný nebo generovaný) a předpovídá binární označení třídy skutečný nebo falešný (generovaný).

Reálný příklad pochází z trénovací sady dat. Generované příklady jsou výstupem modelu generátoru.

Diskriminátor je běžný (a dobře pochopený) klasifikační model.

Po procesu trénování je model diskriminátoru vyřazen, protože nás zajímá generátor.

Někdy lze generátor znovu použít, protože se naučil efektivně získávat příznaky z příkladů v problémové doméně. Některé nebo všechny vrstvy extrakce příznaků lze použít v aplikacích přenosového učení s použitím stejných nebo podobných vstupních dat.

Navrhujeme, že jedním ze způsobů, jak vytvořit dobré reprezentace obrazu, je trénovat generativní adverzní sítě (GAN) a později znovu použít části generátoru a diskriminačních sítí jako extraktory příznaků pro úlohy s dohledem

– Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.

Příklad diskriminačního modelu GAN

Příklad diskriminačního modelu GAN

GAN jako hra dvou hráčů

Generativní modelování je problém učení bez dohledu, jak jsme uvedli v předchozí části, ačkoli chytrou vlastností architektury GAN je, že trénování generativního modelu je zarámováno jako problém učení pod dohledem.

Dva modely, generátor a diskriminátor, se trénují společně. Generátor vygeneruje dávku vzorků a ty jsou spolu se skutečnými příklady z domény poskytnuty diskriminátoru a klasifikovány jako skutečné nebo falešné.

Diskriminátor je poté aktualizován, aby v dalším kole lépe rozlišoval skutečné a falešné vzorky, a co je důležité, generátor je aktualizován na základě toho, jak dobře, nebo špatně, vygenerované vzorky oklamaly diskriminátor.

Generátora si můžeme představit jako padělatele, který se snaží vyrobit falešné peníze, a diskriminátora jako policistu, který se snaží povolit legální peníze a dopadnout padělané. Aby v této hře uspěl, musí se padělatel naučit vytvářet peníze, které jsou k nerozeznání od pravých, a síť generátoru se musí naučit vytvářet vzorky, které jsou čerpány ze stejného rozdělení jako trénovací data.

– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

Tímto způsobem spolu oba modely soutěží, jsou proti sobě ve smyslu teorie her a hrají hru s nulovým součtem.

Protože rámec GAN lze přirozeně analyzovat pomocí nástrojů teorie her, nazýváme GAN „adverzní“.

– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

V tomto případě nulový součet znamená, že když diskriminátor úspěšně identifikuje skutečné a falešné vzorky, je odměněn nebo není třeba měnit parametry modelu, zatímco generátor je penalizován velkými aktualizacemi parametrů modelu.

Alternativně, když generátor oklame diskriminátor, je odměněn nebo není nutná žádná změna parametrů modelu, ale diskriminátor je penalizován a jeho parametry modelu jsou aktualizovány.

V mezní situaci generátor pokaždé generuje dokonalé repliky ze vstupní oblasti a diskriminátor nedokáže rozlišit a předpovídá „nejistě“ (např. 50 % pro skutečné a falešné) v každém případě. Toto je pouze příklad idealizovaného případu; nemusíme se dostat do tohoto bodu, abychom dospěli k užitečnému modelu generátoru.

Příklad architektury generativního modelu adverzní sítě

Příklad architektury generativního modelu adverzní sítě

řídí diskriminátor, aby se pokusil naučit správně klasifikovat vzorky jako pravé nebo falešné. Současně se generátor pokouší oklamat klasifikátor, aby uvěřil, že jeho vzorky jsou pravé. Při konvergenci jsou vzorky generátoru nerozeznatelné od skutečných dat a diskriminátor má všude výstup 1/2. Diskriminátor pak může být vyřazen.

– Strana 700, Deep Learning, 2016.

GAN a konvoluční neuronové sítě

GAN obvykle pracují s obrazovými daty a jako generátor a diskriminační model používají konvoluční neuronové sítě neboli CNN.

Důvodem může být jednak to, že první popis této techniky se týkal oblasti počítačového vidění a využíval CNN a obrazová data, jednak pozoruhodný pokrok, který byl v posledních letech zaznamenán při obecnějším využití CNN k dosažení nejmodernějších výsledků v sadě úloh počítačového vidění, jako je detekce objektů a rozpoznávání obličejů.

Modelování obrazových dat znamená, že latentní prostor, vstup pro generátor, poskytuje komprimovanou reprezentaci sady obrázků nebo fotografií použitých k trénování modelu. Znamená to také, že generátor generuje nové obrázky nebo fotografie a poskytuje výstup, který mohou vývojáři nebo uživatelé modelu snadno zobrazit a vyhodnotit.

Možná právě tato skutečnost, především možnost vizuálně posoudit kvalitu vygenerovaného výstupu, vedla jak k zaměření aplikací počítačového vidění s CNN, tak k obrovskému skoku ve schopnostech GAN ve srovnání s jinými generativními modely, ať už založenými na hlubokém učení nebo jinými.

Podmíněné GAN

Důležité rozšíření GAN spočívá v jejich použití pro podmíněné generování výstupu.

Generativní model lze natrénovat na generování nových příkladů ze vstupní oblasti, přičemž vstup, náhodný vektor z latentního prostoru, je opatřen (podmíněn) nějakým dalším vstupem.

Dalším vstupem může být hodnota třídy, například muž nebo žena při generování fotografií lidí, nebo číslice v případě generování obrázků ručně psaných číslic.

Generační adverzní sítě lze rozšířit na podmíněný model, pokud jsou generátor i diskriminátor podmíněny nějakou dodatečnou informací y. y může být jakákoli pomocná informace, například značky tříd nebo data z jiných modalit. Podmínění můžeme provést tak, že do diskriminátoru i generátoru vložíme y jako další vstupní vrstvu.

– Podmíněné generativní adverzní sítě, 2014.

Diskriminátor je také podmíněn, což znamená, že je mu poskytnut jak vstupní obrázek, který je buď skutečný, nebo falešný, tak další vstup. V případě podmíněného vstupu typu klasifikační značky by pak diskriminátor očekával, že vstup bude této třídy, což by zase naučilo generátor generovat příklady této třídy, aby diskriminátor oklamal.

Takto lze podmíněnou síť GAN použít ke generování příkladů z domény daného typu.

Ještě o krok dále lze modely GAN podmínit příkladem z domény, například obrázkem. To umožňuje aplikace GAN, jako je překlad textu na obrázek nebo překlad obrázku na obrázek. To umožňuje některé z působivějších aplikací GAN, jako je převod stylu, kolorování fotografií, transformace fotografií z léta na zimu nebo ze dne na noc atd.

V případě podmíněných GAN pro překlad z obrazu na obraz, jako je transformace dne na noc, jsou diskriminátoru jako vstup poskytnuty příklady skutečných a vygenerovaných nočních fotografií a také (podmíněné) skutečné denní fotografie. Generátor má jako vstup náhodný vektor z latentního prostoru a také (podmíněně) skutečné denní fotografie.

Příklad architektury modelu podmíněné generativní adverzní sítě

Příklad architektury modelu podmíněné generativní adverzní sítě

Proč generativní adverzní sítě?

Jedním z mnoha významných pokroků v používání metod hlubokého učení v oblastech, jako je počítačové vidění, je technika zvaná rozšiřování dat.

Rozšiřování dat vede k lepšímu výkonu modelů, neboť jednak zvyšuje dovednosti modelu, jednak poskytuje regularizační efekt a snižuje chybu generalizace. Funguje tak, že vytváří nové, umělé, ale věrohodné příklady ze vstupní problémové oblasti, na které je model trénován.

Tyto techniky jsou v případě obrazových dat primitivní a zahrnují ořezávání, převracení, zvětšování a další jednoduché transformace existujících obrázků v tréninkovém souboru dat.

Úspěšné generativní modelování poskytuje alternativní a potenciálně doménově specifičtější přístup k augmentaci dat. Ve skutečnosti je rozšiřování dat zjednodušenou verzí generativního modelování, i když se takto popisuje jen zřídka.

… rozšíření vzorku o latentní (nepozorovaná) data. Tomu se říká rozšiřování dat. V jiných problémech jsou latentní data skutečná data, která měla být pozorována, ale chybí.

– Strana 276, The Elements of Statistical Learning, 2016.

V složitých oblastech nebo oblastech s omezeným množstvím dat poskytuje generativní modelování cestu k většímu počtu tréninků pro modelování. GAN zaznamenaly v tomto případě použití velký úspěch v doménách, jako je hluboké posilovací učení.

Existuje mnoho výzkumných důvodů, proč jsou GAN zajímavé, důležité a vyžadují další studium. Ian Goodfellow řadu z nich nastínil ve své přednášce na konferenci v roce 2016 a související technické zprávě s názvem „NIPS 2016 Tutorial:

Mezi těmito důvody vyzdvihuje úspěšnou schopnost sítí GAN modelovat vysokorozměrná data, zvládat chybějící data a schopnost sítí GAN poskytovat multimodální výstupy nebo více pravděpodobných odpovědí.

Možná nejpřesvědčivější aplikace sítí GAN spočívá v podmíněných sítích GAN pro úlohy, které vyžadují generování nových příkladů. Goodfellow zde uvádí tři hlavní příklady:

  • Superrozlišení obrazu. Schopnost generovat verze vstupních obrázků s vysokým rozlišením.
  • Tvorba umění. Schopnost skvěle vytvářet nové a umělecké obrazy, skici, malby a další.
  • Překlad obrazu do obrazu. Schopnost překládat fotografie napříč oblastmi, například den na noc, léto na zimu a další.

Možná nejpádnějším důvodem, proč jsou sítě GAN široce studovány, vyvíjeny a používány, je jejich úspěšnost. GAN dokázaly generovat tak realistické fotografie, že lidé nejsou schopni poznat, že se jedná o objekty, scény a osoby, které v reálném životě neexistují.

Úžasné není dostatečné adjektivum pro jejich schopnosti a úspěch.

Příklad vývoje schopností GAN v letech 2014 až 2017

Příklad vývoje schopností GAN v letech 2014 až 2017. Převzato z publikace The Malicious Use of Artificial Intelligence: Forecasting, Prevention, and Mitigation, 2018.

Další četba

Tato část obsahuje další zdroje k tématu, pokud chcete jít hlouběji.

Posts

  • Best Resources for Getting Started With Generative Adversarial Networks (GANs)
  • 18 Impressive Applications of Generative Adversarial Networks (GANs)

Books

  • Chapter 20. Deep Generative Models, Deep Learning, 2016.
  • Chapter 8. Generative Deep Learning, Deep Learning with Python, 2017.
  • Machine Learning: A Probabilistic Perspective, 2012.
  • Pattern Recognition and Machine Learning, 2006.
  • The Elements of Statistical Learning, 2016.

Papers

  • Generative Adversarial Networks, 2014.
  • Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.
  • NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.
  • Conditional Generative Adversarial Nets, 2014.
  • The Malicious Use of Artificial Intelligence: Forecasting, Prevention, and Mitigation, 2018.

Articles

  • Generative model, Wikipedia.
  • Latent Variable, Wikipedia.
  • Generative Adversarial Network, Wikipedia.

Shrnutí

V tomto příspěvku jste objevili jemný úvod do generativních adverzních sítí neboli GAN.

Konkrétně jste se dozvěděli:

  • Kontext GAN, včetně porovnání supervidovaných sítí a GAN. učení bez dohledu a diskriminačního vs. generativního modelování.
  • GAN jsou architekturou pro automatické trénování generativního modelu tím, že k problému bez dohledu přistupují jako k problému s dohledem a používají jak generativní, tak diskriminační model.
  • GAN poskytují cestu k sofistikovanému rozšiřování dat specifických pro danou oblast a řešení problémů, které vyžadují generativní řešení, jako je například překlad obrazu do obrazu.

Do you have any questions?
Ask your questions in the comments below and I will do my best to answer.

Develop Generative Adversarial Networks Today!

Generative Adversarial Networks with Python

Develop Your GAN Models in Minutes

…with just a few lines of python code

Discover how in my new Ebook:
Generative Adversarial Networks with Python

It provides self-study tutorials and end-to-end projects on:
DCGAN, conditional GANs, image translation, Pix2Pix, CycleGAN
and much more…

Finally Bring GAN Models to your Vision Projects

Skip the Academics. Just Results.See What’s Inside

Tweet Share Share

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *