Kunstmatige intelligentie blogreeks: Reinforcement learning: al doende leert men
Welkom bij het elfde artikel in de blogreeks “Kunstmatige intelligentie”. Het tiende deel heeft als titel “Robotica”. In dit deel wordt ingegaan op hoofdstuk 11: Reinforcement learning: al doende leert men.
11. REINFORCEMENT LEARNING: AL DOENDE LEERT MEN
Reinforcement learning is één van de drie categorieën van machine learning. De computer leert door in een testomgeving handelingen te testen en te zien hoe de omgeving reageert. Zo leert de computer welke handelingen tot het beste eindresultaat leiden. Dit is in het bijzonder effectief gebleken in het leren spelen van spellen. Door een computer tegen zichzelf te laten spelen, ontdekt het apparaat wat de zetten zijn die werken, en welke niet werken. Reinforcement learning heeft ook toepassingen gevonden, bijvoorbeeld in de robotica en de geneeskunde.
Meester van het bordspel
Seoul, 10 maart 2016. Lee Sedol, 18-voudig wereldkampioen go, kan niet geloven wat hij ziet. De computer waar hij tegen speelt, heeft net een zet gedaan die niemand had verwacht. Geen enkele menselijke go-speler, professioneel of amateur, zou deze zet hebben gekozen. Het lijkt wel een vergissing van computer AlphaGo, maar is het dat ook? Sedol moet er lang over nadenken. Na een minuut of 10 heeft hij een nieuwe zet gekozen en gaat het spel verder. Sedol speelt voortreffelijk, maar moet na 5 uur en 211 zetten toch zijn meerdere erkennen in AlphaGo. Misschien was het juist die onorthodoxe zet, die geen enkel mens bedacht zou hebben, die aantoonde dat AlphaGo superieur was aan menselijke spelers.
Hoe het ook zij, het door Google ontworpen computerprogramma AlphaGo slaagde erin om 4 van de 5 partijen tegen Sedol te winnen. Hiermee had de kunstmatige intelligentie voor het eerst de menselijke intelligentie ingehaald op het gebied van go. Dit tot grote verbazing van zowel go-spelers als AI-experts. Computers waren weliswaar al beter dan mensen in bijvoorbeeld schaken: al in 1997 was computerprogramma Deep Blue erin geslaagd om van de wereldkampioen schaken– destijds Garri Kasparov – te winnen. Go werd echter gezien als een veel grotere uitdaging dan schaken. Door de hoge complexiteit van het spel en de creatieve denkwijze die ervoor nodig is, was iedereen ervan overtuigd dat computers nog jaren, misschien decennia nodig hadden om er echt goed in te worden. In 2015 waren zelfs de beste go-computers hoogstens zo goed als een amateurspeler. Hoe lukte het AlphaGo dan om binnen een jaar de menselijke wereldtop te bereiken?
Reinforcement learning als ‘game changer’
Deze doorbraak werd mogelijk gemaakt door het zogenaamde reinforcement learning. Dit is een deelgebied van machine learning, waarbij een computer leert om een bepaalde taak zo goed mogelijk uit te voeren. Die taak kan bijvoorbeeld zijn: het winnen van een potje go. Een duidelijk doel, maar welke zetten er nodig zijn om dat doel te bereiken is maar de vraag. De computer gaat dit leren door duizenden of zelfs miljoenen digitale potjes te spelen, waarbij hij na elk potje te horen krijgt of het doel bereikt is of niet. Elk potje doet de computer net andere zetten om zo steeds meer informatie te verzamelen over welke zetten goed werken en welke niet. Uiteindelijk krijgt de computer een steeds beter beeld van welke handelingen per situatie het vaakst succes opleveren.
Dit is een fundamenteel andere aanpak dan bij de meeste vormen van machine learning. Meestal zijn algoritmen bezig met ofwel supervised of unsupervised learning (zie ook de hoofdstukken 12 en 13). Hier krijgt de computer een vaste set data en moet hij daarin de verbanden en patronen leren herkennen. Bij reinforcement learning daarentegen voert de computer herhaaldelijk een stappenplan uit en krijgt aan het eind van dat stappenplan automatisch een label dat zegt of het doel bereikt is of niet. Elke keer dat de computer dat doet krijgt hij een nieuw datapunt, een nieuw voorbeeld om mee te nemen in de analyse. Zo kan de computer zijn eigen data genereren en zijn er feitelijk geen grenzen aan de omvang van de informatie die hij kan gebruiken om van te leren.
Voorlopers van AlphaGo die nog geen reinforcement learning gebruikten, waren er vaak op gericht om te leren van menselijke spelers. Ze analyseerden grote aantallen door mensen gespeelde go-potjes en probeerden zo goed mogelijk professionele spelers te imiteren. Dit werkt tot op zekere hoogte, maar er kleven twee grote nadelen aan. Ten eerste vereist het gigantische hoeveelheden data, het liefst partijen gespeeld op hoog niveau, om van alle mogelijke spelsituaties te kunnen leren. Go wordt gespeeld op een bord van maar liefst 19 bij 19 velden, waardoor het aantal mogelijke spelsituaties ongeveer 10 tot de macht 170 is. Veel en veel meer dan zelfs het aantal atomen in het universum (wat er ongeveer 10 tot de macht 80 zijn), en veel te veel om allemaal in het computergeheugen op te slaan. Je zou dit kunnen proberen te omzeilen door alleen maar te kijken naar menselijke potjes (dat zijn er immers al een stuk minder) en zo goed mogelijk na te doen hoe mensen spelen. Het nadeel van deze strategie is echter weer dat het programma hooguit zo goed kan worden als de beste menselijke spelers. Zo niet AlphaGo, dat inmiddels de mensheid op go-gebied ruimschoots gepasseerd is en strategieën heeft ontwikkeld die geen mens zou kunnen bedenken.
De bijeffecten van zelf proberen
Een ander voorbeeld waar reinforcement learning goed gebruikt kan worden is in de wereld van de robotica. Stel, je wil een robot aanleren om zelfstandig van plek A naar plek B te lopen. Het liefst wil je dat hij dat zo snel en soepel mogelijk doet, maar het belangrijkste is dat hij op de één of andere manier plek B kan bereiken. Om het wat moeilijker te maken zetten we wat obstakels neer waar de robot overheen of omheen moet. Hoe hij dat het beste kan doen, vertellen we niet; de robot krijgt een aantal mogelijke bewegingen om te maken en daar moet hij het maar mee doen.
De eerste pogingen zullen waarschijnlijk faliekant mislukken. De robot maakt op dit moment nog willekeurige bewegingen, dus de kans dat hij toevallig bij zijn eindbestemming kan komen is minimaal. Gelukkig kan hij het steeds opnieuw proberen en zal hij uiteindelijk door puur geluk8 een keer een combinatie bewegingen vinden die hem wel van A naar B brengt. Dat geeft een mooi aanknopingspunt om verder te ontwikkelen. Wat als de robot zijn bewegingen ietsje aanpast? Komt hij dan nog steeds van A naar B? Misschien nog wel sneller dan eerst? De robot zal zo gaandeweg steeds vaker succesvol zijn taak uitvoeren en het zal ook steeds sneller en soepeler gaan. Misschien zal hij wel trucjes of sluiproutes ontdekken die een menselijke programmeur niet had bedacht, maar die wel bijzonder goed blijken te werken. Net zoals de onverwachte zet van AlphaGo. Niemand, zelfs de programmeurs, weten precies waarom hij die zet koos. Maar hij werkte wel.
Ook lopende robots vertonen soms onverwacht gedrag. Zo was er een keer een virtuele robot die na een lang traject van reinforcement learning bijzonder goed van A naar B kon lopen. Hij ‘rende’ op een manier die behoorlijk leek op hoe mensen dat doen en kon heel efficiënt over obstakels heen ‘springen’. Opvallend was echter dat hij intussen ook wild bewoog met zijn ‘armen’: vuiststoten met links en rondjes met rechts. Misschien bewegingen die hij zich per ongeluk had aangeleerd? Het zou kunnen dat hij bij poging nummer 1729 eindelijk zijn eindbestemming wist te bereiken en dat hij op dat moment toevallig ook deze armbewegingen maakte. De robot kan moeilijk weten welke bewegingen het nou precies waren die zo goed werkten, dus blijft hij ze allemaal maar gewoon herhalen. Inclusief de armbewegingen, ook al hebben die waarschijnlijk geen toegevoegde waarde in het lopen van A naar B. Of misschien hebben ze dat eigenlijk wel, en ‘weet’ de robot iets wat wij niet weten.
Versterking van de gezondheidszorg
Een ander vakgebied waar reinforcement learning aan een opmars bezig is, is de gezondheidszorg. Het traject van een patiënt bestaat over het algemeen uit een lange reeks van behandelingen, operaties, medicaties met variërende doseringen enzovoort. Het hoofddoel hiervan: zorgen dat de patiënt weer beter wordt. Reinforcement learning is bijvoorbeeld nu al in gebruik om de beste strategie te bepalen voor het behandelen van hart- en vaatziekten. Ook worden er computers gebruikt om simulaties te maken van hoe een infectieziekte zoals COVID-19 zich verspreidt en vervolgens te leren wat de beste manier is om dat te voorkomen.
Wel is het voor dit vraagstuk wat lastiger om een realistische oefenomgeving te creëren voor de computer die de keuzes moet maken. Een menselijke patiënt, met specifieke medische informatie en een persoonlijke context, is een stuk moeilijker om digitaal na te bootsen dan een potje go. Natuurlijk is het ook geen optie om de computer maar gewoon te laten oefenen op duizenden patiënten, om allerlei praktische en ethische redenen.
We zullen dus nog even moeten wachten op de eerste computerdokters, maar met de snelle ontwikkelingen op het gebied van reinforcement learning is de kans groot dat dokters hier binnen afzienbare tijd de vruchten van plukken. Computers zijn inmiddels al beter dan mensen in zo’n beetje alle denkbare spelletjes, van go tot Mario tot bierpong. Met de nieuwste technieken in reinforcement learning kunnen computers zelfs van mensen winnen in spellen met onvolledige informatie. Dit is bijvoorbeeld gelukt bij poker, waarbij de computer de bluf van zijn tegenstander moet lezen, en bij het computerspel StarCraft waarin de computer alleen de informatie krijgt die een menselijke speler ook zou kunnen zien.
Computers kunnen zich een weg banen door ingewikkelde hindernisbanen, kunnen zelfstandig auto’s besturen en worden steeds beter in het stellen van medische diagnoses. Wie weet staat er straks dan ook een robotdokter aan je bed die precies kan vertellen welke behandeling je nodig hebt. Misschien dat hij daarbij wat met zijn armen zwaait, maar dat zal geen afbreuk doen aan de kwaliteit van de diagnoses.