GAN už generacijos ribų: 7 alternatyvaus naudojimo atvejai

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

Sveiki visi!
Kaip ir daugelis žmonių, stebinčių AI pažangą, aš negalėčiau praleisti naujausios kartotekos modeliavimo pažangos, ypač didelės generatyvinių prieštaringų tinklų (GAN) sėkmės kuriant vaizdus. Pažvelkite į šiuos pavyzdžius: jie beveik nesiskiria nuo tikrų nuotraukų!

„BigGAN“ pavyzdžiai: https://openreview.net/pdf?id=B1xsqj09Fm

Veido kūrimo progresas nuo 2014 iki 2018 m. Taip pat yra puikus:

Aš labai džiaugiuosi šiais rezultatais, tačiau mano vidinis skeptikas visada abejoja, ar jie tikrai yra naudingi ir plačiai pritaikomi. Jau atidariau šį klausimą savo „Facebook“ užraše:

Iš esmės aš „skundžiausi“, kad nepaisant visų generatyvinių modelių galios, mes jų tikrai nenaudojame praktiškiau nei didelės raiškos veidų ar mėsainių generavimas. Be abejo, yra verslų, kurie gali būti tiesiogiai pagrįsti vaizdų generavimu ar stiliaus perdavimu (pvz., Simbolių ar lygio generavimas žaidimų pramonėje, stiliaus perkėlimas iš tikrų nuotraukų į anime avatarus), tačiau aš ieškojau daugiau sričių, kur GAN ir kiti modeliai gali būti taikomi. Taip pat norėčiau prisiminti, kad naudojant generacinius modelius galime generuoti ne tik vaizdus, ​​bet ir tekstą, garsus, balsus, muziką, struktūrizuotus duomenis, pavyzdžiui, žaidimų lygius ar narkotikų molekules, be to, yra nuostabus tinklaraščio įrašas su kitomis kartoms pritaikytomis programomis, bet čia apsiribosime pavyzdžiais, kai sintezė nėra pagrindinis tikslas.

Žaidimo lygio generavimas naudojant RNN

Šiame straipsnyje pateikiu 7 alternatyvaus naudojimo atvejus. Su kai kuriais iš jų aš jau dirbau asmeniškai ir galiu patvirtinti jų naudingumą, kiti yra tyrinėjami, bet dar nereiškia, kad jie neverta išbandyti. Visi šie generatyvinių modelių naudojimo nebūtinai kuriant pavyzdžiai gali būti pritaikyti skirtingose ​​srityse ir skirtingiems duomenims, nes mūsų pagrindinis tikslas bus ne generuoti kažką tikroviško, o panaudoti neuroninių tinklų vidines žinias naujoms užduotims atlikti.

1. Duomenų didinimas

Galbūt akivaizdžiausia programa gali būti treniruoti modelį, kad būtų galima generuoti naujus pavyzdžius iš mūsų duomenų, kad būtų galima patobulinti mūsų duomenų rinkinį. Kaip mes galime patikrinti, ar šis padidinimas tikrai kažkam padėjo? Na, yra dvi pagrindinės strategijos: galime išmokyti savo modelio „suklastotų“ duomenų ir patikrinti, ar jis veikia realiuose pavyzdžiuose. Ir atvirkščiai: mes treniruojame savo modelį pagal tikruosius duomenis, kad atliktume tam tikrą klasifikavimo užduotį ir tik patikrinę, ar jis gerai veikia sugeneruotus duomenis (GAN gerbėjai čia gali atpažinti pradinius balus). Jei tai veikia gerai abiem atvejais - galite drąsiai pridėti generatyvinio modelio pavyzdžių prie savo tikrųjų duomenų ir vėl juos perkvalifikuoti - turėtumėte tikėtis padidėjusio našumo. Norėdami, kad šis požiūris būtų dar galingesnis ir lankstesnis, patikrinkite 6 programą.

NVIDIA parodė nuostabų tokio požiūrio pavyzdį veikdamas: jie panaudojo GAN, kad padidintų įvairių ligų turinčių smegenų KT vaizdų duomenų rinkinį ir parodė, kad klasifikavimo efektyvumas naudojant tik klasikinius duomenų padidinimo duomenis davė 78,6% jautrumą ir 88,4% specifiškumą. Pridėjus sintetinių duomenų padidinimą, rezultatai padidėjo iki 85,7% jautrumo ir 92,4% specifiškumo.

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

2. Privatumo išsaugojimas

Daugelio kompanijų duomenys gali būti slapti (pvz., Finansiniai duomenys, iš kurių gaunami pinigai), konfidencialūs ar neskelbtini (medicininiai duomenys, kuriuose yra pacientų diagnozės). Bet kartais mums tai reikia pasidalyti su trečiosiomis šalimis, tokiomis kaip konsultantai ar tyrėjai. Jei norime tik pasidalyti bendra idėja apie savo duomenis, apimančius svarbiausius objektų modelius, detales ir formas, mes galime naudoti generacinius modelius tiesiogiai, kaip ir ankstesnėje pastraipoje, kad imtume savo duomenų pavyzdžius, kuriais galėtume dalintis su kitais žmonėmis. Tokiu būdu mes nesidalinsime tiksliais konfidencialiais duomenimis, tik kažkuo, kas tiksliai atrodo.

Sudėtingesnis atvejis yra tada, kai norime slapta dalintis duomenimis. Žinoma, mes turime skirtingas šifravimo schemas, tokias kaip homomorfinis šifravimas, tačiau jie turi ir trūkumų, tokių kaip 1 MB informacijos slėpimas 10 GB kode. 2016 m. „Google“ atidarė naują tyrimų kelią, kaip naudoti GAN konkurencinę sistemą šifravimo problemai spręsti, kai du tinklai turėjo konkuruoti kurdami kodą ir jį nulauždami:

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

Tačiau geriausias taškas nėra gauto kodo ar „AI“ žodžio efektyvumas kitoje srityje. Turėtume atsiminti, kad neuroninių tinklų gautose reprezentacijose vis dar yra naudingiausios informacijos apie įvesties duomenis (kai kurie iš jų netgi yra tiesiogiai mokomi turėti tokią informaciją, kaip automatiniai kodavimo įrenginiai), o iš šių suspaustų duomenų vis dar galime klasifikuoti / regresuoti / klasifikuoti. ar ko tik norime. Jei „suspaustą“ pakeisime „užšifruotu“, idėja yra aiški: tai yra puikus būdas dalytis duomenimis su trečiosiomis šalimis nieko nerodant apie duomenų rinkinį. Tai daug stipresnis dalykas nei anonimizavimas ar net suklastotų pavyzdžių generavimas ir gali būti kitas didelis dalykas (žinoma, naudojant „blockchain“, kaip jau daro „Numerai“)

3. Anomalijos nustatymas

Pagrindinius generatyvinius modelius, tokius kaip variacijos autoencoderis (VAE) arba GAN, sudaro dvi dalys. VAE turi kodavimo ir dekoderio įrenginius, kurių pirmasis modeliuoja paskirstymą, o antrasis rekonstruoja iš jo. GAN sudaro generatorius ir diskriminatorius, kur pirmasis modeliuoja paskirstymą, o antrasis vertina, jei jis artimas traukinio duomenims. Kaip matome, jie tam tikru būdu yra gana panašūs - yra modeliavimo ir sprendimo dalis (VAE galime rekonstruoti kaip tam tikrą teismo sprendimą). Modeliavimo dalis turėjo išmokti duomenų paskirstymą. Kas nutiks teisėjaujant daliai, jei pateiksime tam tikrą pavyzdį ne iš mokymo paskirstymo? Tinkamai apmokytas GAN diskriminatorius parodys mums 0, o VAE rekonstrukcijos paklaida bus didesnė už vidutinę mokymo duomenų klaidą. Štai taip: mūsų neprižiūrimas anomalijos detektorius, lengvai mokomas ir vertinamas. Ir jei norime, galime jį tiekti su kai kuriais steroidais, pavyzdžiui, statistiniais atstumais (Wasserstein GAN). Šiame dokumente galite rasti GAN, naudojamų anomalijoms aptikti, pavyzdį ir autokoderį. Aš taip pat pridedu savo neapdorotą autokoderio pagrindu veikiančio anomalijos detektoriaus eskizą Keras parašytoms laiko eilutėms:

4. Diskriminacinis modeliavimas

Viskas, ką iš tikrųjų daro gilus mokymasis, yra įvesties duomenų atvaizdavimas tam tikroje erdvėje, kur juos lengviau atskirti ar paaiškinti paprastais matematiniais modeliais, tokiais kaip SVM ar logistinė regresija. Generaciniai modeliai taip pat atlieka savo žemėlapius, pradėkime nuo VAE. „Autoencoderiai“ įvesties pavyzdį susieja su prasminga latentine erdve ir iš esmės galime išmokyti tam tikrą modelį tiesiai per jį. Ar ji turi prasmę? Ar tai skiriasi nuo to, kad tiesiog naudojate kodavimo elementus ir treniruojate modelį, kad galėtumėte tiesiogiai klasifikuoti? Iš tikrųjų yra. Autoencoderio latentinė erdvė yra sudėtingas netiesinis matmenų sumažinimas, o esant variaciniam autoencoderiui taip pat daugiamatis pasiskirstymas, kuris gali būti daug geresnis pradedant diskriminacinio modelio mokymą, nei kai kurie atsitiktiniai.

GAN yra šiek tiek sunkiau naudoti kitoms užduotims atlikti. Jie sukurti iš atsitiktinių sėklų imti mėginius ir nesitiki, kad jie pateiks bet kokią informaciją. Tačiau mes vis tiek galime juos naudoti kaip klasifikatorius bent dviem būdais. Pirmasis, jau ištirtas, yra diferenciatoriaus panaudojimas, norint sugeneruotą mėginį klasifikuoti į skirtingas klases, o ne tik pasakyti, ar jis tikras ar netikras. Iš gauto klasifikatoriaus galime tikėtis, kad jis bus geriau sureguliuotas (nes matėsi skirtingi įvesties duomenų triukšmai ir pasipiktinimai) ir turės papildomą klasę pašalinėms / anomalinėms klasėms:

https://towardsdatascience.com/semi-uzžiūrimi-mokimai-su-gans-9f3cb128c5e

Antra, tai yra nesąžiningai pamirštas požiūris į klasifikavimą pagal Bayes'o teoremą, kai modeliuojame p (c_k | x), remdamiesi p (x | c_k) (tiksliai tai, ką daro sąlyginis GAN!) Ir priešvaržimis p (x), p (c_k). Pagrindinis klausimas yra toks: ar tikrai GAN mokosi duomenų paskirstymo? Ir tai aptariama kai kuriuose naujausiuose tyrimuose.

5. Domeno pritaikymas

Tai yra vienas galingiausių, kaip ir man. Praktiškai beveik niekada neturime to paties duomenų šaltinio, kad galėtume mokyti modelius ir juos naudoti realiojoje aplinkoje. Kompiuterio matyme esant skirtingoms apšvietimo sąlygoms, fotoaparato nustatymams ar oro sąlygoms net labai tikslus modelis gali būti nenaudingas. NLP / kalbos analizėje slengas ar kirčiavimas gali sugadinti jūsų modelio, mokomo „gramatiškai teisinga“ kalba, efektyvumą. Apdorodami signalus greičiausiai turite visiškai skirtingus prietaisus duomenims fiksuoti, kad būtų galima modeliuoti ir gaminti. Tačiau taip pat galime pastebėti, kad abu duomenų „tipai“ yra labai panašūs vienas į kitą. Ir mes žinome mašininio mokymosi modelius, kurie atvaizduoja iš vienos sąlygos į kitą, išsaugodami pagrindinį turinį, tačiau keičiant detales. Taip, aš imuosi stilių perkėlimo dabar, bet mažiau kūrybiniais tikslais.

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

Pvz., Jei dirbate su programa, kuri turėtų veikti su kažkokiomis vaizdo stebėjimo kameromis, tačiau esate išmokę savo modelį naudoti aukštos skiriamosios gebos vaizdus, ​​galite pabandyti naudoti GAN, kad iš anksto apdorotų vaizdus pašalindami triukšmą ir juos patobulindami. Radikalesnį pavyzdį galiu pateikti iš signalo apdorojimo srities: yra daugybė duomenų rinkinių, susijusių su mobiliųjų telefonų pagreičio matuoklio duomenimis, apibūdinančiais skirtingas žmonių veiklas. O kas, jei norite pritaikyti savo modelius, apmokytus telefono duomenimis ant apyrankės? GAN gali padėti jums išversti įvairius judesius. Apskritai, generatyviniai modeliai, kurie generuoja ne iš triukšmo, bet kai kuriuos iš anksto nustatytus prioritetus, gali padėti pritaikyti domeną, pakeisti kovariacijos pokyčius ir kitas problemas, susijusias su duomenų skirtumais.

6. Manipuliavimas duomenimis

Apie stiliaus perkėlimą kalbėjome ankstesnėje pastraipoje. Man tai labai nepatinka, nes tai yra žemėlapio funkcija, kuri veikia visą įvestį ir ją keičia. O kas, jei norėčiau tik pakeisti nosį ant kai kurios nuotraukos? Arba pakeisite automobilio spalvą? Arba pakeiskite kai kuriuos žodžius kalboje visiškai nekeisdami? Jei norime tai padaryti, mes jau manome, kad mūsų objektą galima apibūdinti tam tikrais baigtiniais veiksniais, pavyzdžiui, veidas yra akių, nosies, plaukų, lūpų ir tt derinys ir šie veiksniai turi savo požymius (spalva , dydis ir tt). O kas, jei galėtume kai kuriuos savo vaizdo taškus susieti su nuotraukomis ... kur galime tiesiog pakoreguoti šiuos veiksnius ir padidinti nosį ar ją padidinti? Yra keletas matematinių sąvokų, kurios tai leidžia: įvairialypė hipotezė ir atskirtas vaizdas. Geros žinios mums yra tai, kad automatiniai kodavimo įrenginiai ir tikriausiai GAN leidžia mums modeliuoti paskirstymą tokiu būdu, kad tai yra šių veiksnių mišinys.

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

7. Konkurencijos treniruotės

Galbūt nesutinkate, kad aš įtraukčiau pastraipą apie mašinų mokymosi modelių išpuolius, tačiau tai turi viską daryti su generatyviniais modeliais (prieštaringų atakų algoritmai iš tiesų yra labai paprasti) ir prieštaringiais algoritmais (nes mes turime modelį, konkuruojantį su kitu). Galbūt jūs esate susipažinęs su prieštaringų pavyzdžių koncepcija: maži modelio įvesties trikdžiai (gali būti net vienas pikselis atvaizde), sukeliantys visiškai neteisingą veikimą. Kovoti su jais yra įvairių būdų, o vienas iš elementariausių yra vadinamas varžybų mokymu: iš esmės kalbama apie varžovų pavyzdžius, kad būtų galima sukurti dar tikslesnius modelius.

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

Nesigilinant į smulkmenas, tai reiškia, kad mes vis dar turime dviejų žaidėjų žaidimą: prieštaringą modelį (kuris tiesiog sukelia įvesties pasipiktinimą kai kuriais „epsilonais“), kuris turi maksimaliai padidinti savo įtaką, ir yra klasifikavimo modelis, kuris turi sumažinti jo praradimą. Panašu į GAN, bet skirtingais tikslais: padarykite modelį stabilesnį prieš konkurentų išpuolius ir pagerinkite jo veikimą dėl tam tikro intelektualaus duomenų padidinimo ir sureguliavimo.

Išimamos

Šiame straipsnyje mes matėme kelis pavyzdžius, kaip GAN ir kiti generatyviniai modeliai gali būti naudojami kur nors kitam, nei kuriant gražius vaizdus, ​​melodijas ar trumpus tekstus. Žinoma, pagrindinis jų ilgalaikis tikslas bus sukurti realaus pasaulio objektus, sąlygotus tinkamų situacijų, tačiau šiandien mes galime išnaudoti jų galimybes modeliuoti paskirstymus ir mokytis naudingų reprezentacijų, kad patobulintume dabartinius AI dujotiekius, apsaugotume duomenis, rastume anomalijas ar prisitaikytume prie dar daugiau realaus pasaulio atvejai. Tikiuosi, kad jums jie bus naudingi ir bus pritaikyti jūsų projektuose. Stebėkite!

P.S.
Sekite mane taip pat „Facebook“ AI straipsniuose, kurie yra per trumpi „Medium“, „Instagram“ asmeniniams dalykams ir „Linkedin“!