Alle afleveringen
S05E50 - Shorts - Testen voor Machine learning
S05E50

Shorts - Testen voor Machine learning

Seizoen 5 6 min Hosts: Joop Snijder & Niels Naglé
0:00

Wat leer je in deze aflevering?

Deze korte aflevering behandelt waarom het testen van machine learning systemen fundamenteel anders is dan traditioneel softwaretesten. Waar bij klassieke software alleen code getest wordt, speelt bij machine learning ook de kwaliteit van data een cruciale rol.

01
Data en code zijn onlosmakelijk verbonden In machine learning is de uitkomst afhankelijk van zowel correcte code als kwalitatieve data, vergelijkbaar met een cake bakken waarbij zowel het recept als de ingrediënten goed moeten zijn.
02
Bias in data herkennen en testen Data kan verschillende vormen van bias bevatten, zoals selectiebias (bijvoorbeeld alleen data uit stedelijke ziekenhuizen) of stereotypenbias uit historische bronnen, wat de nauwkeurigheid van het model negatief beïnvloedt.
03
Unit-testen voor machine learning code Net als bij traditionele software moeten individuele code-onderdelen getest worden om te verifiëren dat trainings- en voorspellingscode correct functioneert en toekomstige wijzigingen geen problemen veroorzaken.
04
Systeemtesten met aparte testdata Het hele systeem moet getest worden met data die niet tijdens training is gebruikt, waarbij niet alleen nauwkeurigheid maar ook vals-positieven en vals-negatieven gemeten worden.

Kernbegrippen

Selectiebias
Vertekening in trainingsdata doordat bepaalde groepen of contexten oververtegenwoordigd zijn.
Unit-testen
Testen van individuele code-onderdelen om correctheid van functies te verifiëren.
Systeemtesten
Validatie van het volledige ML-systeem met onafhankelijke testdata buiten trainingsset.
Vals-positieven en vals-negatieven
Respectievelijk onjuiste positieve en onjuiste negatieve voorspellingen van een model.
Acceptatietesten
Verificatie dat een ML-model in productie aan werkelijke gebruikerseisen voldoet.

Transcript

Machine learning heeft de technologische wereld veroverd. Maar zoals bij elke technologie is het essentieel om de systemen die we bouwen grondig te testen. In het geval van machine learning is het testen echt niet zo eenvoudig als het uitvoeren van een paar eenvoudige codetesten. Laten we eens kijken waarom. Je luistert naar een korte aflevering van AIToday Live met erin een actueel onderwerp in 5 minuten. Waarom is testen in machine learning nou zo anders? In traditionele softwareontwikkeling draait alles om de code. Als de code correct is, werkt het programma zoals verwacht. In machine learning projecten is de situatie complexer. We hebben niet alleen te maken met code, maar ook met data. En deze twee zijn onlosmakelijk met elkaar verbonden. Stel je voor dat je een recept volgt om een cake te bakken. De instructies zijn je code en je ingrediënten zijn je data. Zelfs als je de instructies perfect volgt, zal het gebruik van bedorven eieren of oude bloem resulteren in een minder dan smakelijke cake. Dit is een analogie voor machine learning. De kwaliteit van je uitvoer, de cake, is afhankelijk van zowel je code, de instructies, als je data, de ingrediënten. Maar voordat we zelfs maar naar de code kijken, moeten we ervoor zorgen dat onze data van hoge kwaliteit is. Dit betekent dat we moeten controleren op een bias. Een bias in data kan optreden wanneer de gegevens die we verzamelen niet echt representatief zijn voor de realiteit. Een bias in data kan optreden wanneer de gegevens die we verzamelen niet echt representatief zijn voor de realiteit. Laten we een voorbeeld nemen. Stel je voor dat bij het ontwikkelen van een medische diagnose-app alleen gegevens worden verzameld van patiënten in stedelijke ziekenhuizen. Hierdoor kan het model minder nauwkeurig zijn bij het diagnosticeren van ziekten die vaker voorkomen in landelijke gebieden. Dit is een voorbeeld van selectiebias. Er zijn ook andere soorten bias, zoals zelfselectiebias, confirmationbias, of bijvoorbeeld vooroordeel of stereotypenbias. Vooroordelen of stereotypen voor ingenomenheid worden vaak waargenomen in gegevens die zijn verkregen uit historische bronnen zoals boeken of fotoarchieven. Door een fotoarchief te gebruiken om een model te trainen dat mannen van vrouwen onderscheid, kunnen mannen bijvoorbeeld vaker op het werk of buiten huis worden getoond en vrouwen vaak binnen huis. Als we dergelijke vertekende gegevens gebruiken, zal ons model dus meer moeite hebben om een vrouw buiten of een man juist thuis te herkennen. Het is essentieel om je bewust te zijn van deze biases en actief te zoeken naar tekenen ervan in je data. En dat doe je dus met specifieke testen. Zodra we vertrouwen hebben in onze data moeten we onze code testen. Dit omvat de code die we gebruiken om onze modellen te trainen als de code die we gebruiken om voorspellingen te doen. Bij code gebruiken we daar unit-testen voor. Unit-testen zijn geautomatiseerde testen die individuele onderdelen, of zoals dat dan heet units, van software te testen om te verifiëren of ze correct werken. In de context van software engineering verwijst een unit vaak naar een functiemethode of klas in de code. Het doel van een unit test is om elk afzonderlijk deel van de software te valideren op correctheid onafhankelijk van andere delen. Dit zorgt ervoor dat als er in de toekomst wijzigingen worden aangebracht we snel kunnen vaststellen of een deel van de software breekt als gevolg van die wijzigingen. Dit hebben we dus ook nodig bij machine learning code. Naast deze unit test moeten we ook testen op systeemniveau uitvoeren. Dit betekent dat we het hele systeem als geheel testen. En dat vaak met behulp van een aparte testset van data die niet is gebruikt tijdens de training. Een belangrijk aspect van systeemtesten is het meten van de prestaties van het model. En dit gaat verder dan alleen kijken naar de nauwkeurigheid van het model. We moeten ook rekening houden met zaken als de mate van vals-positieve of vals-negatieve en bedenken wat de effecten daarvan kunnen zijn. Tenslotte, voordat we met het machine learning systeem in productie kunnen gaan, moeten we acceptatietesten uitvoeren. Dit zijn testen die zijn ontworpen om te bevestigen dat het systeem voldoet aan de eisen van de klant of eindgebruiker. Bij machine learning kan het betekenen dat we het model testen met real-world data of dat we het model onderwerpen aan verschillende scenario's om te zien hoe het presteert onder verschillende omstandigheden. Testen in machine learning is complex, maar essentieel. Door zowel onze data als onze code grondig te testen, kunnen we vertrouwen hebben in de voorspellingen van ons model en ervoor zorgen dat we waardevolle inzichten leveren aan onze gebruikers of klanten. Dank je wel voor het luisteren. Vind je dit nou interessant content over kunstmatig intelligentie, abonneer je dan op het knopje in je app waarbij je nu zit te luisteren en mis geen aflevering.