Kunstmatige intelligentie Blogreeks: Hoe maak je een model?

379Views
15 Shares

Welkom bij het tweede artikel in de blogreeks “Kunstmatige intelligentie”. Het eerste deel gaat over “Wat is kunstmatige intelligentie”. Dit deel gaat over hoofdstuk 2: Hoe maak je een model?

HOE MAAK JE EEN MODEL?

Met modellen in kunstmatige intelligentie worden machine learning algoritmen bedoeld. Dit zijn manieren om een computer van data te laten leren. Om dit te doen worden normaliter drie verschillende datasets gebruikt. Een trainset van wordt gebruikt om een aantal verschillende versies van het model op te maken en deze versie door gebruik van een verliesfunctie te optimaliseren. Op de validatieset worden getest welke van deze verschillende versies de beste is. Ten slotte wordt met een testset een inschatting gemaakt van de kwaliteit van het uiteindelijk gekozen model.

Een model?

Binnen de wereld van de kunstmatige intelligentie spelen modellen een grote rol. Er zijn dan ook elke dag over de hele wereld mensen bezig met het maken van nieuwe modellen. Wat bedoelen we hier precies met het woord ‘model’? Dat heeft vele betekenissen, niet alleen binnen de wereld van de kunstmatige intelligentie maar ook daarbuiten. Het kan gaan over een persoon (bij wijze van beroep), over een voorwerp (denk aan een maquette) of over een voorbeeld van hoe iets eruit zou moeten zien (zoals een schilder of beeldhouwer zou gebruiken). Voor nu gaan we het hebben over modellen als getalsmatige benaderingen van de werkelijkheid. Dat wil zeggen: een model neemt één of meerdere getalwaarden als inputs en berekent daarmee volgens een vast recept een output. Bijvoorbeeld een weermodel, dat inputs gebruikt als luchtdruk, luchtvochtigheid en windrichtingen om zo als output de temperatuur van morgenmiddag te berekenen. Of een model dat, op basis van DNA-data, kan voorspellen of iemand al dan niet astma heeft. Of een model dat kan voorspellen hoeveel Nederlanders in de volgende maand besmet zullen raken met COVID-19, afhankelijk van de maatregelen die we treffen en hoe goed men zich eraan houdt.

Het doel van het model is uiteindelijk om zo correct mogelijk de output te voorspellen, dus zo accuraat mogelijk voorspellen wat het weer morgen wordt of hoeveel mensen precies besmet zullen raken. Een procentje extra nauwkeurigheid van je voorspelling kan net het verschil betekenen tussen een goede of een foute weersvoorspelling. Het kan je net helpen om aan te zien komen dat er meer besmettingen komen dan de ziekenhuizen aankunnen, wat dus betekent dat de maatregelen aangescherpt moeten worden. Zeker instanties die hun modellen op grote schaal toepassen (denk aan overheden en grote bedrijven) hebben er veel baat bij om ruim de tijd te nemen om hun model nog nét dat beetje nauwkeuriger te maken.

De beste kandidaat verliest het minst

Er zijn heel veel verschillende methodes die een model kan gebruiken om van inputs naar output te komen. Er zijn al honderden modelmethodes beschikbaar in verschillende programmeertalen, en er worden nog steeds elke dag nieuwe ontwikkeld. Om die specifieke methodes in detail te beschrijven gaat wat ver voor dit boek. Wel kunnen we stellen dat ze in conceptuele zin veel op elkaar lijken: ze beschrijven allemaal een reeks berekeningen die de computer kan uitvoeren om vanuit één of meer inputwaarden een outputwaarde te berekenen. Elk rekenstapje is bijvoorbeeld een optelling, een afronding of een vermenigvuldiging met een constant getal: eenvoudige berekeningen voor een computer. Door echter te variëren in de manier hoe een berekening precies uitgevoerd wordt (bijvoorbeeld door andere constante getallen te kiezen om mee te vermenigvuldigen) kan elk rekenstapje op letterlijk een oneindig aantal manieren aangepast worden. Daarbij bevat een beetje model al gauw honderden of duizenden van dit soort kleine rekenstapjes. Alles bij elkaar levert dit onbeschrijfelijk veel verschillende mogelijkheden om vanuit je inputs een output te berekenen. Hoe kan je dan ooit erachter komen wat de juiste manier is? En wat verstaan we eigenlijk onder ‘de juiste manier’?

Over het algemeen gebruikt een model hiervoor een zogenaamde ‘verliesfunctie’. Dit is een getal dat aangeeft hoe ver de voorspellingen van het model – over het geheel genomen – van de werkelijke waarden af liggen. Bij het astmaonderzoek kan dit bijvoorbeeld zijn: het aantal keren dat het model een onjuiste diagnose gaf. Gevallen waarbij het model ten onrechte dacht dat iemand astma had, of juist ten onrechte dacht van niet. Bij het model dat moet voorspellen hoe warm het morgen wordt, zou je als verliesfunctie kunnen nemen hoe veel graden het model er gemiddeld naast zit. In alle gevallen geldt: een perfect model zou precies aansluiten bij de werkelijkheid en dus een verliesfunctie gelijk aan nul hebben. In de praktijk is dit bijna nooit haalbaar, maar via het ‘trainen’ van een model kan je in elk geval proberen om de verliesfunctie zo laag mogelijk te krijgen.

Hoe gaat dit trainen in zijn werk? In de basis is het een kwestie van heel veel dingen proberen. Je geeft de computer eerst een aantal randvoorwaarden: het soort berekeningen dat hij mag gebruiken, welke stukjes DNA-informatie hij kan gebruiken in het model, hoeveel tijd hij mag besteden aan het trainproces enzovoort. De computer gaat dan aan de slag en maakt – binnen de gestelde randvoorwaarden – honderden, duizenden modellen met steeds net andere instellingen en net andere vooraf ingestelde berekeningen. Elke keer maakt het model voor elke DNA-streng in de traindata een inschatting: heeft deze persoon volgens mijn berekeningen astma of niet? Aan het eind kijkt het model zijn eigen antwoorden na om zo de verliesfunctie te berekenen. De meeste modellen kunnen bovendien bepalen of ze een beetje in de richting zitten, en welke aanpassingen ze het beste kunnen maken in hun instellingen om de volgende keer weer een lagere verliesfunctie – en dus een beter model – te krijgen. Aan het eind van dit hele proces kies je de instellingen die de laagste verliesfunctie opleverden, dus het minste aantal foute inschattingen. Die instellingen vormen dan het definitieve, getrainde voorspelmodel.

Valideren en testen

Hiermee heeft de computer in elk geval alles geprobeerd wat er op dat moment in zijn arsenaal zit. Toch hoeft dat nog niet het eind te zijn, want misschien zijn er manieren om een nog beter model te maken. We hebben immers een hoop restricties opgelegd in de randvoorwaarden die we hebben gekozen, maar misschien zijn er wel andere randvoorwaarden die veel beter werken! De beste manier om daar achter te komen is wederom: probeer ze uit. Kies elke keer andere randvoorwaarden, laat je model zichzelf trainen (met alle optimalisatiestappen die de computer daarin kan maken) en kijk of het getrainde model in staat is om proefpersonen correct in te schatten. Nieuwe proefpersonen welteverstaan; niet dezelfde proefpersonen als waar het model zichzelf net op getraind heeft. Dat zou immers te makkelijk zijn, daar heeft de computer al in kunnen ‘spieken’ of diegene astma had of niet. Voor een goede lakmoesproef van het model kan je hier beter andere, nieuwe data voor gebruiken: de zogenaamde ‘validatiedata’. Deze fase heet dan ook wel het valideren van het model. Kies een nieuwe set randvoorwaarden en kijk wat voor resultaten het oplevert. Niet goed genoeg? Dan pas je de randvoorwaarden een beetje aan (het liefst weer op een gerichte manier) en probeer je het nog een keer. Net zo lang tot de verliesfunctie zo laag mogelijk en het model zo accuraat mogelijk is voor de validatiedata.

In het bouwen van een machine learning model hebben we dus te maken met drie verschillende sets van data

  1. TRAINSET – Dataset die wordt gebruikt om de computer het optimale model te laten maken.
  2. VALIDATIESET – Deze dataset komt van dezelfde bron als de traindata, maar wordt apart gehouden om de performance van verschillende versies van modellen te kunnen vergelijken.
  3. TESTSET – Een derde dataset die helemaal niet wordt gebruikt om het model te bouwen, maar als doel heeft om een eerlijke inschatting te maken

De optimale voorbereiding

Dan rest nog maar één ding: het model in gebruik nemen. Pas het model toe op nieuwe data van nieuwe patiënten en kijk of het model correct kan identificeren of zij astma hebben. Dat zal vaak maar niet altijd goed gaan; geen enkel model is perfect, en nieuwe patiënten hebben natuurlijk weer ander DNA dus zijn net wat moeilijker te diagnosticeren. Maar met het iteratieve proces van trainen en valideren is het model in elk geval zo goed mogelijk voorbereid op de echte wereld. Van alle mogelijke instellingen en alle mogelijke randvoorwaarden hebben we de best mogelijke gevonden, en getest of het inderdaad werkt in de praktijk. Alle reden dus om aan te nemen dat dit model uitstekende diagnoses zal stellen – aan de voorbereiding heeft het in elk geval niet gelegen.

Geïnteresseerd in het boek?
Bestel het hier

Leave a Reply

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