GAN-ji izven generacije: 7 primerov alternativne uporabe

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

Zdravo vsi!
Tako kot veliko ljudi, ki spremljajo napredek AI, tudi jaz nisem mogel preskočiti nedavnega napredka na področju generativnega modeliranja, zlasti velikega uspeha generativnih oglaševalskih omrežij (GAN) pri ustvarjanju slik. Poglejte te vzorce: komaj se razlikujejo od pravih fotografij!

Vzorci iz BigGAN: https://openreview.net/pdf?id=B1xsqj09Fm

Izjemen je tudi napredek generacije obrazov v letih 2014 do 2018:

Nad temi rezultati sem zelo navdušen, vendar moj notranji skeptik vedno dvomi, ali so res uporabni in široko uporabni. To vprašanje sem že odpiral v svojem zapisu na Facebooku:

V bistvu sem se "pritoževal", da jih z vso močjo generativnih modelov v resnici ne uporabljamo za nekaj bolj praktičnega kot generacija visokih ločljivosti ali burgers. Seveda obstajajo podjetja, ki lahko temeljijo neposredno na ustvarjanju slik ali prenosu stilov (npr. Generacija likov ali ravni v igralniški industriji, prenašanje stila z resničnih fotografij na anime avatarje), toda iskal sem več področij, na katerih GAN in druge generacije modeli se lahko uporabljajo. Prav tako bi se rad spomnil, da s generativnimi modeli lahko ustvarjamo ne samo slike, temveč besedilo, zvoke, glasove, glasbo, strukturirane podatke, kot so ravni igre ali molekule drog, in obstaja neverjetna objava na blogu z drugimi generacijam podobnimi aplikacijami, vendar tu nas bodo omejili s primeri, kjer sinteza ni glavni cilj.

Ustvarjanje ravni iger z RNN

V tem članku predstavljam 7 primerov alternativne uporabe. Z nekaterimi sem že osebno sodeloval in lahko potrdim njihovo uporabnost, nekatere druge so v raziskavah, vendar to še ne pomeni, da jih ni vredno poskusiti. Vse te primere uporabe generativnih modelov, ki niso nujno za ustvarjanje, je mogoče uporabiti na različnih področjih in za različne podatke, saj naš glavni cilj ne bo ustvariti nečesa realnega, temveč izkoristiti notranje znanje nevronskih mrež za nove naloge.

1. Povečanje podatkov

Mogoče je najbolj očitna aplikacija usposabljanje modela za generiranje novih vzorcev iz naših podatkov za povečanje našega nabora podatkov. Kako preverimo, ali je to povečanje res kaj pomagalo? No, obstajata dve glavni strategiji: naš model lahko treniramo na "ponarejenih" podatkih in preverimo, kako uspešen je na resničnih vzorcih. In nasprotno: svoj model treniramo na resničnih podatkih, da opravijo neko klasifikacijsko nalogo in šele po preverjanju, kako uspešen je na ustvarjenih podatkih (GAN oboževalci lahko tukaj prepoznajo oceno začetka). Če deluje dobro v obeh primerih - lahko prosto dodate vzorce iz generativnega modela k svojim resničnim podatkom in jih ponovno izpopolnite - pričakovali boste, da boste dosegli povečanje učinkovitosti. Če želite narediti ta pristop še bolj zmogljiv in prilagodljiv, preverite aplikacijo št. 6.

NVIDIA je pokazala akcijski primer tega pristopa v akciji: uporabili so GAN za povečanje nabora slik medicinskih CT možganov z različnimi boleznimi in pokazali, da je učinkovitost klasifikacije, ki uporablja samo klasično povečanje podatkov, prinesla 78,6% občutljivost in 88,4% specifičnost. Z dodajanjem sintetičnega povečevanja podatkov so se rezultati povečali na 85,7% občutljivosti in 92,4% specifičnosti.

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

2. Ohranjanje zasebnosti

Podatki številnih podjetij so lahko tajni (kot finančni podatki, ki zaslužijo denar), zaupni ali občutljivi (medicinski podatki, ki vsebujejo diagnoze bolnikov). Včasih pa ga moramo deliti s tretjimi osebami, kot so svetovalci ali raziskovalci. Če želimo samo deliti splošno predstavo o naših podatkih, ki vključuje najpomembnejše vzorce, podrobnosti in oblike predmetov, lahko neposredno uporabimo generativne modele, kot v prejšnjem odstavku, za vzorčenje primerov naših podatkov, ki jih delimo z drugimi ljudmi. Tako ne bomo delili nobenih natančnih zaupnih podatkov, ampak nekaj takega, kar je podobno.

Težji primer je, kadar želimo podatke na skrivaj deliti. Seveda imamo različne sheme šifriranja, na primer homomorfno šifriranje, vendar imajo znane pomanjkljivosti, kot je skrivanje 1MB informacij v 10GB kodi. Leta 2016 je Google odprl novo raziskovalno pot uporabe GAN-konkurenčnega okvira za težave s šifriranjem, kjer sta se morali dve omrežji potegovati za ustvarjanje kode in njeno prebijanje:

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

Toda najboljša poanta ni učinkovitost pridobljene kode ali "AI" buzzword na drugem področju. Ne smemo pozabiti, da predstavitve, ki jih dobimo z nevronskimi omrežji, vseeno pogosto vsebujejo najbolj koristne informacije o vhodnih podatkih (nekateri so celo usposobljeni neposredno za to, da imajo te podatke, kot so avtoenkoderji) in iz teh stisnjenih podatkov še vedno lahko razvrščamo / regresiramo / združujemo v skupine ali karkoli hočemo. Če zamenjamo "stisnjeno" z "šifrirano", je ideja jasna: to je neverjeten način za izmenjavo podatkov s tretjimi osebami, ne da bi pri tem pokazali ničesar o naboru podatkov. Je veliko močnejša od anonimizacije ali celo lažnega ustvarjanja vzorcev in je lahko naslednja velika stvar (seveda z uporabo blockchaina, kot že to počne Numerai)

3. Odkrivanje nepravilnosti

Glavni generativni modeli, kot sta variacijski avtoenkoder (VAE) ali GAN, so sestavljeni iz dveh delov. VAE ima dajalnik in dekoder, kjer prvi v osnovi modelira distribucijo, drugi pa rekonstruira iz njega. GAN je sestavljen iz generatorja in diskriminatorja, kjer prvi modelira distribucijo in drugi presodi, če je blizu za treniranje podatkov. Kot vidimo, so si na nek način precej podobni - del je modeliranja in presojanja (v VAE lahko rekonstrukcijo štejemo kot nekakšno presojo). Del za modeliranje, ki naj bi se naučil distribucije podatkov. Kaj se bo zgodilo s presojo dela, če mu bomo dali nekaj vzorca, ne iz distribucije treningov? V primeru dobro usposobljenega GAN diskriminator nam bo povedal 0, napaka pri obnovi VAE pa bo večja od povprečne na podatkih o vadbi. Tu je: naš nenadzorovan detektor anomalije, ki ga je enostavno usposobiti in ovrednotiti. In ga lahko nahranimo z nekaterimi steroidi, kot so statistične razdalje, če želimo (Wasserstein GAN). V tem prispevku najdete primer GAN, ki se uporablja za odkrivanje anomalij, in tukaj avtoenkoder. Dodam tudi svojo grobo skico detektorja anomalije na osnovi avtoenkoderja za časovno vrsto, napisano v Kerasu:

4. Diskriminacijsko modeliranje

Vse, kar globoko učenje resnično počne, je preslikava vhodnih podatkov v nek prostor, kjer ga je lažje ločiti ali razložiti s preprostimi matematičnimi modeli, kot sta SVM ali logistična regresija. Tudi generativni modeli delajo svoje preslikavo, začnimo s VAE. Autoencoders preslikajo vhodni vzorec v nek pomemben latentni prostor in v bistvu lahko nekaj modela izučimo naravnost preko njega. Je to sploh smiselno? Ali se razlikuje od tega, da samo uporabite dajalne plasti in usposobite model za neposredno razvrščanje neke klasifikacije? Res je. Latentni prostor avtoenkoderja je kompleksno nelinearno zmanjšanje dimenzij in v primeru variacijskega avtoenkoderja tudi multivariatna porazdelitev, kar je lahko veliko boljše od začetka inicializacije za usposabljanje diskriminatornega modela kot neke naključne inicializacije.

GAN je nekoliko težje uporabiti za druge naloge. Zasnovani so za ustvarjanje vzorcev iz naključnih semen in ne pričakujejo, da bodo vložili kakšen vložek. Toda še vedno jih lahko izkoristimo kot klasifikatorje vsaj na dva načina. Prvič, že raziskan je, da diskriminatorja razvrsti ustvarjeni vzorec v različne razrede, hkrati pa samo pove, ali je resničen ali ponarejen. Od pridobljenega klasifikatorja lahko pričakujemo, da bo bolje reguliran (saj je videl različne vrste hrupa in motenj vhodnih podatkov) in imel dodaten razred za odstranjevalce / anomalije:

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

Drugi je nepošteno pozabljen pristop k razvrščanju z Bayesovim teoremom, kjer modeliramo p (c_k | x), ki temelji na p (x | c_k) (točno tisto, kar dela pogojni GAN!) In priors p (x), p (c_k). Glavno vprašanje je, ali se GAN res naučijo distribucije podatkov ?, o čemer razpravljajo v nekaterih nedavnih študijah.

5. Prilagajanje domene

To je zame eno najmočnejših. V praksi skoraj nikoli nimamo enakega vira podatkov za usposabljanje modelov in njihovo delovanje v realnem okolju. V računalniškem vidu so lahko različni svetlobni pogoji, nastavitve kamere ali vreme celo zelo natančen model neuporabni. Pri analizi NLP / govora sleng ali naglas lahko uničijo delovanje vašega modela, usposobljenega na "slovnično pravilnem" jeziku. Pri obdelavi signalov najverjetneje imate popolnoma različne naprave za zajem podatkov za usposabljanje modelov in proizvodnje. Opazimo pa lahko tudi, da sta si obe vrsti podatkov zelo podobni. In poznamo modele strojnega učenja, ki izvajajo preslikavo iz enega pogoja v drugega in ohranjajo glavno vsebino, vendar spreminjajo podrobnosti. Da, zdaj se ukvarjam s prenosom stilov, vendar za manj ustvarjalne namene.

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

Na primer, če imate opravka z aplikacijo, ki naj bi delovala na nekakšnih CCTV kamerih, a ste svoj model usposobili na slikah z visoko ločljivostjo, lahko poskusite uporabiti GAN za predobdelavo slik z odstranjevanjem hrupa in njihovo izboljšanje. Bolj radikalen primer, ki ga lahko navedem na področju obdelave signalov: obstaja veliko nabora podatkov, povezanih s podatki pospeševalnika iz mobilnih telefonov, ki opisujejo različne dejavnosti ljudi. Kaj pa, če želite svoje modele, usposobljene za telefonske podatke, uporabiti na zapestnem pasu? GAN vam lahko skušajo pomagati pri prevajanju različnih vrst gibanj. Na splošno lahko generativni modeli, ki generirajo generiranje ne iz hrupa, ampak vnaprej določene predhodne rešitve, vam pomagajo pri prilagajanju domene, kovariance in drugih težavah, povezanih z razlikami v podatkih.

6. Obdelava podatkov

O prenosu stilov smo govorili v prejšnjem odstavku. Kar mi v resnici ni všeč, je dejstvo, da je funkcija preslikave, ki deluje na celotnem vhodu in vse to spremenila. Kaj pa, če želim samo spremeniti nos na kakšni fotografiji? Ali pa spremenite barvo avtomobila? Ali pa nekatere besede v govoru zamenjajte, ne da bi jih popolnoma spremenili? Če želimo to narediti, že domnevamo, da lahko naš predmet opišemo z nekaj končnega nabora dejavnikov, na primer obraz je kombinacija oči, nosu, las, ustnic itd. Ti dejavniki imajo svoje lastnosti (barva , velikost itd.) Kaj pa, če bi svoje slikovne pike s fotografijo lahko preslikali na nekaj ... kjer lahko te dejavnike preprosto prilagodimo in naredimo nos večji ali manjši? Obstaja nekaj matematičnih konceptov, ki to omogočajo: večplastna hipoteza in razdvojena reprezentacija. Dobra novica za nas je, da nam avtoenkoderji in verjetno GAN omogočajo modeliranje distribucije na tak način, da gre za mešanico teh dejavnikov.

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

7. Nadzorni trening

Mogoče se ne strinjate, če dodate odstavek o napadih na modele strojnega učenja, vendar ima vse opraviti z generativnimi modeli (algoritmi adversarialnih napadov so resnično zelo preprosti) in nadomestnimi algoritmi (saj imamo model, ki tekmuje proti drugemu). Mogoče poznate koncept nasprotnih primerov: majhne motnje v vnosu modela (lahko celo en slikovni pik na sliki), ki povzročajo popolnoma napačno delovanje. Obstajajo različni načini boja proti njim, eden najosnovnejših pa se imenuje adversarialni trening: v bistvu gre za uporabo nadomestnih primerov za gradnjo še natančnejših modelov.

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

Če se ne spuščate v podrobnosti, to pomeni, da imamo še vedno igro za dva igralca: adversarialni model (ki preprosto ustvarja vhodne motnje z nekaj epsilona), ki mora povečati svoj vpliv in obstaja klasifikacijski model, ki mora zmanjšati izgubo. Videti je veliko kot GAN, vendar za različne namene: narediti model bolj stabilen za neželene napade in izboljšati njegovo delovanje zaradi neke vrste pametnega povečevanja in urejanja podatkov.

Vzeti

V tem članku smo videli več primerov, kako lahko GAN in nekatere druge generativne modele uporabimo za kaj drugega kot za ustvarjanje lepih slik, melodij ali kratkih besedil. Seveda bo njihov glavni dolgoročni cilj ustvarjanje predmetov iz resničnega sveta, ki so pogojeni s pravimi situacijami, danes pa lahko izkoristimo njihovo sposobnost modeliranja distribucij in učenja koristnih reprezentacij za izboljšanje naših trenutnih AI cevovodov, zavarovanje naših podatkov, iskanje anomalij ali prilagajanje več primeri iz resničnega sveta. Upam, da jih boste našli koristne in bodo uporabne v vaših projektih. Ostani na vezi!

P.S.
Spremljajte me tudi na Facebooku za AI članke, ki so prekratki za Medium, Instagram za osebne stvari in Linkedin!