stomp Wat is een Generative Adversarial Network (GAN)? - Verenig AI
Verbind je met ons

AI 101

Wat is een Generative Adversarial Network (GAN)?

mm
Bijgewerkt on

Generatieve tegengestelde netwerken (GAN's) zijn typen neurale netwerkarchitecturen in staat om nieuwe gegevens te genereren die zich conformeert aan aangeleerde patronen. GAN's kunnen onder andere worden gebruikt om afbeeldingen van menselijke gezichten of andere objecten te genereren, tekst-naar-beeldvertaling uit te voeren, het ene type afbeelding naar het andere om te zetten en de resolutie van afbeeldingen te verbeteren (superresolutie). Omdat GAN's volledig nieuwe gegevens kunnen genereren, staan ​​ze aan het hoofd van veel geavanceerde AI-systemen, toepassingen en onderzoek. Maar hoe werken GAN's precies? Laten we eens kijken hoe GAN's werken en enkele van hun primaire toepassingen bekijken.

Generatieve modellen en GAN's definiëren

Een GAN is een voorbeeld van een generatief model. De meeste AI-modellen kunnen worden onderverdeeld in twee categorieën: modellen onder toezicht en modellen zonder toezicht. Gesuperviseerde leermodellen worden meestal gebruikt om onderscheid te maken tussen verschillende categorieën invoer, om te classificeren. Daarentegen worden modellen zonder toezicht meestal gebruikt om de distributie van gegevens samen te vatten, waarbij vaak wordt geleerd een Gaussische verdeling van de gegevens. Omdat ze de distributie van een dataset leren, kunnen ze steekproeven trekken uit deze geleerde distributie en nieuwe gegevens genereren.

Verschillende generatieve modellen hebben verschillende methoden voor het genereren van gegevens en het berekenen van kansverdelingen. Bijvoorbeeld de Naïef Bayes-model werkt door een kansverdeling te berekenen voor de verschillende invoerkenmerken en de generatieve klasse. Wanneer het Naive Bayes-model een voorspelling geeft, berekent het de meest waarschijnlijke klasse door de waarschijnlijkheid van de verschillende variabelen te nemen en ze samen te combineren. Andere niet-deep learning generatieve modellen zijn onder meer Gaussian Mixture Models en Latent Dirichlet Allocation (LDA). Op diep leunen gebaseerde generatieve modellen omvatten Beperkte Boltzmann-machines (RBM's), Variationele autoencoders (VAE's), en natuurlijk GAN's.

Generatieve vijandige netwerken waren voor het eerst voorgesteld door Ian Goodfellow in 2014, en ze werden in 2015 verbeterd door Alec Redford en andere onderzoekers, wat leidde tot een gestandaardiseerde architectuur voor GAN's. GAN's zijn eigenlijk twee verschillende netwerken die met elkaar zijn verbonden. GAN's zijn samengesteld uit twee helften: een generatiemodel en een discriminatiemodel, ook wel de generator en de discriminator genoemd.

De GAN-architectuur

Generatieve vijandige netwerken zijn dat wel opgebouwd uit een generatormodel en een discriminatormodel samen. De taak van het generatormodel is om nieuwe voorbeelden van gegevens te maken op basis van de patronen die het model heeft geleerd van de trainingsgegevens. De taak van het discriminatormodel is om afbeeldingen te analyseren (ervan uitgaande dat het op afbeeldingen is getraind) en te bepalen of de afbeeldingen gegenereerd/nep of echt zijn.

De twee modellen nemen het tegen elkaar op, getraind op een speltheoretische manier. Het doel van het generatormodel is om beelden te produceren die de tegenstander – het discriminatormodel – misleiden. Ondertussen is het de taak van het discriminatormodel om zijn tegenstander, het generatormodel, te overwinnen en de nepbeelden te vangen die de generator produceert. Het feit dat de modellen het tegen elkaar opnemen, resulteert in een wapenwedloop waarin beide modellen verbeteren. De discriminator krijgt feedback over welke afbeeldingen echt waren en welke afbeeldingen door de generator zijn geproduceerd, terwijl de generator informatie krijgt over welke van zijn afbeeldingen door de discriminator als onwaar zijn gemarkeerd. Beide modellen verbeteren tijdens de training, met als doel een generatiemodel te trainen dat nepgegevens kan produceren die in wezen niet te onderscheiden zijn van echte, echte gegevens.

Nadat tijdens de training een Gaussiaanse verdeling van gegevens is gemaakt, kan het generatieve model worden gebruikt. Het generatormodel krijgt aanvankelijk een willekeurige vector toegevoerd, die het transformeert op basis van de Gauss-verdeling. Met andere woorden, de vector zaait de generatie. Wanneer het model is getraind, is de vectorruimte een gecomprimeerde versie of representatie van de Gaussiaanse verdeling van de gegevens. De gecomprimeerde versie van de gegevensdistributie wordt latente ruimte of latente variabelen genoemd. Later kan het GAN-model de representatie van de latente ruimte nemen en er punten uit trekken, die aan het generatiemodel kunnen worden gegeven en kunnen worden gebruikt om nieuwe gegevens te genereren die sterk lijken op de trainingsgegevens.

Het discriminatormodel wordt gevoed met voorbeelden uit het hele trainingsdomein, dat bestaat uit zowel echte als gegenereerde datavoorbeelden. De echte voorbeelden zijn opgenomen in de trainingsgegevensset, terwijl de nepgegevens worden geproduceerd door het generatieve model. Het proces van het trainen van het discriminatormodel is precies hetzelfde als de basistraining van het binaire classificatiemodel.

GAN-trainingsproces

Laten we het geheel eens bekijken opleiding voor een hypothetische taak voor het genereren van afbeeldingen.

Om te beginnen wordt de GAN getraind met behulp van echte, echte afbeeldingen als onderdeel van de trainingsdataset. Dit stelt het discriminatormodel in om onderscheid te maken tussen gegenereerde afbeeldingen en echte afbeeldingen. Het produceert ook de gegevensdistributie die de generator zal gebruiken om nieuwe gegevens te produceren.

De generator neemt een vector van willekeurige numerieke gegevens op en transformeert deze op basis van de Gauss-verdeling, waarbij een afbeelding wordt geretourneerd. Deze gegenereerde afbeeldingen worden, samen met enkele echte afbeeldingen uit de trainingsdataset, ingevoerd in het discriminatormodel. De discriminator zal een probabilistische voorspelling doen over de aard van de beelden die hij ontvangt, met een waarde tussen 0 en 1, waarbij 1 typisch authentieke beelden is en 0 een nepbeeld is.

Er is een dubbele feedbacklus in het spel, aangezien de gronddiscriminator de grondwaarheid van de beelden krijgt, terwijl de generator feedback krijgt over zijn prestaties door de discriminator.

De generatieve en discriminatiemodellen spelen een nulsomspel met elkaar. Een nulsomspel is een spel waarbij de winst van de ene partij ten koste gaat van de andere partij (de som van beide acties is nul ex). Wanneer het discriminatormodel met succes onderscheid kan maken tussen echte en nepvoorbeelden, worden er geen wijzigingen aangebracht in de parameters van de discriminator. Er worden echter grote updates aangebracht in de parameters van het model wanneer het geen onderscheid kan maken tussen echte en valse afbeeldingen. Het omgekeerde is waar voor het generatieve model, het wordt bestraft (en de parameters worden bijgewerkt) wanneer het er niet in slaagt het discriminerende model voor de gek te houden, maar verder blijven de parameters ongewijzigd (of wordt het beloond).

Idealiter kan de generator zijn prestaties verbeteren tot een punt waarop de discriminator geen onderscheid kan maken tussen de nep- en echte beelden. Dit betekent dat de discriminator altijd waarschijnlijkheden van 50% weergeeft voor echte en valse afbeeldingen, wat betekent dat de gegenereerde afbeeldingen niet te onderscheiden moeten zijn van de echte afbeeldingen. In de praktijk zullen GAN's dit punt meestal niet bereiken. Het generatieve model hoeft echter geen perfect vergelijkbare afbeeldingen te maken om nog steeds bruikbaar te zijn voor de vele taken waarvoor GAN's worden gebruikt.

GAN-toepassingen

GAN's hebben een aantal verschillende toepassingen, waarvan de meeste draaien om het genereren van afbeeldingen en componenten van afbeeldingen. GAN's worden vaak gebruikt bij taken waarbij de vereiste afbeeldingsgegevens ontbreken of in een bepaalde capaciteit beperkt zijn, als een methode om de vereiste gegevens te genereren. Laten we eens kijken naar enkele veelvoorkomende use-cases voor GAN's.

Genereren van nieuwe voorbeelden voor datasets

GAN's kunnen worden gebruikt om nieuwe voorbeelden te genereren voor eenvoudige beelddatasets. Als je slechts een handvol trainingsvoorbeelden hebt en er meer nodig hebt, kunnen GAN's worden gebruikt om nieuwe trainingsgegevens voor een beeldclassificatie te genereren, waardoor nieuwe trainingsvoorbeelden worden gegenereerd met verschillende oriëntaties en hoeken.

Unieke menselijke gezichten genereren

De vrouw op deze foto bestaat niet. De afbeelding is gegenereerd door StyleGAN. Foto: Owlsmcgee via Wikimedia Commons, Public Domain (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

Mits voldoende getraind, kunnen GAN's eraan gewend zijn extreem realistische afbeeldingen van menselijke gezichten genereren. Deze gegenereerde afbeeldingen kunnen worden gebruikt om gezichtsherkenningssystemen te helpen trainen.

Beeld-naar-beeld vertaling

GAN blink uit in beeldvertaling. GAN's kunnen worden gebruikt om zwart-witafbeeldingen in te kleuren, schetsen of tekeningen om te zetten in fotografische afbeeldingen of afbeeldingen van dag naar nacht om te zetten.

Vertaling van tekst naar afbeelding

Tekst-naar-beeld vertaling is mogelijk door het gebruik van GAN's. Indien voorzien van tekst die een afbeelding en de bijbehorende afbeelding beschrijft, kan een GAN dat wel worden getraind om een ​​nieuw beeld te creëren indien voorzien van een beschrijving van de gewenste afbeelding.

Afbeeldingen bewerken en repareren

GAN's kunnen worden gebruikt om bestaande foto's te bewerken. GAN's verwijder elementen zoals regen of sneeuw van een afbeelding, maar ze kunnen ook worden gebruikt om repareer oude, beschadigde afbeeldingen of beschadigde afbeeldingen. 

Super resolutie

Superresolutie is het proces waarbij een afbeelding met een lage resolutie wordt gemaakt en meer pixels in de afbeelding worden ingevoegd, waardoor de resolutie van die afbeelding wordt verbeterd. GAN's kunnen worden getraind om een ​​afbeelding te maken een versie met een hogere resolutie van die afbeelding genereren. 

Blogger en programmeur met specialiteiten in Machine leren en Diepe leren onderwerpen. Daniel hoopt anderen te helpen de kracht van AI te gebruiken voor maatschappelijk welzijn.