Van pionier naar gevestigde orde: neurale netwerken en data sets
Drie jaar geleden begon ik mijn afstudeeropdracht. Voor mij als data scientist klonk dat niet al te ingewikkeld: ontwikkel een GAN (Generative Adversarial Network) for Tabular Data. Dat is een ingewikkelde manier om te zeggen dat je twee neurale netwerken traint om nieuwe data te generen. Dit klinkt misschien nog steeds ingewikkeld, daarom heb ik onderaan de pagina een GAN voor Dummies gemaakt met meer uitleg.

Voor nu is het handig om te weten dat met GAN op basis van een bestaande tabel een volledige nieuwe set aan gegevens wordt geproduceerd. Deze nieuwe tabel is geen kopie van de originele tabel, maar voldoet wel aan dezelfde statistische verdeling en geeft ook een goede representatie van alle verbanden die de originele tabel bevat. Maar deze bevat dus geen kenmerken die herleidbaar zijn naar individuen. Uiteindelijk ben ik hier ruim een half jaar mee bezig geweest. Tijdens dat halve jaar werd de kracht van ‘open source’ programming mij heel duidelijk. Binnen Whayle was ik de enige die met een GAN bezig was, maar online waren er nog veel meer mensen die hun GAN, problemen en oplossingen publiceerden. Het stereotype programmeur die als een soort kluizenaar in zijn eentje op een zolderkamertje achter een computer zit, bleek niet waar te zijn. Er bestaat een hele online gemeenschap van mensen die allemaal hun bevindingen met elkaar delen en zo anderen helpen met het oplossen van technische problemen als ‘mode collapse’. Zonder gebruik te maken van deze inzichten van anderen, was het mij wellicht nooit gelukt om een werkende GAN te bouwen.

Het stereotype programmeur die als een soort kluizenaar in zijn eentje op een zolderkamertje achter een computer zit, bleek niet waar te zijn.

Uiteindelijk had ik een werkend prototype van een ‘GAN for tabular data’. Ik heb mijn verslag geschreven, mijn bevindingen gepresenteerd en ben vervolgens aan het werk gegaan met een heleboel andere problemen dan de GAN. Een paar maanden geleden, ruim twee jaar na het afronden van mijn thesis was ik opeens weer benieuwd hoe ver de techniek nou ontwikkeld zou zijn. Even googelen leerde mij dat er echt een verbazingwekkende vooruitgang is geboekt. Er zijn ondertussen meerdere kant-en-klare packages te vinden waarmee je binnen een dag (waarschijnlijk eerder twee of drie) een eigen werkende GAN zou moeten hebben. Als ik nu een GAN zou willen toepassen, zou ik ook niet mijn eigen GAN weer afstoffen, maar zonder twijfel voor een van deze packages gaan. Dat klinkt misschien alsof het destijds zonde van de tijd is geweest, maar zo zie ik het niet. Terwijl ik mijn GAN aan het bouwen was, was dit een hele nieuwe en geavanceerde techniek, nog haast niet getest in de praktijk. Ik was onderdeel van een hele groep mensen die samen het wiel wilden uitvinden om vervolgens een auto te kunnen bouwen. Ondertussen is deze techniek veel verder gebracht, en kan je direct van de fabriek een kant-en-klare auto krijgen. De auto die ik destijds uit losse onderdelen in elkaar heb gezet, is nog steeds leuk om naar te kijken, maar niet echt veilig om in te rijden. Tijdens het bouwen heb ik wel een heleboel over alle verschillende onderdelen en de werking hiervan geleerd. Doordat ik deze auto helemaal zelf vanuit het niets heb opgebouwd, weet ik ook veel beter wat er onder de motorkap gebeurt bij die fabrieksauto en wat er allemaal mis kan gaan bij gebruik er van. En dat helpt dan weer enorm bij het oplossen van deze problemen!

GAN voor dummies

Een GAN bestaat uit 2 neurale netwerken: de Generator en de Discriminator. Samen kan je ze eigenlijk vergelijken met een groep geldvervalsers (de Generator) en de politie (de Discriminator) die probeert om het valse geld (de gegenereerde data) van het echte geld (de originele data) te onderscheiden en de geldvervalsers te betrappen. Er is hier wel sprake van een vrij bijzondere situatie: wanneer het trainen begint, hebben zowel de geldvervalsers als de politie allebei nog nooit echt geld gezien. Je kan je voorstellen dat het geld dat de vervalsers maken in eerste instantie heel erg slecht is en absoluut niet lijkt op echt geld. De politie heeft echter ook nog geen idee waar ze op moeten letten. De politie krijgt een heleboel geld voorgeschoteld en zal in het begin willekeurig gokken of het geld echt is, of dat het vals is. Daarnaast is er gelukkig nog een derde partij die precies weet welk geld echt is en welk geld niet, en die partij vertelt de politie wanneer ze het goed of fout hebben. Zo wordt de politie steeds beter in het herkennen van echt en vals geld. De geldvervalsers leren echter weer van de politie: zij krijgen ook steeds door of ze betrapt worden of niet. Hierdoor worden de geldvervalsers weer steeds beter in het vervalsen van geld. In dit verhaaltje staan wij niet aan de kant van de politie, maar aan de kant van de geldvervalsers: we willen dat het valse geld (of de ‘valse data’) zo goed wordt, dat deze amper nog te onderscheiden valt van het echte geld.

Brandende vraag of mooi compliment? Stuur Sophie een bericht!

Meer insights

Home 9 Business Consulting 9 Van pionier naar gevestigde orde: neurale netwerken en data sets