Connect with us

AI 101

Vad är en Generative Adversarial Network (GAN)?

mm

Generative Adversarial Networks (GANs) är typer av neurala nätverksarkitekturer som kan generera ny data som följer lärd mönster. GANs kan användas för att generera bilder av mänskliga ansikten eller andra föremål, för att utföra text-till-bild-översättning, för att konvertera en typ av bild till en annan och för att förbättra bildens upplösning (superupplösning) bland andra tillämpningar. Eftersom GANs kan generera helt ny data, ligger de i framkant av många av de senaste AI-systemen, tillämpningarna och forskningen. Men hur fungerar GANs egentligen? Låt oss undersöka hur GANs fungerar och titta på några av deras primära användningsområden.

Definiering av Generativa Modeller och GANs

En GAN är ett exempel på en generativ modell. De flesta AI-modeller kan delas in i en av två kategorier: övervakade och oövervakade modeller. Övervakade inlärningsmodeller används vanligtvis för att diskriminera mellan olika kategorier av indata, för att klassificera. I kontrast används oövervakade modeller vanligtvis för att sammanfatta datadistributionen, ofta genom att lära en Gaussisk distribution av data. Eftersom de lär sig datadistributionen kan de dra prover från denna lärd distribution och generera ny data.

Olika generativa modeller har olika metoder för att generera data och beräkna sannolikhetsfördelningar. Till exempel fungerar Naive Bayes-modellen genom att beräkna en sannolikhetsfördelning för de olika indatafunktionerna och den generativa klassen. När Naive Bayes-modellen ger en förutsägelse, beräknar den den mest sannolika klassen genom att ta sannolikheten för de olika variablerna och kombinera dem tillsammans. Andra icke-djupinlärningsbaserade generativa modeller inkluderar Gaussiska Blandningsmodeller och Latent Dirichlet-allokering (LDA). Djupinlärningsbaserade generativa modeller inkluderar Restriktiva Boltzmann-maskiner (RBMs), Variationella Autoencoders (VAEs) och naturligtvis GANs.

Generativa Adversarial Networks föreslogs första gången av Ian Goodfellow 2014, och de förbättrades av Alec Redford och andra forskare 2015, vilket ledde till en standardiserad arkitektur för GANs. GANs består faktiskt av två olika nätverk som är sammankopplade. GANs består av två halvor: en genereringsmodell och en diskrimineringsmodell, även kallad generatoren och diskriminatoren.

GAN-arkitekturen

Generativa Adversarial Networks är byggda av en genereringsmodell och en diskrimineringsmodell som sätts samman. Genereringsmodellens uppgift är att skapa nya exempel på data, baserat på mönster som modellen har lärt sig från träningsdata. Diskrimineringsmodellens uppgift är att analysera bilder (förutsatt att den tränas på bilder) och bestämma om bilderna är genererade/falska eller äkta.

De två modellerna är satta mot varandra, tränade på ett spelteoretiskt sätt. Genereringsmodellens mål är att producera bilder som bedrar dess motståndare – diskrimineringsmodellen. Samtidigt är diskrimineringsmodellens uppgift att övervinna sin motståndare, genereringsmodellen, och upptäcka de falska bilderna som genereringsmodellen producerar. Det faktum att modellerna är satta mot varandra resulterar i en kapprustning där båda modellerna förbättras. Diskrimineringsmodellen får feedback om vilka bilder som var äkta och vilka bilder som producerades av genereringsmodellen, medan genereringsmodellen matas med information om vilka av dess bilder som flaggades som falska av diskrimineringsmodellen. Båda modellerna förbättras under träningsprocessen, med målet att träna en genereringsmodell som kan producera falsk data som i princip är omöjlig att skilja från äkta data.

När en Gaussisk distribution av data har skapats under träningsprocessen kan den generativa modellen användas. Genereringsmodellen matas initialt med en slumpmässig vektor, som den omvandlar baserat på den Gaussiska distributionen. Med andra ord sådar vektorn generationen. När modellen är tränad kommer vektorutrymmet att vara en komprimerad version, eller representation, av datadistributionen. Den komprimerade versionen av datadistributionen kallas latenta utrymme eller latenta variabler. Senare kan GAN-modellen sedan ta den latenta utrymmesrepresentationen och dra punkter från den, som kan ges till genereringsmodellen och användas för att generera ny data som är mycket lik träningsdata.

Diskrimineringsmodellen matas med exempel från hela träningsdomänen, som består av både äkta och genererade dataexempel. De äkta exemplen finns i träningsdatasetet, medan de falska data produceras av den generativa modellen. Processen att träna diskrimineringsmodellen är exakt densamma som grundläggande binär klassificeringsmodellsträning.

GAN-träningsprocess

Låt oss undersöka hela träningsprocessen för en hypotetisk bildgenereringstask.

För att börja med tränas GAN med äkta, riktiga bilder som en del av träningsdatasetet. Detta ställer diskrimineringsmodellen att skilja mellan genererade bilder och riktiga bilder. Det producerar också datadistributionen som genereringsmodellen kommer att använda för att producera ny data.

Genereringsmodellen tar in en vektor med slumpmässiga numeriska data och omvandlar dem baserat på den Gaussiska distributionen, returnerar en bild. Dessa genererade bilder, tillsammans med några äkta bilder från träningsdatasetet, matas in i diskrimineringsmodellen. Diskrimineringsmodellen kommer att ge en sannolikhetsbaserad förutsägelse om bildernas natur, med utdata av ett värde mellan 0 och 1, där 1 vanligtvis är äkta bilder och 0 är en falsk bild.

Det finns en dubbel återkopplingsloop i spel, eftersom den grundläggande diskrimineringsmodellen matas med sanningen om bilderna, medan genereringsmodellen får feedback om dess prestation av diskrimineringsmodellen.

De generativa och diskrimineringsmodellerna spelar ett nollsummespel med varandra. Ett nollsummespel är ett spel där vinsterna för en sida kommer på bekostnad av den andra sidan (summan är båda åtgärder är noll). När diskrimineringsmodellen kan skilja mellan äkta och falska exempel, görs inga ändringar i diskrimineringsmodellens parametrar. Men stora uppdateringar görs till modellens parametrar när den misslyckas med att skilja mellan äkta och falska bilder. Det omvända är sant för den generativa modellen, den straffas (och dess parametrar uppdateras) när den misslyckas med att lura den diskriminerande modellen, men annars är dess parametrar oförändrade (eller den belönas).

Idealt sett kan genereringsmodellen förbättra sin prestation till en punkt där diskrimineringsmodellen inte kan skilja mellan de falska och äkta bilderna. Det betyder att diskrimineringsmodellen alltid kommer att ge sannolikheter på 50 % för äkta och falska bilder, vilket innebär att de genererade bilderna bör vara omöjliga att skilja från de äkta bilderna. I praktiken kommer GANs vanligtvis inte att nå denna punkt. Men den generativa modellen behöver inte skapa perfekt lika bilder för att fortfarande vara användbar för de många uppgifter som GANs används för.

GAN-tillämpningar

GANs har ett antal olika tillämpningar, de flesta av dem kretsar kring generationen av bilder och komponenter i bilder. GANs används vanligtvis i uppgifter där den erforderliga bildinformationen saknas eller är begränsad på något sätt, som en metod för att generera den erforderliga datan. Låt oss undersöka några av de vanliga användningsfallen för GANs.

Generera nya exempel för dataset

GANs kan användas för att generera nya exempel för enkla bild dataset. Om du bara har ett fåtal träningsexempel och behöver fler, kan GANs användas för att generera ny träningsdata för en bildklassificerare, generera nya träningsexempel i olika vinklar och riktningar.

Generera unika mänskliga ansikten

Kvinnan på den här bilden finns inte. Bilden genererades av StyleGAN. Foto: Owlsmcgee via Wikimedia Commons, Public Domain (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

När de är tillräckligt tränade kan GANs användas för att generera extremt realistiska bilder av mänskliga ansikten. Dessa genererade bilder kan användas för att hjälpa till att träna ansiktsigenkänningsystem.

Bild-till-bild-översättning

GANs är bra på bildöversättning. GANs kan användas för att färga svartvita bilder, översätta skisser eller teckningar till fotografiska bilder eller konvertera bilder från dag till natt.

Text-till-bild-översättning

Text-till-bild-översättning är möjlig med hjälp av GANs. När du får text som beskriver en bild och den medföljande bilden, kan en GAN tränas för att skapa en ny bild när du får en beskrivning av den önskade bilden.

Redigera och reparera bilder

GANs kan användas för att redigera befintliga fotografier. GANs kan ta bort element som regn eller snö från en bild, men de kan också användas för att reparera gamla, skadade bilder eller skadade bilder.

Superupplösning

Superupplösning är processen att ta en bild med låg upplösning och infoga fler pixlar i bilden, förbättra upplösningen på den bilden. GANs kan tränas för att ta en bild och generera en högupplöst version av den bilden.

Blogger och programmerare med specialområden inom Machine Learning och Deep Learning ämnen. Daniel hoppas på att hjälpa andra att använda kraften från AI för socialt väl.