Train je eigen zelfrijdende auto!
Zelfrijdende voertuigen spreken tot onze verbeelding. We zien de technologie opduiken in verschillende vormen zoals auto’s en bussen, maar ook in grasmaaiers, stofzuigers en op de werkvloer. Het gemak om te kunnen werken achter het stuur, minder ongevallen, minder vervuiling … De potentiële voordelen zijn legio en exact de reden waarom fabrikanten én overheden hier zo op inzetten. Wanneer we onder de motorkap kijken naar de AI-technologie, zijn die voordelen nog niet zo eenvoudig te bereiken. In dit lesproject leg ik je uit hoe die artificiële intelligentie-technologie werkt, ons leven kan verbeteren en hoe je die in jouw klas brengt!
Context naar praktijk met Design Thinking
Leerlingen hebben wellicht al gehoord over zelfrijdende auto’s. Ze denken dan spontaan aan bekende merken zoals Tesla, of aan een recent bezoek aan het ziekenhuis Maria Middelares. De technologie kan op veel verschillende manieren gebruikt worden, ook in situaties buiten de comfort zone van de leerlingen. Tijdens de les maken de leerlingen kennis met drie gebruikers. Buschauffeur Lara, Walter, eigenaar van vrachtwagens en een manager in een warenhuis, Samir. De leerlingen analyseren de gebruikers en doorlopen het Design Thinking proces. Alledrie hebben problemen en doelen. Leerlingen gaan op zoek naar oplossingen om het leven van hun gekozen persona te verbeteren.
Ze gebruiken hiervoor hun kennis, vaardigheden en lesmateriaal uit het vak Design Thinking. Zo gaan ze aan de slag met een ‘nodenfiche’ en COCD-box. Die laatste gebruiken we individueel en klassikaal om onze ideeën en oplossingen te ordenen. Het eindresultaat is een bord vol post-its met mogelijke oplossingen. Om te vermijden dat deze ontdekkende stap met teveel lestijd gaat lopen, voeren we deze contextfase uit in een design sprint. Onderwijseffectiviteit is belangrijk, dus elke opdracht krijgt een duidelijke tijdslimiet!
Let’s go: van LEGO naar machine learning!
Een klein wagentje laten rijden gebeurt in wel meer klassen. Daarvoor heb je enkele pakketten om uit te kiezen. Je kan werken met een Arduino Uno, of met LEGO Mindstorms. Deze laatste is het meest bekend in het onderwijs. Leerlingen kunnen de centrale ‘brick’ programmeren om een aantal tellen vooruit te rijden, te draaien wanneer de sensor een muur nadert, vertragen wanneer die een kleur detecteert … Dit heet programmeren binnen een expertsysteem. Jij weet als programmeur hoe het wagentje moet rijden en zet dit, stap voor stap, om naar een algoritme dat de computer kan begrijpen. Je doet dus aan computationeel denken! Dit is ook de manier waarop goedkopere robotstofzuigers of robotgrasmaaiers te werk gaan. Deze zijn geprogrammeerd volgens een expertsysteem waarbij ze vooruit rijden totdat ze een muur of obstakel detecteren. Dan draaien ze 90 graden, en herhalen hun missie. Na een tijd is jouw living opnieuw net! Loopt er iets verkeerd? Dan biedt het expertsysteem transparantie, want jij het zelf het algoritme opgesteld voor de robot. Dat is een belangrijk voordeel.
Machine learning met Charles Darwin
Een expertsysteem heeft ook een belangrijk nadeel. Waar transparantie nog een voordeel was, zijn algoritmes uit zo’n expertsysteem moeilijk te veralgemenen en moet je jouw algoritme vaak zelf opnieuw schrijven als de omgeving verandert. Moet jouw robotbus ineens van parking wisselen of jouw stofzuiger van kamer? Daar komen problemen van! Dit opnieuw schrijven van het algoritme kost tijd en moeite. Kon de computer dat maar zelf doen!
Natuurlijk kan dat! Met machine learning (artificiële intelligentie) schrijft de computer zijn eigen algoritme. Hiervoor zal hij het parcours afrijden. Steeds opnieuw en opnieuw. Omdat het niet zo veilig is om dat te doen op de openbare weg, gebruiken we hiervoor een computersimulatie. In deze computersimulatie gebruiken we Python en de rekenkracht van onze computer om twintig auto’s tegelijk het parcours te laten verkennen. Zo’n simulatie is veilig, altijd bereikbaar en schaalt beter!
In deze simulatie passen we de leerstrategie ‘reinforcement learning’ toe. Hier gaan we het AI-model belonen voor gewenst gedrag en ongewenst gedrag bestraffen. In dit geval is goed gedrag namelijk het succesvol volgen van het parcours, zonder ongelukken. Ongewenst gedrag? Een crash of botsing meemaken. Na 40 seconden kijken we welke van onze 20 auto’s het meest afstand heeft kunnen afleggen in de simulatie. De beste twee gebruiken we om een nieuwe generatie AI-auto’s te lanceren. De rest? Die sterft … Survival of the fittest, waarbij het best aangepaste AI-moddelletje overleeft. Artificiële evolutietheorie!
Van theorie naar praktijk!
Nu je weet hoe reinforcement learning werkt, is het tijd om onze simulatie voor te bereiden. We gebruiken hiervoor de rekenkracht van de eigen computer. Je hebt slechts een handvol zaken nodig, namelijk Python, Kladblok: en het commandovester (Commandoprompt of Terminal). We bereiden onze Python-code voor. In die Python-code vinden we twee belangrijke zaken terug:
Een map: de kaart, plattegrond of parcours waarop onze figuurtjes zullen rijden.
Een sprite: een visuele voorstelling van ons voertuigje.
De map en de sprite kunnen we zelf aanpassen door de bestandsnaam in de Python-code de wijzigen. Zo kan ik eenvoudig een sprite zoeken van een kleine Roomba en deze instellen in mijn simulatie.
Voor de map of parcours hebben we iets meer voorbereiding nodig. Het AI-model zal volgende spelregels volgen:
Zwart: op dit deel mag hij rijden;
Wit: dit deel zal hij zien als muren;
Op de kaart zal ook een start-finishplaats zijn.
Wanneer je een eigen parcours wil tekenen, kan je aan de slag met bijvoorbeeld Paint. Je tekent met een dikke zwarte borstel jouw parcours en plaatst de start en finish. Klaar! Gebruik je een andere ondergrond, dan zal je volgende stappen moeten doorlopen:
Teken een wit kader langs de randen van jouw afbeelding;
Teken het te volgen parcours met een dikke witte borstel;
Teken het te volgen parcours daarna nog eens over met een dunnere zwarte borstel.
Willen we onze simulatie opstarten, dan gebruiken we Python-code en de Terminal of Opdrachtprompt. De tikken daar python start.py in en onze computer start de training in de simulatie. In het midden van het scherm kan je volgen hoeveel generaties reeds ingezet werden.
Practicumtijd!
Eenmaal je de basis onder de knie hebt, kan wisselen tussen parcours en sprites, is het tijd voor het echte werk: het practicum! Leerlingen ontwikkelen een sprite en parcours die passen bij onze gebruiker / klant. Ze laten de simulatie lopen en noteren de resultaten. Hoe lang duurt het voor één AI-model erin slaagt om succesvol de route af te leggen? Hoeveel generaties aan AI-modellen moeten we verslijten voordat meer dan de helft slaagt in hun opdracht?
Ik wil dit in mijn klas! Wat moet ik doen?
Wil je hier zelf mee aan de slag in jouw klaslokaal? Super! De toekomst zal steeds meer en meer digitaal zijn. Een toekomst waar artificiële intelligentie een heel belangrijke rol in zal spelen. Dat we jongeren hierop moeten voorbereiden en motiveren, spreekt voor zich. Ik wil jou daar gerust bij helpen! Via de knop hieronder kan je mij een bericht sturen. Ik antwoord veelal binnen de 48 uur!