Connect with us

AI 101

Hva er en Generative Adversarial Network (GAN)?

mm

Generative Adversarial Networks (GANs) er typer av neurale nettverksarkitekturer i stand til å generere ny data som samsvarer med lært mønster. GANs kan brukes til å generere bilder av menneskeansikter eller andre objekter, til å utføre tekst-til-bilde-oversettelse, til å konvertere en type bilde til en annen, og til å forbedre oppløsningen av bilder (superoppløsning) blant andre anvendelser. Fordi GANs kan generere helt ny data, er de i spissen for mange banebrytende AI-systemer, applikasjoner og forskning. Men hvordan fungerer GANs egentlig? La oss utforske hvordan GANs fungerer og se på noen av deres primære bruksområder.

Definering av generative modeller og GANs

En GAN er et eksempel på en generativ modell. De fleste AI-modeller kan deles inn i en av to kategorier: overvåket og uovervåket modeller. Overvåkede modeller brukes vanligvis til å diskriminere mellom ulike kategorier av inndata, til å klassifisere. I motsetning brukes uovervåkede modeller vanligvis til å summerere datadistribusjonen, ofte ved å lære en normalfordeling av dataene. Fordi de lærer datadistribusjonen, kan de trekke prøver fra denne distribusjonen og generere ny data.

Forskjellige generative modeller har forskjellige metoder for å generere data og beregne sannsynlighetsfordelinger. For eksempel opererer Naive Bayes-modellen ved å beregne en sannsynlighetsfordeling for de ulike inndataegenskapene og den generative klassen. Når Naive Bayes-modellen renderer en prediksjon, beregner den den mest sannsynlige klassen ved å ta sannsynligheten av de ulike variablene og kombinere dem sammen. Andre ikke-dyp-lærings-generative modeller inkluderer Gaussian Mixture Models og Latent Dirichlet Allocation (LDA). Dyp-lærings-baserte generative modeller inkluderer Restricted Boltzmann Machines (RBMs), Variational Autoencoders (VAEs), og naturligvis GANs.

Generative Adversarial Networks ble først foreslått av Ian Goodfellow i 2014, og de ble forbedret av Alec Redford og andre forskere i 2015, noe som ledet til en standardisert arkitektur for GANs. GANs består faktisk av to forskjellige nettverk som er koblet sammen. GANs består av to halvdeler: en genereringsmodell og en diskrimineringsmodell, også kjent som generatoren og diskriminatoren.

GAN-arkitekturen

Generative Adversarial Networks er bygget av en genereringsmodell og diskrimineringsmodell sammen. Genereringsmodellens jobb er å lage nye eksempler på data basert på mønsterene modellen har lært fra treningsdataene. Diskrimineringsmodellens jobb er å analysere bilder (antageligvis hvis den er trent på bilder) og bestemme om bildene er generert/falske eller ekte.

De to modellene er satt opp mot hverandre, trent i en spillteoretisk måte. Genereringsmodellens mål er å produsere bilder som bedrar motstanderen – diskrimineringsmodellen. Samtidig er diskrimineringsmodellens jobb å overvinne motstanderen, genereringsmodellen, og fange de falske bildene som genereringsmodellen produserer. Det faktum at modellene er satt opp mot hverandre resulterer i en våpenkappløp hvor begge modeller forbedrer seg. Diskrimineringsmodellen får tilbakemelding om hvilke bilder som var ekte og hvilke bilder som ble produsert av genereringsmodellen, mens genereringsmodellen får informasjon om hvilke av dens bilder som ble flagget som falske av diskrimineringsmodellen. Begge modeller forbedrer seg under trening, med målet om å trene en genereringsmodell som kan produsere falsk data som er nesten umulig å skille fra ekte, genuint data.

Når en normalfordeling av data har blitt laget under trening, kan genereringsmodellen brukes. Genereringsmodellen blir først matet med en tilfeldig vektor, som den transformerer basert på normalfordelingen. Med andre ord, vektoren seeder genereringen. Når modellen er trent, vil vektorrommet være en komprimert versjon, eller representasjon, av datadistribusjonens normalfordeling. Den komprimerte versjonen av datadistribusjonen kalles latent rom, eller latente variabler. Senere kan GAN-modellen så ta latent rom-representasjonen og tegne punkter fra den, som kan gis til genereringsmodellen og brukes til å generere ny data som er svært lik treningsdataene.

Diskrimineringsmodellen blir matet med eksempler fra hele treningsdomenet, som består av både ekte og genererte dataeksempler. De ekte eksemplene er inneholdt i treningsdatasettet, mens de falske dataene produseres av genereringsmodellen. Prosessen med å trene diskrimineringsmodellen er akkurat den samme som grunnleggende, binær-klassifiseringsmodell-trening.

GAN-treningprosess

La oss se på hele treningprosessen prosessen for en hypotetisk bilde-genereringsoppgave.

For å begynne med, blir GAN trent ved hjelp av ekte, virkelige bilder som en del av treningsdatasettet. Dette setter opp diskrimineringsmodellen til å skille mellom genererte bilder og ekte bilder. Det produserer også datadistribusjonen som genereringsmodellen vil bruke til å produsere ny data.

Genereringsmodellen tar imot en vektor med tilfeldig numerisk data og transformerer dem basert på normalfordelingen, og returnerer et bilde. Dette genererte bildet, sammen med noen ekte bilder fra treningsdatasettet, blir matet inn i diskrimineringsmodellen. Diskrimineringsmodellen vil rendre en sannsynlighetsprediksjon om bildets natur, og utgangen blir en verdi mellom 0 og 1, hvor 1 vanligvis er ekte bilder og 0 er et falskt bilde.

Det er en dobbel tilbakemeldingsløkke i spill, da diskrimineringsmodellen blir matet med bakgrunnsbildet av bildene, mens genereringsmodellen blir gitt tilbakemelding om dens ytelse av diskrimineringsmodellen.

De generative og diskrimineringsmodellene spiller en nullsumspill mot hverandre. Et nullsumspill er ett hvor gevinstene for en side kommer på bekostning av den andre siden (summen er null ex). Når diskrimineringsmodellen kan skille mellom ekte og falske eksempler, gjøres det ingen endringer i diskrimineringsmodellens parametre. Imidlertid gjøres store oppdateringer i modellens parametre når den ikke kan skille mellom ekte og falske bilder. Det motsatte er sant for genereringsmodellen, den straffes (og dens parametre oppdateres) når den ikke kan bedra diskrimineringsmodellen, men ellers er dens parametre uendret (eller den blir belønnet).

Ideelt sett kan genereringsmodellen forbedre sin ytelse til et punkt hvor diskrimineringsmodellen ikke kan skille mellom de falske og ekte bildene. Dette betyr at diskrimineringsmodellen alltid vil rendre sannsynligheter på 50 % for ekte og falske bilder, noe som betyr at de genererte bildene skal være umulig å skille fra de ekte bildene. I praksis når GANs vanligvis ikke dette punktet. Imidlertid trenger genereringsmodellen ikke å produsere perfekt like bilder for å likevel være nyttig for de mange oppgavene GANs brukes til.

GAN-applikasjoner

GANs har en rekke forskjellige applikasjoner, de fleste av dem dreier seg om generering av bilder og komponenter av bilder. GANs brukes vanligvis i oppgaver hvor de nødvendige bilde-dataene mangler eller er begrenset på noen måte, som en metode for å generere de nødvendige dataene. La oss se på noen av de vanlige bruksområdene for GANs.

Generering av nye eksempler for datasett

GANs kan brukes til å generere nye eksempler for enkle bilde-datasett. Hvis du bare har et håndfull trenings-eksempler og trenger flere av dem, kan GANs brukes til å generere ny treningsdata for en bilde-klassifiserer, og generere nye trenings-eksempler i forskjellige orienteringer og vinkler.

Generering av unike menneskeansikter

Kvinnen på dette bildet eksisterer ikke. Bildet ble generert av StyleGAN. Foto: Owlsmcgee via Wikimedia Commons, Public Domain (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

Når de er tilstrekkelig trent, kan GANs brukes til å generere ekstremt realistiske bilder av menneskeansikter. Disse genererte bildene kan brukes til å hjelpe med å trene ansikts-gjenkjennelsessystemer.

Bilde-til-bilde-oversettelse

GANs utmerker seg i bilde-oversettelse. GANs kan brukes til å fargelegge svart-hvite bilder, oversette skisser eller tegninger til fotografiske bilder, eller konvertere bilder fra dag til natt.

Tekst-til-bilde-oversettelse

Tekst-til-bilde-oversettelse er mulig gjennom bruk av GANs. Når de blir gitt tekst som beskriver et bilde og det tilhørende bildet, kan en GAN trene å lage et nytt bilde når de blir gitt en beskrivelse av det ønskede bildet.

Redigering og reparasjon av bilder

GANs kan brukes til å redigere eksisterende fotografier. GANs kan fjerne elementer som regn eller snø fra et bilde, men de kan også brukes til å reparere gamle, skadde bilder eller korrupte bilder.

Superoppløsning

Superoppløsning er prosessen med å ta et lavoppløst bilde og sette inn flere piksler i bildet, og forbedre oppløsningen av bildet. GANs kan trenes til å ta et bilde og generere en høyere-oppløst versjon av bildet.

Blogger og programmerer med spesialområder i Machine Learning og Deep Learning emner. Daniel håper å hjelpe andre med å bruke kraften av AI for sosialt godt.