Synthetic Data

Data is het fundament van (statistische) analyse en artificiële intelligentie, en vaak ook de belangrijkste bottleneck. Goede data kan moeilijk of duur zijn om te verzamelen, en daarnaast zijn er ook privacy-verzuchtingen als de data verband houdt met personen. De GDPR legt op Europees niveau hoge standaarden op voor dataverzameling en -beheer, met als doel de consument te beschermen tegen misbruik.

Dit maakt het werk van de datawetenschapper of -analist er niet gemakkelijker op. Even een (deel van een) dataset hergebruiken voor een experiment, zelfs al blijft alles intern, is niet zomaar mogelijk. Strikt genomen mag ook het testen van software die persoonsgegevens moet verwerken, niet gebeuren met echte persoonsgegevens als die personen daar niet expliciet mee ingestemd hebben.

Mede daarom vindt het concept van “synthetic data” opgang. Om niet te moeten werken met echte gegevens, is het doel daarbij om een dataset te maken van fictieve gegevens, die de statistische eigenschappen van de oorspronkelijke gegevens simuleert. Dat kan eventueel ook toegepast worden op slechts een deel van een dataset, bijvoorbeeld om een dataset beter te balanceren, of om de onderdelen met privacygevoelige gegevens te maskeren of anonimiseren. Synthetische data kunnen ook nuttig zijn als simulatieomgeving voor het ontwikkelen van machine learning toepassingen.

Data genereren

Het aanmaken van data kan niet zomaar willekeurig gebeuren. Wat je kan wijzigen en hoe je het wijzigt hangt immers af van wat je er mee wil doen. Neem als praktisch voorbeeld het Belgische rijksregister. Dat bevat van iedere Belg o.a. de woonplaats. Stel dat we een fictief rijksregister aanmaken met 11 miljoen fictieve Belgen om een toepassing te testen die gelinkt moet worden aan het rijksregister. Je kan je wel inbeelden dat het in sommige toepassingen noodzakelijk is dat een opgegeven adres ook effectief bestaat, terwijl dat ergens anders misschien helemaal niet belangrijk is. Waar je dus voor de ene toepassing fictieve steden met fictieve straten zal kunnen genereren (pakweg de Gobelijnstraat in Zonnedorp), zal het voor andere toepassingen wel belangrijk zijn dat de adressen wel bestaan en voorkomen in de officiële databases van adressen en straten.

Daarnaast kan het nodig zijn ook de distributie van sommige gegevens te behouden. Dit is vaak zo bij ongelijk verdeelde kenmerken, zoals bloedgroep. Of nog een ander voorbeeld: als gemeentelijke bevolkingsaantallen een belangrijk te behouden aspect zijn, zal een synthetische dataset evenveel fictieve Antwerpenaren moeten bevatten als er ook echt wonen, misschien zelfs correct verdeeld over de districten en/of wijken als de toepassing daarom vraagt.

Datasaurus Dozen
De “Datasaurus Dozen” toont 12 patronen met dezelfde statistische eigenschappen, wat aantoont dat het belangrijk is rekening te houden met meer dan dat alleen. Afbeelding (c) Justin Matejka & George Fitzmaurice, “Same Stats, Different Graphs: Generating Datasets with Varied Appearance and Identical Statistics through Simulated Annealing”, 2017, beschikbaar als open data

Wat betreft demografische data bestaan er enkele kant en klare tools waarmee een dataset gegenereerd kan worden – we denken aan Synthpop of Faker. Deze hebben eerst toegang nodig tot de bestaande gegevens om daar een analyse van te maken, zoals welke voornamen en achternamen voorkomen in welke hoeveelheden, en of er bepaalde correlaties bestaan in de gegevens (een typisch voorbeeld is de correlatie tussen voornaam en geslacht). Na deze analysefase kan dan een synthesefase volgen om een fictieve demografische dataset op te stellen. Deze manier van werken wordt ook gevolgd door algemenere tools zoals DTM Data Generator.

Anonimisering

Synthetische data wordt ook aangemaakt om de privacy te beschermen van de burger. Dit is bijvoorbeeld nuttig in epidemiologische studies. Een onderzoeker wil daarvoor toegang hebben tot de verzameling van medische dossiers in een bepaalde regio, om te bekijken hoe de verspreiding van een besmettelijke ziekte verloopt. Het spreekt voor zich dat de privacy van iedere patiënt gewaarborgd moet zijn: de onderzoeker in kwestie mag geen individuele medische gegevens inzien.

Zulke gegevens worden daarom vaak geaggregeerd gepubliceerd: samengeteld in grotere groepen, of in histogrammen, waarbinnen een enkel individu niet meer te identificeren is. Maar dat is niet altijd evident: stel dat een persoon mazelen heeft maar daarbovenop ook een zeldzame ziekte waarvan slechts 1 geval bekend is in die regio. Dan mag je nog de naam, leeftijd en geslacht verwijderen uit het bestand: iemand met de nodige achtergrondkennis kan achterhalen over wie het gaat. Er mag dus geen enkele unieke combinatie van gegevens voorkomen in een dataset wil ze een zekere mate van anonimiteit kunnen waarborgen (de veralgemening van dit principe staat bekend als k-anonimiteit). Dit wordt al snel moeilijker te verwezenlijken naarmate een dataset meer velden bevat of ongebalanceerder is.

Een volledig synthetische dataset kan wel een interessante oplossing bieden: zelfs als die de statistische eigenschappen nabootst van de reële data, dan nog is eender welk geïdentificeerd persoon sowieso onbestaand. SyntheticMass is zo’n dataset van 1 miljoen fictieve inwoners van Massachussets, met fictieve gezondheidsdossiers, echter wel volgens de bestaande verdelingen en distributies toegekend. Je kan die oefening zelf herhalen met de datagenerator Synthea.

Differential Privacy

Een ander maar gerelateerd probleem is dat iemand toch nog aan individuele informatie zou kunnen komen via een omweg, door een database te bestoken met queries en de output daarvan te vergelijken. Dit geeft aanleiding tot het concept differential privacy. Om in dit geval toch privacy te waarborgen, zal men willekeurige informatie (“noise”) toevoegen aan de query-output zodat de gevoelige info verborgen blijft zonder dat de statistische eigenschappen sterk wijzigen. DataSynthesizer , een project van een onderzoeksgroep aan NYU, is een tool voor het genereren van synthetische data die qua differential privacy bepaalde garanties probeert te geven.

Het zou ons hier te ver leiden om op deze problematiek dieper in te gaan, maar ik verwijs tot slot graag door naar het LINDDUN project van de KULeuven als startpunt voor diepgravender informatie over anonimisering, identificeerbaarheid, traceerbaarheid en informatielekken.

Toepassingen in AI

De naam zegt het al, in Generative Adversarial Networks (GAN, een type neuraal netwerk) zit een datagenerator verwerkt. Deze kan worden getraind om data te genereren die synthetisch maar nauwelijks van het origineel te onderscheiden is. Een spectaculaire toepassing is ongetwijfeld het kunnen aanmaken van foto’s van volledig fictieve, onbestaande personen – zo krijg je iedere keer dat je de pagina https://thispersondoesnotexist.com/ ververst, een foto van een onbestaand persoon te zien. (Er zijn ondertussen ook versies voor katten, paarden, moderne kunst en chemische moleculen).

Data augmentation is een beproefde techniek bij het trainen van neurale netwerken, om de robuustheid te verhogen als er niet voldoende trainingsdata is. Door allerlei transformaties uit te voeren op een beperkte set trainingsdata kan je toch nog aan genoeg gegevens geraken om een relatief robuust neural netwerk op te zetten. Dit is met name voor beeldverwerking erg nuttig, om het systeem te leren omgaan met variaties in rotatie, oriëntatie en schaling van een afbeelding. Er is geen tekort aan software libraries die met dit doel kunnen ingezet worden, zie bvb. albumentations, augmentor of imgaug. Gelijkaardige transformaties kunnen ook ingezet worden voor andere soorten data zoals audio.

Voorbeeld van een synthetische dataset om AI-modellen voor fraudedetectie te trainen. Bron: Kaggle

Als echte data niet beschikbaar mag worden gesteld, kan een AI-model initieel getraind worden op een synthetische dataset die lijkt op het origineel. Door transfer learning toe te passen kan men dat model achteraf proberen finetunen voor de reële data. Dit blijkt onder andere nuttig bij de ontwikkeling van zelfrijdende auto’s, waar men de eerste trainingsuren liever in een simulator uitvoert dan op de echte weg. Verwant daarmee is een truc die men kan toepassen als geannoteerde data erg duur of zeldzaam is: men kan goedkoop synthetisch gelabelde data genereren, die combineren met ongeannoteerde echte data, en een vorm van semi-supervised learning toepassen. Het idee is gelijkaardig: een AI-model wordt geïnitialiseerd op synthetische data en dan bijgestuurd middels de echte data. Onder andere in spraakherkenning lijkt dit een veelbelovende piste om een AI-systeem te leren omgaan met een heel palet aan stemmen en dialecten, zonder van ieder denkbaar stemtimbre urenlange opnames te moeten verzamelen.

Andere gebruiken van synthetische data

Synthetische data is een ietwat wazige term en er is nog geen algemene consensus over een strikte definitie, of wat daar precies onder valt en wat niet. Als we het breed bekijken kunnen we nog allerlei andere toepassingen beschouwen waarbij gegevens met synthetische oorsprong een rol spelen.

In verse installaties of tutorials van software populeert men al eens een voorbeelddatabase met willekeurige data. Er bestaan specifieke tools om dat voor elkaar te krijgen, zie bvb. Fake2db of pydbgen in Python.

In software testing is Fuzzing een techniek waarbij automatisch gegenereerde data wordt gevoed aan een systeem om het te testen op o.a. robuustheid – ClusterFuzz is een bekend voorbeeld van het gebruik in de praktijk. Met wat goede wil kan men ook Mutation Testing zien als een techniek waarbij synthetische aanpassingen aan de bestaande code worden gemaakt, met als doel om te kijken of de tests hun werk wel goed doen. Als er regelmatig data aangemaakt moet worden voor een veelheid van scenario’s en verschillende soorten testen, kan het in grote projecten nuttig zijn om een Test Data Management platform te overwegen, waar een configureerbare test data generator een onderdeel van kan zijn.

Nogal wat simulatieomgevingen zijn synthetisch aangemaakt. Dat kan gaan van volledig virtuele werelden, zoals die in veel games ontworpen worden, tot simulaties waarbij wordt ge-extrapoleerd vanuit verschillende bestaande datasets – daarvan is de laatste Microsoft Flight Simulator een goed voorbeeld.

Conclusie

Synthetische data kunnen een erg nuttig substituut zijn in verschillende scenario’s waar de echte data niet zomaar vrijgegeven mag worden, of waar echte data te duur of te moeilijk is om aan te geraken.

Het aanmaken van synthetische data die nuttig is voor een specifieke toepassing, vraagt weliswaar enige achtergrondkennis. Hoe zal de data worden aangewend? Dat bepaalt immers de eigenschappen waaraan synthetische data moet voldoen. Bijgevolg is het haast nooit mogelijk om “blind” een generieke tool in te zetten om synthetische data aan te maken, en blijft een goed begrip van de echte data onontbeerlijk. Het doel is om een synthetische dataset te bekomen die representatief is voor het origineel. Daarbij moet niet alleen met de pure statistische metrieken maar ook met eventuele correlaties en diepere verbanden tussen verschillende gegevens rekening gehouden worden.

Bijkomende validaties kunnen daarom zeker geen kwaad. In het domein AI zien we sinds kort veel inspanning om tools te ontwikkelen voor o.a. detectie van bias en privacyrisico’s. De data-auditing capaciteiten daarvan zouden eventueel ook aangewend kunnen worden om te bevestigen dat een synthetische dataset representatief, bruikbaar en bovendien veilig is.

______________________

Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research.  Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.

This entry was posted in [NL], Artificial Intelligence, Big Data, Security and tagged , , , by Joachim Ganseman. Bookmark the permalink.
avatar

About Joachim Ganseman

Joachim Ganseman is informaticus en heeft een verleden als doctoraatsstudent aan de Universiteit Antwerpen, met zijsprongen naar Queen Mary University in London en Stanford University, waarbij hij focuste op digitale signaalverwerking en analyse van audio. Sinds 2018 werkt hij bij Smals Research waar hij zich concentreert op AI-gerelateerde onderwerpen - o.a. machine learning, natural language processing, data science - en hun mogelijke toepassingen in overheidscontext. Naast het werk is hij een uitstekend pianist, en als medestichter en -organisator van de Belgische Informatica-olympiade ontving hij in 2016 de jaarprijs wetenschapscommunicatie van de Koninklijke Vlaamse Academie voor Wetenschappen van België.

Leave a Reply

Your email address will not be published. Required fields are marked *