Trendsz

Bij Artificial Intelligence (AI) denk je aan slimme oplossingen voor moeilijke problemen. Maar is AI eigenlijk wel slim? Hoe werkt AI onder de motorkap? En wat betekent dit dan voor iemand die AI wil testen? In deze blog ga ik in op de manier waarop moderne AI ‘leert’ en wat dat betekent voor het testen ervan.

Moderne AI leert van voorbeelden

‘Deep learning’ valt onder de noemer AI en is uitermate succesvol. Dit komt door ontwikkelingen van de laatste jaren zoals een toename van de hoeveelheid beschikbare data en de rekenkracht van processoren. Deep learning is een algoritme waarmee computers patronen leren herkennen uit voorbeelden. Door een computer bijvoorbeeld honderdduizenden foto’s van appels en sinaasappels te laten zien, leert het na verloop van tijd het patroon van deze beide fruitsoorten te herkennen. Net zoals wij dat ook ergens in onze hersenen hebben opgeslagen. Na voldoende voorbeelden ‘weet’ de computer hoe een appel en een sinaasappel, of welk object dan ook, eruitzien en kan de computer zelfs het verschil tussen beide herkennen. Om een computer traditioneel te programmeren om het verschil te leren tussen een appel en een sinaasappel moet een lange keuzeboom worden geprogrammeerd. De kosten die hiermee gepaard gaan zijn erg hoog. Bovendien is het uiteindelijke resultaat wat hiermee bereikt wordt meestal slechter dan wanneer de computer dit verschil met deep learning leert.

Hoe werkt AI onder de motorkap?

Onder de motorkap bestaat een deep learning AI uit een neuraal netwerk. Menselijke hersenen bevatten een netwerk van met elkaar verbonden neuronen. In de AI is het een netwerk waarin alle takken en knooppunten een waarde hebben. Een ingebracht voorbeeld (foto) wordt omgezet in een vector met verschillende waarden voor iedere pixel. Het neurale netwerk rekent het voorbeeld door en geeft een uitkomst. Als de uitkomst nog niet juist is dan worden de waarden van de takken en knooppunten een klein beetje bijgesteld in de goede richting. Dit proces wordt herhaald voor alle voorbeelden en ieder voorbeeld kan ook herhaaldelijk worden gebruikt. Steeds wordt de interpretatie van het neurale netwerk nauwkeuriger, zodat de zekerheid waarmee de computer een uitspraak kan doen over de identiteit van de objecten toeneemt. Hoe meer voorbeelden van appels, mensen of stoelen de computer al eerder heeft gezien des te beter hij het object herkent.

181102 – Deep Learning en testen – afbeelding 1

Hoe wordt AI standaard getest?

Meestal worden black box technieken (technieken waarbij wordt gekeken hoe de applicatie zich van buiten gedraagt, zonder kennis van de interne code) gebruikt om deep learning te testen. Door een deel van de voorbeelden (bijvoorbeeld 30%) apart te houden en niet te gebruiken voor het trainen van het netwerk, blijven er genoeg voorbeelden over om te testen of het netwerk ook het juiste resultaat geeft. Je kunt het foutpercentage bepalen van de set trainingsvoorbeelden en van de set testvoorbeelden. De hoogte van beide foutpercentages is een indicatie van hoe goed de architectuur van het netwerk is en hoe goed het netwerk is getraind. Met een hoge trainingsfout en een hoge testfout is het netwerk waarschijnlijk te simpel of te weinig getraind. Met een lage trainingsfout en een hoge testfout is het netwerk waarschijnlijk te complex of zijn er te weinig verschillende voorbeelden gebruikt. Een gewenste uitkomst is een lage trainingsfout en een lage testfout.

Als de testvoorbeelden worden gebruikt om het netwerk te ‘tunen’ dan kunnen deze niet meer worden gebruikt voor de uiteindelijke test. De totale set aan voorbeelden moet dan in drie delen worden gesplitst: een training set, een development set (voor het tunen) en een test set.

181102 – Deep Learning en testen – afbeelding 2

Wat vraagt aandacht van de tester?

De standaard manier van testen is dus black box testing. Dat gaat helaas niet altijd goed, maar daar kom ik later in deze blog op terug. Het is noodzakelijk om ook white box testen toe te passen, waarbij wordt gekeken naar de interne opbouw van de applicatie.

White box testen

Een neuraal netwerk bestaat uit diverse lagen die aan elkaar worden gekoppeld. Zelfs als onjuiste lagen aan elkaar worden gekoppeld is het mogelijk om het netwerk te trainen. Het trainen van een netwerk met veel data kan uren, dagen tot zelfs weken duren. Als de lagen onjuist of incompleet aan elkaar worden gekoppeld, wordt het netwerk nooit geconvergeerd naar een juiste oplossing. De oorzaak hiervan is moeilijk vast te stellen zonder ook het programma zelf te bekijken. Belangrijk is om te letten of in het programma de juiste dimensies van vectoren en neurale lagen worden gebruikt en of de verschillende lagen op de juiste manier en foutloos aan elkaar worden gekoppeld.

In de onderstaande voorbeeldcode zie je dat bij het koppelen er lagen worden overgeslagen (de vijfde laag wordt weer aan de ‘input image’ gekoppeld in plaats van aan ‘net’), waardoor een kleiner neuraal netwerk ontstaat dan bedoeld.

181102 – Deep Learning en testen – afbeelding 3

Black box testen

Hoe goed een AI wordt getraind staat en valt met de kwaliteit van de voorbeelden die worden gebruikt. In de onderstaande figuur zie je links 6 voorbeelden (uit een grotere reeks) waarmee een AI getraind is om mokken te onderscheiden van glazen. Als na de training de testfoto van de rechterkant wordt aangeboden, beoordeelt de AI dit dan als een mok of een glas?

Er is een grote kans dat de AI dit beoordeelt als een glas! De AI is in werkelijkheid niet echt slim en weet niet dat hij moet letten op de vorm van het voorwerp. De AI gaat af op de gehele foto. De achtergrond bij alle glazen is geel en ook is de achtergrond van de testfoto geel, terwijl de achtergronden van de mokken niet geel zijn. De AI ‘denkt’ dus dat het een glas is. Voor een tester is het dus belangrijk om de gebruikte training set, development set en test set goed door te lichten. Is de foto uit dezelfde hoek genomen? Zijn alle voorwerpen even groot? Zijn er geen overheersende achtergronden? Is de distributie van voorwerpen over de training set hetzelfde als over de test set?

181102 – Deep Learning en testen – afbeelding 4

AI is dus niet slimmer dan de voorbeelden waarmee het wordt getraind. Als het wordt getraind met foto’s van mannelijke soldaten (omdat vrouwelijke voorbeelden weinig beschikbaar zijn) dan zal het verwachten dat iedere soldaat een man is (gender bias). Onze rol als tester is voorlopig nog niet uitgespeeld, maar onze aandacht verschuift wel naar het beoordelen van data.

Wil je ons nieuwste Paarsz magazine per post ontvangen? Laat dan je gegevens achter.

Bartosz_Header_004

Werken bij Bartosz?

Vincent Verhelst

Geïnteresseerd in Bartosz? Dan ga ik graag met jou in gesprek. We kunnen elkaar ontmoeten met een kop koffie bij ons op kantoor. Of tijdens ontbijt, lunch, borrel of diner op een plek die jou het beste uitkomt. Jij mag het zeggen.

Bijtanken bij Bartosz

Gamification

Jan25

Software testen is geen handwerk maar keihard denkwerk. We maken een mentaal model van hetgeen we aan het testen zijn en aan de hand daarvan gaan we op zoek naar hoe we dat model kunnen kraken. Belangrijke skills die je hierbij nodig hebt zoals Critical Thinking en Problem Solving kun je ontwikkelen.

Ben je in staat om je analytische vaardigheden in te zetten om een puzzel op te lossen of een algoritme te kraken? Kun je onder woorden brengen wat de oplossing was? En wat was je aanpak was om de uitdaging aan te gaan?

Zo kennen we verschillende vormen van Gamification binnen het testvak. De eerste Bijtanken bij Bartosz van 2019 laat zien welke spelvormen we daarbij inzetten en waarom we daar zoveel waarde aan hechten. Maar we gaan vooral ook doen!

Mijn Paarsz