En försiktig introduktion till Generative Adversarial Networks (GANs)

Tweet Share Share Share

Sist uppdaterad den 19 juli 2019

Generative Adversarial Networks, eller kort och gott GANs, är ett tillvägagångssätt för generativ modellering med hjälp av metoder för djupinlärning, som t.ex. konvolutionella neurala nätverk.

Generativ modellering är en oövervakad inlärningsuppgift inom maskininlärning som innebär att man automatiskt upptäcker och lär sig regelbundenheter eller mönster i indata på ett sådant sätt att modellen kan användas för att generera eller ge ut nya exempel som på ett trovärdigt sätt skulle ha kunnat dras från det ursprungliga datasetet.

GANs är ett smart sätt att träna en generativ modell genom att formulera problemet som ett övervakat inlärningsproblem med två undermodeller: generatormodellen som vi tränar för att generera nya exempel, och diskriminatormodellen som försöker klassificera exempel som antingen riktiga (från domänen) eller falska (genererade). De två modellerna tränas tillsammans i ett nollsummespel, kontradiktoriskt, tills diskriminatormodellen luras ungefär hälften av tiden, vilket innebär att generatormodellen genererar trovärdiga exempel.

GAN:er är ett spännande och snabbt föränderligt område som lever upp till löftena om generativa modeller genom sin förmåga att generera realistiska exempel inom en rad olika problemområden, framför allt i översättningsuppgifter från bild till bild, t.ex. för att översätta foton av sommar till vinter eller dag till natt, och för att generera fotorealistiska foton av objekt, scener och människor som inte ens människor kan se att de är falska.

I det här inlägget kommer du att upptäcka en försiktig introduktion till Generative Adversarial Networks, eller GANs.

När du har läst det här inlägget kommer du att känna till:

  • Kontexten för GANs, inklusive övervakad vs. oövervakad inlärning och diskriminativ vs. generativ modellering.
  • GANs är en arkitektur för automatisk träning av en generativ modell genom att behandla det oövervakade problemet som övervakat och använda både en generativ och en diskriminerande modell.
  • GANs ger en väg till sofistikerad domänspecifik dataförstärkning och en lösning på problem som kräver en generativ lösning, till exempel översättning från bild till bild.

Kicka igång ditt projekt med min nya bok Generative Adversarial Networks with Python, som innehåller steg-för-steg-handledning och Pythons källkodsfiler för alla exempel.

Vi sätter igång.

En försiktig introduktion till generativa adversariella nätverk (GANs)

En försiktig introduktion till generativa adversariella nätverk (GANs)
Foto av Barney Moss, vissa rättigheter förbehållna.

Översikt

Denna handledning är indelad i tre delar; de är:

  1. Vad är generativa modeller?
  2. Vad är generativa adversariella nätverk?
  3. Varför generativa adversariella nätverk?

Vad är generativa modeller?

I det här avsnittet kommer vi att gå igenom idén om generativa modeller och gå igenom paradigmen övervakad vs. oövervakad inlärning och diskriminerande vs. generativ modellering.

Övervakad vs. oövervakad inlärning. Oövervakad inlärning

Ett typiskt maskininlärningsproblem innebär att man använder en modell för att göra en förutsägelse, t.ex. prediktiv modellering.

Detta kräver ett träningsdataset som används för att träna en modell, bestående av flera exempel, så kallade samplingar, var och en med ingångsvariabler (X) och klassbeteckningar för utdata (y). En modell tränas genom att visa exempel på indata, låta den förutsäga utdata och korrigera modellen så att utdata mer liknar de förväntade utdata.

I den prediktiva eller övervakade inlärningen är målet att lära sig en mappning från indata x till utdata y, givet en märkt uppsättning av inmatnings- och utdatapar …

– Sidan 2, Maskinlärning: A Probabilistic Perspective, 2012.

Denna korrigering av modellen kallas i allmänhet för en övervakad form av inlärning, eller övervakad inlärning.

Exempel på övervakad inlärning

Exempel på övervakad inlärning

Exempel på problem med övervakad inlärning är klassificering och regression och exempel på algoritmer för övervakad inlärning är logistisk regression och slumpmässig skog.

Det finns ett annat paradigm för inlärning där modellen endast får indatavariablerna (X) och problemet inte har några utdatavariabler (y).

En modell konstrueras genom att extrahera eller sammanfatta mönstren i indata. Det sker ingen korrigering av modellen eftersom modellen inte förutsäger något.

Den andra huvudtypen av maskininlärning är den deskriptiva eller oövervakade inlärningsmetoden. Här får vi bara indata och målet är att hitta ”intressanta mönster” i data. Detta är ett mycket mindre väldefinierat problem, eftersom vi inte får veta vilka typer av mönster vi ska leta efter, och det finns inget uppenbart felmått att använda (till skillnad från övervakad inlärning, där vi kan jämföra vår förutsägelse av y för ett givet x med det observerade värdet).

– Sidan 2, Maskininlärning: A Probabilistic Perspective, 2012.

Denna avsaknad av korrigering kallas i allmänhet för en oövervakad form av inlärning, eller oövervakad inlärning.

Exempel på oövervakad inlärning

Exempel på oövervakad inlärning

Exempel på oövervakade inlärningsproblem är klusterbildning och generativ modellering, och exempel på oövervakade inlärningsalgoritmer är K-means och Generative Adversarial Networks.

Vill du utveckla GANs från grunden?

Ta min kostnadsfria 7-dagars snabbkurs via e-post nu (med exempelkod).

Klicka för att registrera dig och få en gratis PDF Ebook-version av kursen.

Ladda ner din kostnadsfria minikurs

Discriminativ vs. Generativ modellering

I övervakad inlärning kan vi vara intresserade av att utveckla en modell för att förutsäga en klassbeteckning givet ett exempel på ingående variabler.

Denna prediktiva modelleringsuppgift kallas klassificering.

Klassificering kallas också traditionellt för diskriminativ modellering.

… vi använder träningsdata för att hitta en diskriminerande funktion f(x) som mappar varje x direkt till en klassbeteckning, och kombinerar därmed inferens- och beslutsstegen till ett enda inlärningsproblem.

— Page 44, Pattern Recognition and Machine Learning, 2006.

This is because a model must discriminate examples of input variables across classes; it must choose or make a decision as to what class a given example belongs.

Example of Discriminative Modeling

Example of Discriminative Modeling

Alternately, unsupervised models that summarize the distribution of input variables may be able to be used to create or generate new examples in the input distribution.

As such, these types of models are referred to as generative models.

Example of Generative Modeling

Example of Generative Modeling

For example, a single variable may have a known data distribution, such as a Gaussian distribution, or bell shape. En generativ modell kan sammanfatta denna datafördelning på ett tillfredsställande sätt och sedan användas för att generera nya variabler som på ett trovärdigt sätt passar in i fördelningen av den ingående variabeln.

Ansatser som explicit eller implicit modellerar fördelningen av såväl indata som utdata kallas generativa modeller, eftersom det genom att ta stickprov från dem är möjligt att generera syntetiska datapunkter i inmatningsutrymmet.

– Sida 43, Pattern Recognition and Machine Learning, 2006.

I själva verket kan en riktigt bra generativ modell generera nya exempel som inte bara är plausibla utan omöjliga att skilja från verkliga exempel från problemområdet.

Exempel på generativa modeller

Naive Bayes är ett exempel på en generativ modell som oftare används som en diskriminerande modell.

Till exempel fungerar Naive Bayes genom att sammanfatta sannolikhetsfördelningen för varje indatavariabel och utgångsklass. När en förutsägelse görs beräknas sannolikheten för varje möjligt utfall för varje variabel, de oberoende sannolikheterna kombineras och det mest sannolika utfallet förutsägs. Omvänt kan sannolikhetsfördelningarna för varje variabel provtas för att generera nya rimliga (oberoende) egenskapsvärden.

Andra exempel på generativa modeller är Latent Dirichlet Allocation (LDA) och Gaussian Mixture Model (GMM).

Djupinlärningsmetoder kan användas som generativa modeller. Två populära exempel är Restricted Boltzmann Machine (RBM) och Deep Belief Network (DBN).

Två moderna exempel på algoritmer för generativ modellering genom djupinlärning är Variational Autoencoder (VAE) och Generative Adversarial Network (GAN).

Vad är Generative Adversarial Networks?

Generative Adversarial Networks, eller GAN, är en djupinlärningsbaserad generativ modell.

Mer allmänt sett är GAN en modellarkitektur för att träna en generativ modell, och det är vanligast att använda djupinlärningsmodeller i denna arkitektur.

GAN-arkitekturen beskrevs för första gången i en artikel från 2014 av Ian Goodfellow, et al. med titeln ”Generative Adversarial Networks.”

En standardiserad metod kallad Deep Convolutional Generative Adversarial Networks, eller DCGAN, som ledde till mer stabila modeller formaliserades senare av Alec Radford, et al. i artikeln ”Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks” från 2015.

De flesta GANs idag är åtminstone löst baserade på DCGAN-arkitekturen …

– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

GAN-modellarkitekturen omfattar två undermodeller: en generatormodell för att generera nya exempel och en diskriminatormodell för att klassificera om genererade exempel är riktiga, från domänen, eller falska, genererade av generatormodellen.

  • Generator. Modell som används för att generera nya trovärdiga exempel från problemdomänen.
  • Diskriminator. Modell som används för att klassificera exempel som riktiga (från domänen) eller falska (genererade).

Generativa antagonistiska nätverk bygger på ett spelteoretiskt scenario där generatornätverket måste tävla mot en motståndare. Generatornätet producerar direkt prover. Dess motståndare, diskriminatornätverket, försöker skilja mellan prover som dras från träningsdata och prover som dras från generatorn.

– Sidan 699, Deep Learning, 2016.

Generatormodellen

Generatormodellen tar en slumpmässig vektor med fast längd som indata och genererar ett prov i domänen.

Vektorn dras slumpmässigt från en gaussisk fördelning, och vektorn används för att sätta igång den generativa processen. Efter träning kommer punkter i detta flerdimensionella vektorrum att motsvara punkter i problemdomänen, vilket bildar en komprimerad representation av datafördelningen.

Detta vektorrum kallas ett latent rum, eller ett vektorrum som består av latenta variabler. Latenta variabler, eller dolda variabler, är de variabler som är viktiga för en domän men som inte är direkt observerbara.

En latent variabel är en slumpmässig variabel som vi inte kan observera direkt.

– Sida 67, Deep Learning, 2016.

Vi hänvisar ofta till latenta variabler, eller ett latent utrymme, som en projektion eller komprimering av en datafördelning. Det vill säga, ett latent utrymme ger en komprimering eller begrepp på hög nivå av de observerade rådata, t.ex. indatafördelningen. När det gäller GAN:s tillämpar generatormodellen mening på punkter i ett valt latent utrymme, så att nya punkter från det latenta utrymmet kan tillhandahållas generatormodellen som indata och användas för att generera nya och annorlunda utgångsexempel.

Maskinininlärningsmodeller kan lära sig det statistiska latenta utrymmet för bilder, musik och berättelser, och de kan sedan göra stickprov från detta utrymme och skapa nya konstverk med egenskaper som liknar dem som modellen har sett i sina träningsdata.

– Sidan 270, Deep Learning with Python, 2017.

Efter träningen behålls generatormodellen och används för att generera nya prover.

Exempel på GAN-generatormodellen

Exempel på GAN-generatormodellen

Diskriminatormodellen

Diskriminatormodellen tar ett exempel från domänen som indata (äkta eller genererad) och förutspår en binär klassbeteckning på äkta eller falsk (genererad).

Det verkliga exemplet kommer från träningsdatasetetet. De genererade exemplen produceras av generatormodellen.

Diskriminatorn är en normal (och välkänd) klassificeringsmodell.

Efter träningsprocessen kasseras diskriminatormodellen eftersom vi är intresserade av generatorn.

Undertiden kan generatorn användas på nytt eftersom den har lärt sig att effektivt extrahera funktioner från exempel i problemdomänen. Vissa eller alla lager för utvinning av funktioner kan användas i tillämpningar för överföringsinlärning med samma eller liknande indata.

Vi föreslår att ett sätt att bygga upp bra bildrepresentationer är att träna Generative Adversarial Networks (GANs) och senare återanvända delar av generatorn och diskriminatornätverken som funktionsextraktorer för övervakade uppgifter

– Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.

Exempel på GAN-diskriminatormodellen

Exempel på GAN-diskriminatormodellen

GAN:er som ett spel med två spelare

Genererativ modellering är ett problem med oövervakat lärande, som vi diskuterade i föregående avsnitt, även om en smart egenskap hos GAN-arkitekturen är att utbildningen av den generativa modellen är utformad som ett övervakat inlärningsproblem.

De två modellerna, generatorn och diskriminatorn, tränas tillsammans. Generatorn genererar ett antal prover och dessa, tillsammans med verkliga exempel från domänen, tillhandahålls diskriminatorn och klassificeras som äkta eller falska.

Diskriminatorn uppdateras sedan för att bli bättre på att särskilja äkta och falska prover i nästa omgång, och, vilket är viktigt, generatorn uppdateras baserat på hur väl, eller inte, de genererade proverna lurade diskriminatorn.

Vi kan se generatorn som en förfalskare som försöker tillverka falska pengar, och diskriminatorn som en polis som försöker tillåta legitima pengar och fånga falska pengar. För att lyckas i det här spelet måste förfalskaren lära sig att göra pengar som inte går att skilja från äkta pengar, och generatornätverket måste lära sig att skapa prover som dras från samma fördelning som träningsdata.

– NIPS 2016 Tutorial: På detta sätt konkurrerar de två modellerna mot varandra, de är motstridiga i spelteoretisk mening och spelar ett nollsummespel.

Eftersom GAN-ramverket naturligt kan analyseras med spelteorins verktyg kallar vi GANs för ”adversarial”.

– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

I det här fallet innebär nollsumma att när diskriminatorn lyckas identifiera riktiga och falska prover belönas den eller så behövs ingen ändring av modellparametrarna, medan generatorn bestraffas med stora uppdateringar av modellparametrarna.

Alternativt, när generatorn lurar diskriminatorn belönas den, eller så behövs ingen ändring av modellparametrarna, men diskriminatorn straffas och dess modellparametrar uppdateras.

Vid en gräns genererar generatorn varje gång perfekta kopior från inmatningsdomänen, och diskriminatorn kan inte se skillnad och förutspår ”osäkert” (t.ex. 50 % för äkta och falska) i varje enskilt fall. Detta är bara ett exempel på ett idealiserat fall; vi behöver inte komma till denna punkt för att komma fram till en användbar generatormodell.

Exempel på arkitekturen för den generativa adversariella nätverksmodellen

Exempel på arkitekturen för den generativa adversariella nätverksmodellen

driver diskriminatorn för att försöka lära sig att korrekt klassificera proverna som äkta eller falska. Samtidigt försöker generatorn lura klassificeraren att tro att dess prover är äkta. Vid konvergens är generatorns prover omöjliga att skilja från riktiga data, och diskriminatorn ger ett resultat på 1/2 överallt. Diskriminatorn kan då kasseras.

– Sidan 700, Deep Learning, 2016.

GANs och Convolutional Neural Networks

GANs arbetar vanligtvis med bilddata och använder Convolutional Neural Networks, eller CNNs, som generator- och diskriminatormodeller.

Anledningen till detta kan bero både på att den första beskrivningen av tekniken gjordes inom området datorseende och använde CNNs och bilddata, och på grund av de anmärkningsvärda framsteg som har gjorts under de senaste åren genom att använda CNNs mer generellt för att uppnå toppmoderna resultat på en rad uppgifter inom datorseende, t.ex. objektsdetektering och ansiktsigenkänning.

Modellering av bilddata innebär att det latenta utrymmet, som är indata till generatorn, ger en komprimerad representation av den uppsättning bilder eller fotografier som används för att träna modellen. Det innebär också att generatorn genererar nya bilder eller fotografier, vilket ger ett resultat som lätt kan ses och bedömas av utvecklare eller användare av modellen.

Det kan vara detta faktum framför andra, förmågan att visuellt bedöma kvaliteten på det genererade resultatet, som både har lett till fokuseringen på datorseendetillämpningar med CNN:er och till de enorma sprången i GAN:s kapacitet jämfört med andra generativa modeller, djupinlärningsbaserade eller andra.

Betingade GAN:er

En viktig utvidgning av GAN:erna är deras användning för att villkorligt generera ett resultat.

Den generativa modellen kan tränas för att generera nya exempel från inmatningsområdet, där inmatningen, den slumpmässiga vektorn från det latenta utrymmet, förses med (villkoras av) någon ytterligare inmatning.

Den ytterligare inmatningen kan vara ett klassvärde, till exempel manligt eller kvinnligt vid generering av fotografier av människor, eller en siffra, i fallet med generering av bilder av handskrivna siffror.

Generativa adversariella nät kan utvidgas till en villkorlig modell om både generatorn och diskriminatorn betingas av någon extra information y. y kan vara någon form av tilläggsinformation, t.ex. klassbeteckningar eller data från andra modaliteter. Vi kan utföra konditioneringen genom att mata in y i både diskriminatorn och generatorn som ett extra inmatningslager.

– Conditional Generative Adversarial Nets, 2014.

Diskriminatorn är också konditionerad, vilket innebär att den förses både med en inmatningsbild som antingen är äkta eller falsk och den extra inmatningen. I fallet med en betingad inmatning av typen klassificeringsetikett skulle diskriminatorn då förvänta sig att inmatningen skulle vara av den klassen, vilket i sin tur lär generatorn att generera exempel av den klassen för att lura diskriminatorn.

På detta sätt kan ett betingat GAN användas för att generera exempel från en domän av en viss typ.

Tagda ett steg längre kan GAN-modellerna betingas av ett exempel från domänen, t.ex. en bild. Detta möjliggör tillämpningar av GANs som översättning från text till bild eller från bild till bild. Detta möjliggör några av de mer imponerande tillämpningarna av GANs, t.ex. stilöverföring, färgning av foton, omvandling av foton från sommar till vinter eller från dag till natt och så vidare.

I fallet med betingade GANs för översättning från bild till bild, t.ex. omvandling från dag till natt, får diskriminatorn exempel på riktiga och genererade nattfotografier samt (betingade) riktiga dagfotografier som indata. Generatorn får en slumpmässig vektor från det latenta utrymmet samt (betingat av) verkliga foton av dagtid som indata.

Exempel på en arkitektur för en modell av ett villkorligt generativt adversariellt nätverk

Exempel på en modell av en arkitektur för ett villkorligt generativt adversariellt nätverk

Varför generativa adversariella nätverk?

En av de många stora framstegen i användningen av metoder för djupinlärning inom områden som datorseende är en teknik som kallas dataförstärkning.

Dataförstärkning resulterar i bättre presterande modeller, både genom att öka modellens skicklighet och genom att ge en reglerande effekt, vilket minskar generaliseringsfelet. Den fungerar genom att skapa nya, artificiella men trovärdiga exempel från den inmatade problemdomän som modellen tränas på.

Teknikerna är primitiva när det gäller bilddata, vilket innebär beskärningar, vändningar, zoomar och andra enkla omvandlingar av befintliga bilder i träningsdatasetetet.

En framgångsrik generativ modellering ger ett alternativt och potentiellt mer domänspecifikt tillvägagångssätt för dataaugmentering. I själva verket är dataökning en förenklad version av generativ modellering, även om den sällan beskrivs på detta sätt.

… utvidga urvalet med latenta (icke-observerade) data. Detta kallas för dataförstärkning. I andra problem är de latenta uppgifterna faktiska uppgifter som borde ha observerats men som saknas.

– Sida 276, The Elements of Statistical Learning, 2016.

I komplexa domäner eller domäner med en begränsad mängd uppgifter erbjuder generativ modellering en väg mot mer träning för modellering. GANs har haft stor framgång i detta användningsområde i domäner som djup förstärkningsinlärning.

Det finns många forskningsskäl till varför GANs är intressanta, viktiga och kräver ytterligare studier. Ian Goodfellow redogör för ett antal av dessa i sitt keynote från konferensen 2016 och den tillhörande tekniska rapporten med titeln ”NIPS 2016 Tutorial: Generative Adversarial Networks.”

Av dessa skäl lyfter han fram GANs framgångsrika förmåga att modellera högdimensionella data, hantera saknade data och GANs förmåga att ge multimodala utdata eller flera rimliga svar.

Det kanske mest övertygande användningsområdet för GANs är villkorade GANs för uppgifter som kräver generering av nya exempel. Här anger Goodfellow tre huvudsakliga exempel:

  • Superupplösning av bilder. Förmågan att generera högupplösta versioner av ingående bilder.
  • Skapa konst. Förmågan att skapa nya och konstnärliga bilder, skisser, målningar med mera.
  • Översättning från bild till bild. Förmågan att översätta fotografier över olika områden, t.ex. från dag till natt, från sommar till vinter med mera.

Den kanske mest övertygande anledningen till att GANs studeras, utvecklas och används i stor utsträckning är att de är framgångsrika. GANs har kunnat generera foton som är så realistiska att människor inte kan se att de är av objekt, scener och människor som inte existerar i verkligheten.

Ett häpnadsväckande adjektiv är inte tillräckligt för att beskriva deras förmåga och framgång.

Exempel på utvecklingen av GANs kapacitet från 2014 till 2017

Exempel på utvecklingen av GANs kapacitet från 2014 till 2017. Taget från The Malicious Use of Artificial Intelligence (Den skadliga användningen av artificiell intelligens): Forecasting, Prevention, and Mitigation, 2018.

Fördjupad läsning

Det här avsnittet innehåller fler resurser i ämnet om du vill gå djupare.

Posts

  • Best Resources for Getting Started With Generative Adversarial Networks (GANs)
  • 18 Impressive Applications of Generative Adversarial Networks (GANs)

Books

  • Chapter 20. Deep Generative Models, Deep Learning, 2016.
  • Chapter 8. Generative Deep Learning, Deep Learning with Python, 2017.
  • Machine Learning: A Probabilistic Perspective, 2012.
  • Pattern Recognition and Machine Learning, 2006.
  • The Elements of Statistical Learning, 2016.

Papers

  • Generative Adversarial Networks, 2014.
  • Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.
  • NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.
  • Conditional Generative Adversarial Nets, 2014.
  • The Malicious Use of Artificial Intelligence: Forecasting, Prevention, and Mitigation, 2018.

Artiklar

  • Generativ modell, Wikipedia.
  • Latent Variable, Wikipedia.
  • Generative Adversarial Network, Wikipedia.

Sammanfattning

I det här inlägget upptäckte du en försiktig introduktion till Generative Adversarial Networks, eller GANs.

Specifikt lärde du dig:

  • Kontext för GANs, inklusive övervakad vs. övervakad. Oövervakad inlärning och diskriminerande vs. generativ modellering.
  • ANs är en arkitektur för automatisk träning av en generativ modell genom att behandla det oövervakade problemet som övervakat och använda både en generativ och en diskriminerande modell.
  • ANs erbjuder en väg till sofistikerad domänspecifik dataförstärkning och en lösning på problem som kräver en generativ lösning, t.ex. bild-till-bild-översättning.

Do you have any questions?
Ask your questions in the comments below and I will do my best to answer.

Develop Generative Adversarial Networks Today!

Generative Adversarial Networks with Python

Develop Your GAN Models in Minutes

…with just a few lines of python code

Discover how in my new Ebook:
Generative Adversarial Networks with Python

It provides self-study tutorials and end-to-end projects on:
DCGAN, conditional GANs, image translation, Pix2Pix, CycleGAN
and much more…

Finally Bring GAN Models to your Vision Projects

Skip the Academics. Just Results.See What’s Inside

Tweet Share Share

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *