AI 101
Co je Generative Adversarial Network (GAN)?

Generative Adversarial Networks (GANs) jsou typy architektur neuronových sítí schopné generovat nová data, která odpovídají naučeným vzorům. GANs lze použít k generování obrazů lidských tváří nebo jiných objektů, k provedení překladů text-obraz, k převodu jednoho typu obrazu na jiný a ke zvýšení rozlišení obrazů (super rozlišení) mezi mnoha dalšími aplikacemi. Protože GANs mohou generovat zcela nová data, jsou na čele mnoha špičkových systémů AI, aplikací a výzkumu. Ale jak přesně GANs fungují? Pojďme prozkoumat, jak GANs fungují a podívejme se na některé z jejich primárních použití.
Definice generativních modelů a GANs
GAN je příkladem generativního modelu. Většina modelů AI lze rozdělit do jedné z dvou kategorií: dohlížené a nedohlížené modely. Dohlížené modely učení se obvykle používají k rozlišení mezi různými kategoriemi vstupů, ke klasifikaci. Naopak, nedohlížené modely se obvykle používají k souhrnu rozdělení dat, často se učí Gaussovo rozdělení dat. Protože se učí rozdělení datové sady, mohou z něj vybrat vzorky a generovat nová data.
Různé generativní modely mají různé metody generování dat a výpočtu pravděpodobnostních rozdělení. Například Naive Bayes model funguje tak, že vypočítává pravděpodobnostní rozdělení pro různé vstupní funkce a generativní třídu. Když Naive Bayes model renderuje předpověď, vypočítává nejpravděpodobnější třídu tak, že bere pravděpodobnost různých proměnných a kombinuje je вместе. Další nedohlížené generativní modely zahrnují Gaussian Mixture Models a Latent Dirichlet Allocation (LDA). Hluboké učení založené generativní modely zahrnují Restricted Boltzmann Machines (RBMs), Variational Autoencoders (VAEs) a samozřejmě GANs.
Generative Adversarial Networks byly první navrhnuty Ianem Goodfellowem v roce 2014 a byly vylepšeny Alecem Redfordem a dalšími výzkumníky v roce 2015, což vedlo k standardizované architektuře pro GANs. GANs jsou ve skutečnosti dvě různé sítě spojené вместе. GANs se skládají ze dvou polovin: generátorového modelu a diskriminačního modelu, také nazývaného generátor a diskriminátor.
Architektura GAN
Generative Adversarial Networks jsou postaveny z generátorového modelu a diskriminačního modelu spojeného вместе. Úkolem generátorového modelu je vytvořit nové příklady dat na základě vzorů, které model naučil z trénovacích dat. Úkolem diskriminačního modelu je analyzovat obrázky (předpokládejme, že je trénován na obrázcích) a určit, zda jsou obrázky generovány/falešné nebo skutečné.

Obě modely jsou proti sobě, trénovány v herním teoretickém stylu. Cílem generátorového modelu je produkovat obrázky, které oklamou jeho protivníka – diskriminační model. Mezitím je úkolem diskriminačního modelu překonat svého protivníka, generátorový model, a chytit falešné obrázky, které generátor produkuje. Skutečnost, že modely jsou proti sobě, vede k závodům ve zbrojení, kde se obě modely zlepšují. Diskriminační model získá zpětnou vazbu o tom, které obrázky byly skutečné a které byly produkovány generátorem, zatímco generátor je krmen informacemi o tom, které z jeho obrázků byly označeny jako falešné diskriminátorem. Obě modely se zlepšují během trénování, s cílem trénovat generátorový model, který může produkovat falešná data, která jsou prakticky nerozlišitelná od skutečných, skutečných dat.
Jakmile je vytvořeno Gaussovo rozdělení dat během trénování, lze použít generátorový model. Generátorový model je inicializován náhodným vektorem, který transformuje na základě Gaussova rozdělení. Jinými slovy, vektor inicializuje generování. Když je model trénován, vektorový prostor bude komprimovanou verzí, nebo reprezentací, Gaussova rozdělení dat. Komprimovaná verze rozdělení dat se nazývá latentní prostor, nebo latentní proměnné. Později může GAN model poté vzít latentní prostor reprezentaci a nakreslit body z něj, které lze dát generátorovému modelu a použít k generování nových dat, která jsou velmi podobná trénovacím datům.
Diskriminační model je krmen příklady z celého trénovacího domény, který se skládá z obou skutečných a generovaných datových příkladů. Skutečné příklady jsou obsaženy v trénovacích datech, zatímco falešná data jsou produkována generátorovým modelem. Proces trénování diskriminačního modelu je přesně stejný jako základní, binární klasifikační model trénování.
Proces trénování GAN
Pojďme se podívat na celý trénovací proces pro hypotetickou úloha generování obrázků.
Na začátku je GAN trénován pomocí skutečných, skutečných obrázků jako části trénovací datové sady. To nastaví diskriminační model, aby rozlišoval mezi generovanými obrázky a skutečnými obrázky. To také produkuje datové rozdělení, které generátor použije k produkci nových dat.
Generátor bere vektor náhodných numerických dat a transformuje je na základě Gaussova rozdělení, vrací obrázek. Tyto generované obrázky, spolu se skutečnými obrázky z trénovací datové sady, jsou krmeny do diskriminačního modelu. Diskriminační model renderuje pravděpodobnostní předpověď o povaze obrázků, které obdrží, výstupem je hodnota mezi 0 a 1, kde 1 jsou obvykle autentické obrázky a 0 je falešný obrázek.

Existuje dvojí zpětná vazba, protože diskriminační model je krmen skutečnou pravdou o obrázcích, zatímco generátor je krmen zpětnou vazbou o jeho výkonu diskriminátorem.
Generativní a diskriminační modely hrají nulovou součtovou hru jeden proti druhému. Nulová součtová hra je hra, ve které zisky jedné strany přicházejí na úkor druhé strany (součet je nula). Když diskriminační model úspěšně rozliší mezi skutečnými a falešnými příklady, nejsou provedeny žádné změny v parametrech diskriminátoru. Nicméně, jsou provedeny velké aktualizace parametrů modelu, když selže rozlišení mezi skutečnými a falešnými obrázky. Inverzní je pravda pro generátorový model, je penalizován (a jeho parametry jsou aktualizovány) když selže oklamat diskriminační model, ale jinak jeho parametry jsou nezměněny (nebo je odměněn).
Ideálně je generátor schopen zlepšit svůj výkon na bod, kde diskriminační model nemůže rozlišit mezi falešnými a skutečnými obrázky. To znamená, že diskriminační model bude vždy renderovat pravděpodobnosti 50 % pro skutečné a falešné obrázky, což znamená, že generované obrázky by měly být nerozlišitelné od skutečných, skutečných obrázků.
V praxi GANs obvykle nedosáhnou tohoto bodu. Nicméně, generátorový model nemusí vytvářet dokonale podobné obrázky, aby byl stále užitečný pro mnoho úloh, pro které se GANs používají.
Aplikace GAN
GANs mají řadu různých aplikací, většina z nich se točí kolem generování obrázků a komponent obrázků. GANs se běžně používají v úlohách, kde je požadované obrazové data chybí nebo je omezené, jako metoda generování požadovaného data. Pojďme prozkoumat některé z běžných použití GANs.
Generování nových příkladů pro datové sady
GANs lze použít k generování nových příkladů pro jednoduché datové sady obrázků. Pokud máte pouze několik trénovacích příkladů a potřebujete více z nich, GANs by mohly být použity k generování nových trénovacích dat pro klasifikátor obrázků, generování nových trénovacích příkladů v různých orientacích a úhlech.
Generování unikátních lidských tváří

Žena na tomto obrázku neexistuje. Obrázek byl generován StyleGAN. Foto: Owlsmcgee via Wikimedia Commons, Public Domain (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)
Když jsou dostatečně trénovány, GANs lze použít k generování extrémně realistických obrázků lidských tváří. Tyto generované obrázky lze použít k pomoci trénovat systémy rozpoznávání tváří.
Překlad obrázku na obrázek
GANs vynikají v překladu obrázků. GANs lze použít k barevnému zpracování černobílých obrázků, překladu náčrtů nebo kreseb na fotografické obrázky nebo převodu obrázků z dne na noc.
Překlad textu na obrázek
Překlad textu na obrázek je možný pomocí GANs. Když je poskytnut text, který popisuje obrázek a doprovodný obrázek, GAN lze trénovat k vytvoření nového obrázku, když je poskytnut popis požadovaného obrázku.
Úprava a oprava obrázků
GANs lze použít k úpravě existujících fotografií. GANs odstraní prvky, jako je déšť nebo sníh z obrázku, ale lze je také použít k opravě starých, poškozených obrázků nebo poškozených obrázků.
Super rozlišení
Super rozlišení je proces, který zahrnuje převzetí nízko-rozlišení obrázku a vložení více pixelů do obrázku, zlepšení rozlišení obrázku. GANs lze trénovat k převzetí obrázku a generování vyšším rozlišení obrázku.






