Image Recognition: wat gaat er fout?
Welkom bij de tweede blog over image recognition. Eerder leerden we dat mensen uitzonderlijk goed objecten uit plaatjes kunnen herkennen. De reden hiervoor is onder andere omdat we deze taak als kind al aangeleerd krijgen en dat al eeuwenlang. Computers leren op bijna dezelfde manier, namelijk door het krijgen van voorbeelden en de bevestiging van de juiste antwoorden. Computers kunnen dat in theorie zelfs nauwkeuriger, sneller en consistenter dan mensen. In theorie dus. Deze blog gaat erover hoe dat in de praktijk werkt.
Trainset vs. Testset
Voordat we voorbeelden van veelgemaakte fouten kunnen geven, is het belangrijk om nog iets duidelijk te maken. Herinner je je de taak van het herkennen van de koe nog uit de vorige blog? Laten we ook nu dit weer als voorbeeld nemen. Stel, je wilt testen hoe goed een kind een koe kan herkennen. Je hebt dan als het goed is het kind al heel veel (plaatjes van) koeien getoond en verteld dat dit daadwerkelijk koeien zijn. Maar op het moment dat je het kind wilt testen op de kennis, kies je plaatjes van koeien die het kind nog nooit gezien heeft. Dit doe je om zeker te weten dat het kind een soort inzicht heeft vergaard om koeien te herkennen en niet slechts plaatjes heeft onthouden. Je wilt dat het kind bepaalde ‘regels’ heeft bedacht bij het maken van de beslissingen. Een regel kan bijvoorbeeld zijn: ‘het object heeft 4 poten’. Of: ‘het object is wit met bruine vlekken’. Of: ‘het object heeft een geel label aan het oor’. Met deze regels kan het kind ook foto’s van koeien die hij nog nooit gezien heeft, juist kwalificeren als koe. We noemen deze stapel met foto’s waarop je het kind wilt testen ook wel de testset. De foto’s die je als voorbeelden hebt gegeven in het leerproces, noemen we de trainset. Het is dus van cruciaal belang om deze testset apart te houden van de trainset, omdat de test anders een vertekend beeld geeft.
Vreemde testset
Wat zou er gebeuren als je in je stapel testfoto’s allemaal koeien hebt gestopt die wit met zwarte vlekken hebben, maar in je trainset koeien die wit met bruine vlekken hebben? Grote kans dat het kind dan slecht scoort op de testset. Immers, ze heeft nog nooit zulke koeien gezien! Dit is iets wat we ook in de praktijk zien. Zo was er ooit een klant die wilde dat objecten op een lopende band op basis van image recognition herkend zouden worden. Ze trainden machine learning algoritmes op duizenden plaatjes met een goede trainset. Het algoritme ging met al deze ervaring regels bedenken om een goede beslissing te maken over de objecten op de band. De klant was zo trots op deze techniek dat hij dit live wilde tonen aan het publiek. En omdat hij natuurlijk wilde imponeren, maakte hij de fabriek helemaal spik en span, inclusief de lopende band. Zoals je zult begrijpen, ging de test niet goed en daar baalde de klant dan ook van. Dit kwam doordat de algoritmes nog nooit eerder plaatjes gezien hadden met zo’n schone ondergrond en hadden daarop dus ook geen image recognition regels kunnen baseren. De les die je hiervan dus kunt leren: houd train- en testset goed gescheiden, maar zorg er wel voor dat ze over dezelfde wereld gaan.
Binnenkort zullen we weer een andere uitdaging uit de wereld van machine learning beschrijven in onze blog. Kun je niet wachten? Bekijk dan eens dit filmpje waarin Marco antwoord geeft op de vraag ‘Wat is een kunstmatige assistent?’.