Waarom AI vaak faalt in het echte leven (en 3 tests om dit te voorkomen)

Machine learning-modellen hebben zichzelf in korte tijd vrijwel onmisbaar gemaakt in onze samenleving. Maar als we er zo op vertrouwen, dan is het wel belangrijk om zeker te weten dat deze modellen betrouwbaar en veilig zijn. Hoe doe je dat? In tegenstelling tot traditionele softwareontwikkeling is bij machine learning de code maar één aspect. Minstens zo belangrijk is de data waarmee de modellen getraind worden. Code en data zijn onlosmakelijk met elkaar verbonden. Als de data vertekend of van slechte kwaliteit is, zal het model ook slecht presteren, hoe goed de code ook is geschreven.

Data testen op bias

Het grondig testen van zowel data als code is cruciaal bij het ontwikkelen van machine learning-modellen. Toch is het testen van deze AI-systemen complexer dan bij traditionele software. In dit artikel bespreken we drie belangrijke tests waaraan je je machine learning-model zou moeten onderwerpen voordat het klaar is voor de buitenwereld. Dat begint met het grondig controleren op bias van onze trainingsdata. Bias refereert aan een systematische vertekening in de data die ervoor kan zorgen dat bepaalde groepen onevenredig worden benadeeld of bevooroordeeld.

Er bestaan verschillende vormen van bias waar je op moet letten. Een veelvoorkomende vorm is selectiebias. Dit treedt op wanneer de data die wordt verzameld niet representatief is voor de werkelijkheid. Stel bijvoorbeeld dat voor de ontwikkeling van een medische diagnostische app alleen patiëntdata uit stadziekenhuizen wordt gebruikt, dan zal het model minder nauwkeurig zijn voor ziektes die vaker voorkomen op het platteland.

Een andere bias is bevestigingsbias, waarbij de data vooral hypothesen of verwachtingen bevestigt, en tegenstrijdige data ondervertegenwoordigd is. Ook kunnen stereotypen en vooroordelen sluipen in de data, bijvoorbeeld wanneer een model getraind wordt op fotoarchieven waarin vrouwen vaker thuis en mannen vaker op het werk worden afgebeeld.

Het is daarom van groot belang om data te screenen op deze vormen van vertekening, om te voorkomen dat het uiteindelijke model even bevooroordeeld en oneerlijk is als de bias in de trainingsdata.

Code testen

Nadat je de trainingsdata grondig hebt getest, is het tijd om de code te testen. Net als bij traditionele softwareontwikkeling is het van belang om unit tests uit te voeren. Dit zijn geautomatiseerde tests van afzonderlijke onderdelen van de code, zoals functies en klassen. Als je elk onderdeel apart test, kun je snel vaststellen of er ergens een fout optreedt.

Specifiek voor machine learning is het daarnaast cruciaal om tests uit te voeren op het hele systeemniveau. Hierbij test je het model met een aparte testset die niet voor de training is gebruikt. Op deze manier kun de algemene prestaties te meten. Let hierbij niet alleen op de totale nauwkeurigheid, maar kijk ook naar fout-positieven en fout-negatieven. De impact hiervan is afhankelijk van de toepassing.

Stel dat je een model ontwikkelt om kanker te diagnosticeren. Fout-negatieven, waarbij de ziekte gemist wordt, zijn dan ernstiger dan fout-positieven waarbij ten onrechte kanker wordt aangewezen. Door goed te kijken naar deze prestatie-indicatoren tijdens systeemtests, kan de code zo nodig verbeterd worden.

Kortom, door de code op zowel micro- als macroniveau te testen, kun je erop vertrouwen dat het machine learning-model solide en betrouwbaar is.

Acceptatietesten

Als laatste is het belangrijk om acceptatietesten los te laten op je model. Deze controleren of het systeem voldoet aan de eisen en verwachtingen van de eindgebruiker.

Voor machine learning betekent dit dat we het model testen op real-world data, vergelijkbaar met de data waar het systeem mee te maken gaat krijgen als het live gaat. Ook is het verstandig om het model te testen in verschillende scenario’s en onder diverse omstandigheden. Hiermee beantwoord je de vraag: kunnen we er op vertrouwen dat het nauwkeurig blijft, ook als de data enigszins afwijkt van de trainingsdata? Acceptatietesten geven het vertrouwen dat het systeem in de praktijk voldoet aan de verwachtingen en robuust genoeg is om veilig te worden ingezet.

Door data, code én het complete systeem grondig te testen, en verder te kijken dan het testen van code alleen, kun je een machine learning modellen bouwen dat écht waarde toevoegen.

Dit artikel is gemaakt op basis van deze aflevering van de podcast AIToday Live met Joop Snijder.