Grunnleggende AI

Hva er en Generative Adversarial Network (GAN)?

mm
Legg til Unite.AI blant dine foretrukne kilder på Google

Generative Adversarial Networks (GANs) er typer av neurale nettverksarkitekturer i stand til å generere ny data som konformerer til 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 (super oppløsning) blant andre anvendelser. Fordi GANs kan generere helt ny data, er de i forkant av 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 anvendelser.

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 distribusjonen av data, ofte lærende en Gaussisk distribusjon av data. Fordi de lærer distribusjonen av en datamengde, kan de trekke prøver fra denne lærede distribusjonen og generere ny data.

Ulike generative modeller har ulike metoder for å generere data og beregne sannsynlighetsfordeling. For eksempel fungerer 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æring-generative modeller inkluderer Gaussian Mixture Models og Latent Dirichlet Allocation (LDA). Dyp-læring-baserte generative modeller inkluderer Restricted Boltzmann Machines (RBMs), Variational Autoencoders (VAEs), og selvfølgelig 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 er faktisk to forskjellige nettverk som er koblet sammen. GANs består av to halver: en genereringsmodell og en diskrimineringsmodell, også kjent som generatoren og diskriminatoren.

GAN-arkitekturen

Generative Adversarial Networks er bygget opp av en genereringsmodell og en diskrimineringsmodell satt sammen. Jobben til genereringsmodellen er å lage nye eksempler på data, basert på mønsterene som modellen har lært fra treningsdataene. Jobben til diskrimineringsmodellen er å analysere bilder (antagelig er det trent på bilder) og bestemme om bildene er genererte/falske eller ekte.

De to modellene er satt mot hverandre, trent i en spillteoretisk måte. Genereringsmodellens mål er å produsere bilder som bedrar sin motstander – diskrimineringsmodellen. Mens diskrimineringsmodellens jobb er å overvinne sin motstander, genereringsmodellen, og fange de falske bildene som genereringsmodellen produserer. Det faktum at modellene er satt 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 feil 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 data.

Når en Gaussisk distribusjon av data har blitt laget under trening, kan genereringsmodellen brukes. Genereringsmodellen blir først matet med en tilfeldig vektor, som den transformerer basert på den Gaussiske distribusjonen. Med andre ord, vektoren seeder genereringen. Når modellen er trent, vil vektorrommet være en komprimert versjon, eller representasjon, av datadistribusjonen. 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 blir produsert av genereringsmodellen. Prosessen med å trene diskrimineringsmodellen er nøyaktig den samme som grunnleggende, binær-klassifiseringsmodell-trening.

GAN-treningsprosess

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

Til å begynne med, blir GAN trent ved å bruke 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 inn en vektor med tilfeldig numerisk data og transformerer dem basert på den Gaussiske distribusjonen, returnerer et bilde. Dette genererte bildet, sammen med noen ekte bilder fra treningsdatasettet, blir matet inn i diskrimineringsmodellen. Diskrimineringsmodellen vil rendre en sannsynlighetsprediksjon om naturen til bildene den mottar, utgangspunkt mellom 0 og 1, hvor 1 er typisk ekte bilder og 0 er et falskt bilde.

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

De generative og diskrimineringsmodellene spiller en nullsum-spill med hverandre. Et nullsum-spill er ett hvor gevinstene til en side kommer på bekostning av den andre siden (summer er null ex). Når diskrimineringsmodellen kan suksessfullt skille mellom ekte og falske eksempler, blir det ikke gjort noen endringer i diskrimineringsmodellens parametre. Men store oppdateringer blir gjort til modellens parametre når den ikke kan skille mellom ekte og falske bilder. Det motsatte er sant for genereringsmodellen, den blir straffet (og dens parametre oppdatert) når den ikke kan bedra diskrimineringsmodellen, men ellers er dens parametre uendret (eller den blir belønnet).

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

GAN-anvendelser

GANs har en rekke ulike anvendelser, de fleste av dem dreier seg om generering av bilder og komponenter av bilder. GANs brukes vanligvis i oppgaver hvor den nødvendige bilde-dataen mangler eller er begrenset på noen måte, som en metode for å generere den nødvendige dataen. 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-klassifisering, generering av nye trenings-eksempler i ulike retninger 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-gjenkjenningssystemer.

Bilde-til-bilde-oversettelse

GANs utmerker seg i bilde-oversettelse. GANs kan brukes til å farge sorte-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 det blir gitt tekst som beskriver et bilde og det tilhørende bildet, kan en GAN trening til å lage et nytt bilde når det blir gitt en beskrivelse av det ønskede bildet.

Redigering og reparasjon av bilder

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

Super-oppløsning

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

GANs kan også brukes til å reparere gamle, skadde bilder eller korrupte bilder. Super-oppløsning er prosessen med å ta et lav-oppløst bilde og sette inn flere piksler i bildet, 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.