GAN nad generáciu: 7 alternatívnych prípadov použitia

https://sigmoidal.io/beginners-review-of-gan-architectures/

Ahoj všetci!
Rovnako ako mnoho ľudí, ktorí sledujú pokroky v oblasti umelej inteligencie, nemohol som preskočiť nedávny pokrok v generatívnom modelovaní, najmä veľký úspech generatívnych protivníkových sietí (GAN) pri generovaní obrázkov. Pozrite sa na tieto ukážky: sotva sa dajú rozlíšiť od skutočných fotografií!

Vzorky z BigGAN: https://openreview.net/pdf?id=B1xsqj09Fm

Pozoruhodný je aj pokrok pri tvorbe tváre od roku 2014 do roku 2018:

Tieto výsledky ma veľmi potešili, ale môj vnútorný skeptik vždy pochybuje o tom, či sú skutočne užitočné a všeobecne uplatniteľné. Túto otázku som už otváral vo svojej poznámke na Facebooku:

V podstate som sa „sťažoval“, že so všetkou silou generatívnych modelov ich naozaj nepoužívame na niečo praktickejšie ako na generácie tvárí alebo hamburgerov s vysokým rozlíšením. Existujú samozrejme podniky, ktoré môžu byť založené priamo na generovaní snímok alebo prenose štýlov (ako je generovanie postavy alebo úrovne v hernom priemysle, prenos štýlov z reálnych fotografií do avatarov anime), ale hľadal som viac oblastí, v ktorých GAN a ďalšie generatívne môžu byť použité modely. Chcel by som tiež pripomenúť, že pomocou generatívnych modelov dokážeme generovať nielen obrázky, ale aj texty, zvuky, hlasy, hudbu, štruktúrované údaje, ako sú úrovne hier alebo molekuly drog, a existuje úžasný blogový príspevok s inými generačnými aplikáciami, ale tu nás obmedzíme na príklady, v ktorých syntéza nie je hlavným cieľom.

Generovanie úrovne hry pomocou RNN

V tomto článku uvádzam 7 alternatívnych prípadov použitia. S niektorými z nich už osobne pracujem a môžem potvrdiť ich užitočnosť, iní sú vo výskume, ale to neznamená, že sa oplatí vyskúšať. Všetky tieto príklady použitia generatívnych modelov, ktoré nie sú nevyhnutne potrebné na tvorbu, sa dajú uplatniť v rôznych oblastiach a na rôzne údaje, pretože naším hlavným cieľom nebude generovať niečo realistické, ale využívať vnútorné znalosti neurónových sietí na nové úlohy.

1. Rozšírenie údajov

Možno najzreteľnejšou aplikáciou môže byť príprava modelu na generovanie nových vzoriek z našich údajov na rozšírenie nášho súboru údajov. Ako skontrolujeme, či toto rozšírenie niečo skutočne pomohlo? Existujú dve hlavné stratégie: náš model môžeme trénovať na „falošných“ údajoch a kontrolovať, ako dobre funguje na skutočných vzorkách. A naopak: náš model trénujeme na skutočných údajoch, aby vykonávali nejakú klasifikačnú úlohu, a až po kontrole, ako dobre funguje na vygenerovaných údajoch (fanúšikovia GAN tu môžu rozpoznať počiatočné skóre). Ak to funguje v oboch prípadoch - môžete pokojne pridať vzorky z generatívneho modelu k svojim skutočným údajom a znova ich preškoliť - mali by ste očakávať zvýšenie výkonu. Aby bol tento prístup ešte výkonnejší a flexibilnejší, skontrolujte aplikáciu č. 6.

NVIDIA vykázala úžasný príklad tohto prístupu v akcii: použili GAN na rozšírenie súboru údajov o medicínskych CT snímkach mozgu s rôznymi chorobami a ukázali, že výkonnosť klasifikácie s použitím iba klasického zväčšenia údajov priniesla 78,6% citlivosť a 88,4% špecifickosť. Pridaním zväčšenia syntetických údajov sa výsledky zvýšili na 85,7% citlivosť a 92,4% špecificitu.

https://arxiv.org/pdf/1803.01229.pdf

2. Ochrana súkromia

Údaje mnohých spoločností môžu byť tajné (napríklad finančné údaje, ktoré zarábajú peniaze), dôverné alebo citlivé (lekárske údaje, ktoré obsahujú diagnózy pacientov). Niekedy to však musíme zdieľať s tretími stranami, napríklad s konzultantmi alebo výskumníkmi. Ak chceme iba zdieľať všeobecnú predstavu o našich údajoch, ktorá obsahuje najdôležitejšie vzorce, podrobnosti a tvary objektov, môžeme použiť generatívne modely priamo ako v predchádzajúcom odseku na vzorkovanie príkladov našich údajov, ktoré sa dajú zdieľať s ostatnými ľuďmi. Týmto spôsobom nebudeme zdieľať žiadne presné dôverné údaje, len niečo, čo vyzerá presne takto.

Zložitejší prípad je, keď chceme údaje zdieľať tajne. Samozrejme máme rôzne šifrovacie schémy, napríklad homomorfné šifrovanie, ale majú známe nedostatky, ako je skrytie 1 MB informácií v 10 GB kóde. V roku 2016 spoločnosť Google otvorila novú výskumnú cestu o používaní konkurenčného rámca GAN pre problém so šifrovaním, kde dve siete museli súťažiť pri vytváraní kódu a jeho prasknutí:

https://towardsdatascience.com/adversarial-neural-cryptography-can-solve-the-biggest-friction-point-in-modern-ai-cc13b337f969

Najlepšie však nie je efektívnosť získaného kódu alebo buzzwordu „AI“ v inej oblasti. Mali by sme pamätať na to, že reprezentácie získané neurónovými sieťami často stále obsahujú najužitočnejšie informácie o vstupných údajoch (niektoré z nich sú dokonca vyškolené priamo na to, aby mali tieto informácie, ako sú autoenkodéry) a z týchto komprimovaných údajov stále môžeme robiť klasifikáciu / regresiu / zoskupovanie. alebo čo chceme. Ak nahradíme „komprimované“ za „šifrované“, myšlienka je jasná: je to úžasný spôsob zdieľania údajov s tretími stranami bez toho, aby sa zobrazovali údaje o množine údajov. Je to oveľa silnejšie ako anonymizácia alebo dokonca generovanie falošných vzoriek a môže byť ďalšou veľkou vecou (samozrejme s použitím blockchainu, ako to už bolo v prípade Numerai).

3. Detekcia anomálie

Hlavné generatívne modely, ako je variačný autokodér (VAE) alebo GAN, sa skladajú z dvoch častí. VAE má kodér a dekodér, kde prvý model v podstate modeluje distribúciu a druhý z neho rekonštruuje. GAN sa skladá z generátora a diskriminátora, kde prvý model distribúcie distribuuje a druhý sudca, či je blízko k údajom o vlaku. Ako vidíme, nejakým spôsobom sú dosť podobné - existuje časť týkajúca sa modelovania a posudzovania (vo VAE môžeme rekonštrukciu považovať za určitý druh úsudku). Modelovaná časť sa mala naučiť distribúciu dát. Čo sa stane s hodnotením časti, ak jej dáme vzorku, nie z distribúcie školení? V prípade dobre vyškoleného diskriminátora GAN nám povedzte 0 a chyba obnovy VAE bude vyššia ako priemerná chyba v údajoch o školení. Tu to prichádza: náš detektor anomálie bez dozoru, ľahko vyškolený a vyhodnotený. A môžeme ho kŕmiť niektorými steroidmi, ako sú štatistické vzdialenosti, ak chceme (Wasserstein GAN). V tomto článku nájdete príklad GAN, ktorý sa používa na detekciu anomálií, a tu aj autoenkodér. Tiež pridám svoj vlastný hrubý náčrt detektora anomálie založeného na autoenkóde pre časové rady napísané v Kerase:

4. Diskriminačné modelovanie

Všetko, čo hlboké vzdelávanie naozaj robí, je zmapovanie vstupných údajov do určitého priestoru, kde je ľahšie oddeliteľné alebo vysvetliteľné jednoduchými matematickými modelmi, ako je SVM alebo logistická regresia. Generatívne modely tiež robia svoje vlastné mapovanie, začnime s VAE. Autoenkodéry mapujú vstupnú vzorku do nejakého zmysluplného latentného priestoru a v podstate môžeme trénovať nejaký model priamo nad ním. Dáva to zmysel? Líši sa to len od použitia vrstiev kódovacích zariadení a vytrénovania modelu na priame zatriedenie? Je to vskutku. Latentný priestor autoencoderu je zložité nelineárne zmenšovanie rozmerov av prípade variačného autoencoderu aj multivariačné rozdelenie, ktoré môže byť oveľa lepšie začatie inicializácie pre nácvik diskriminačného modelu ako nejaká náhodná inicializácia.

Použitie GAN je o niečo zložitejšie na iné úlohy. Sú navrhnuté tak, aby generovali vzorky z náhodných semien, a neočakávajú sa, že dôjde k nejakému vstupu. Stále ich však môžeme využívať ako klasifikátory dvoma spôsobmi. Prvá, už skúmaná, využíva diskriminačný prostriedok na vykonanie klasifikácie vygenerovanej vzorky do rôznych tried spolu s tým, že len povie, či je skutočná alebo falošná. Od získaného klasifikátora môžeme očakávať, že bude lepšie regularizovaný (pretože zaznamenal rôzne druhy zvukov a porúch vstupných údajov) a že bude mať extra triedu pre odľahlé / anomálie:

https://towardsdatascience.com/semi-supervised-learning-with-gans-9f3cb128c5e

Druhým je nespravodlivo zabudnutý prístup k klasifikácii pomocou Bayesovej vety, kde modelujeme p (c_k | x) na základe p (x | c_k) (presne čo podmienené GAN!) A predchádzajúce p (x), p (c_k). Hlavná otázka je, či sa GAN skutočne učia distribúcii údajov ?, a práve o tom sa diskutuje v niektorých nedávnych štúdiách.

5. Prispôsobenie domény

Toto je jedno z najmocnejších. V praxi takmer nikdy nemáme rovnaký zdroj údajov na výcvik modelov a ich spúšťanie v prostredí skutočného sveta. Pri počítačovom videní môžu rôzne svetelné podmienky, nastavenie fotoaparátu alebo počasie spôsobiť, že aj veľmi presný model bude k ničomu. V analýze NLP / reči môže slang alebo prízvuk zničiť výkon vášho modelu trénovaného na „gramaticky správny“ jazyk. Pri spracovaní signálu s najväčšou pravdepodobnosťou máte úplne odlišné zariadenia na zachytávanie údajov na trénovanie modelov a výrobu. Môžeme si však tiež všimnúť, že oba typy údajov sú si navzájom veľmi podobné. Poznáme modely strojového učenia, ktoré vykonávajú mapovanie z jedného stavu do druhého, pričom zachovávajú hlavný obsah, ale menia detaily. Áno, teraz sa chystám na prenos štýlu, ale na menej kreatívne účely.

https://ml4a.github.io/ml4a/style_transfer/

Napríklad, ak máte čo do činenia s aplikáciou, ktorá by mala pracovať s nejakým druhom CCTV kamier, ale váš model ste vyškolili na obrázky s vysokým rozlíšením, môžete skúsiť použiť GAN na predspracovanie obrázkov s odstránením šumu a vylepšením. Radikálnejší príklad, ktorý môžem poskytnúť v oblasti spracovania signálu: existuje veľa súborov údajov týkajúcich sa údajov akcelerometra z mobilných telefónov, ktoré opisujú rôzne činnosti ľudí. Ale čo keď chcete aplikovať svoje modely trénované na telefónne údaje na náramku? GAN vám môžu pomôcť pri preklade rôznych druhov pohybov. Všeobecne platí, že generatívne modely, ktoré nevyrábajú generovanie z hluku, ale niektoré z preddefinovaných predchádzajúcich, vám môžu pomôcť s prispôsobením domény, zmenami kovariancie a ďalšími problémami súvisiacimi s rozdielmi v údajoch.

6. Manipulácia s údajmi

O prevode štýlov sme hovorili v predchádzajúcom odseku. To, čo sa mi v ňom naozaj nepáči, je skutočnosť, že funkcia mapovania funguje na celom vstupe a všetko to mení. Čo ak chcem len zmeniť nos na nejakej fotografii? Alebo zmeniť farbu automobilu? Alebo nahradiť niektoré slová v reči bez toho, aby ste ich úplne zmenili? Ak to chceme urobiť, predpokladáme, že náš objekt je možné opísať pomocou nejakej konečnej skupiny faktorov, napríklad tvár je kombináciou očí, nosa, vlasov, pier atď. A tieto faktory majú svoje vlastné atribúty (farba , veľkosť atď.). Čo keby sme mohli zmapovať naše pixely pomocou fotografie na nejaké ... kde môžeme tieto faktory len upraviť a zväčšiť alebo zmenšiť nos? Existuje niekoľko matematických konceptov, ktoré to umožňujú: rozmanitá hypotéza a rozčlenenie reprezentácie. Dobrou správou pre nás je, že autoenkodéry a pravdepodobne GAN nám umožňujú modelovať distribúciu takým spôsobom, že je to zmes týchto faktorov.

https://houxianxu.github.io/assets/project/dfcvae

7. Adversarial training

Možno by ste so mnou nesúhlasili s pridaním odseku o útokoch na modely strojového učenia, ale má to všetko spoločné s generatívnymi modelmi (algoritmy kontradiktórneho útoku sú skutočne veľmi jednoduché) a kontradiktórnymi algoritmami (pretože máme model, ktorý súťaží s iným). Možno ste oboznámení s konceptom kontradiktórnych príkladov: malé poruchy vo vstupe modelu (môže to byť dokonca jeden pixel na obrázku), ktoré spôsobujú úplne zlý výkon. Existujú rôzne spôsoby, ako proti nim bojovať, a jeden z najzákladnejších sa nazýva kontradiktórny tréning: v podstate ide o využitie protikladných príkladov na zostavenie ešte presnejších modelov.

https://blog.openai.com/adversarial-example-research/

Bez väčšieho ponorenia do detailov to znamená, že stále máme hru pre dvoch hráčov: kontradiktórny model (ktorý jednoducho spôsobuje poruchy vstupu s nejakým epsilonom), ktorý musí maximalizovať svoj vplyv a existuje klasifikačný model, ktorý musí minimalizovať svoju stratu. Vyzerá to veľa ako GAN, ale na rôzne účely: spravte model stabilnejším voči kontradiktórnym útokom a zlepšite jeho výkonnosť vďaka inteligentnému rozširovaniu a regularizácii údajov.

takeaways

V tomto článku sme videli niekoľko príkladov, ako je možné GAN a niektoré ďalšie generatívne modely použiť na niečo iné, ako na vytváranie pekných obrázkov, melódií alebo krátkych textov. Ich hlavným dlhodobým cieľom bude, samozrejme, vytváranie objektov reálneho sveta podmienených správnymi situáciami, ale dnes môžeme využiť ich schopnosť modelovania distribúcií a učenia užitočných reprezentácií na zlepšenie našich súčasných plynovodov AI, zabezpečenie našich údajov, nájdenie anomálií alebo prispôsobenie sa ďalším prípady skutočného sveta. Dúfame, že sa vám budú zdať užitočné a budú sa používať vo vašich projektoch. Zostaňte naladení!

PS:
Nasledujte ma aj na Facebooku pre články AI, ktoré sú príliš krátke na médium Medium, Instagram na osobné veci a Linkedin!