Artificiële Intelligentie – Machine Learning, Deep Learning en AlphaGo
De vorige keer hebben we in algemene zin gekeken naar AI en wat de mogelijke problemen kunnen zijn bij het opstellen van regels en controlemechanismen. Toen heb ik een aantal keer verwezen naar het idee dat de AI in staat zou zijn zichzelf te herschrijven. Dit idee van ‘herschrijven’ zullen we deze keer onderzoeken, waardoor we Deep Learning beter moeten gaan bekijken. Via Deep Learning krijgen we een beter beeld van hoe ver AI momenteel is. Ook wil ik een aantal voorbeelden uit de praktijk behandelen om uiteindelijk het enigmatische ‘AlphaGo’ te kunnen bespreken.
Intelligentie
Om te beginnen kunnen we ons afvragen wat intelligentie eigenlijk is. Er zijn in de loop van de geschiedenis verschillende definities en eisen voorbijgekomen, die allen een beter begrip proberen te krijgen van wanneer er nu werkelijk sprake is van intelligentie. Ook in de huidige wetenschap is er nog steeds levendig debat en onderzoek gaande naar hoe we intelligentie beter kunnen duiden en het beste meten. De definities en methoden kunnen nog wel eens variëren en daarbij zijn er ook nog eens verschillende vormen van intelligentie waarover men kan spreken. Denk bijvoorbeeld niet alleen aan zuiver analytisch vermogen en rekenkracht, die zich vooral goed laten meten in toetsen op school en in de bekende IQ-test. Denk ook aan sociale en emotionele intelligentie of aan verschillende vormen van creativiteit of wijsheid. Dit zijn andere gebieden waarin iemand heel intelligent kan opereren, waarbij de uitkomsten zo kunnen variëren dat ze niet altijd goed zichtbaar en meetbaar zijn in een testomgeving. Bekijk hier een opsomming van verschillende wetenschappelijke definities met sterk uiteenlopende uitspraken over intelligentie.
Intelligentie komen we dus tegen in een breed en complex veld van eigenschappen. Deze eigenschappen laten zich niet altijd even goed meten. Ze lijken vaak verankerd te zijn in iemands persoonlijkheid en zijn vooral ook sterk afhankelijk van hele specifieke contexten. Toch zijn er een aantal overeenkomstige eisen en eigenschappen die we terug kunnen vinden bij bijna alle definities voor intelligentie. De meest centrale lijkt het vermogen te zijn om een situatie te begrijpen en vervolgens ook op te kunnen lossen. Deze methode van probleemoplossing kunnen we denk ik het beste loslaten op een AI, omdat we de AI met een specifiek probleem willen confronteren. We willen niet alleen dat het goed kan rekenen of slechts abstracte verbanden ziet, maar we willen ook dat het in nieuwe, onbekende situaties met echte oplossingen kan komen. Oplossingen waar wij iets aan hebben of mogelijk niet eerder aan gedacht hebben. Om aan deze eis te voldoen, moet je stiekem al een heleboel kunnen. Je moet namelijk waarnemen, verschillen onderscheiden en het geheel van een gegeven situatie overzien en interpreteren. Vervolgens moet je het probleem kunnen begrijpen, zelf denken om plannen te maken, creatief zijn om het op te lossen en tot slot wil je waarschijnlijk ook nog de belangrijkste conclusies van dit hele proces onthouden, om ervan te leren.
Machine Learning
Maar hoe kan een programma dit alles bereiken? Hoe kan een programma eigenlijk zelf leren van een situatie? Hier komen we terecht op de vrij brede term ‘Machine Learning’. Er is sprake van Machine Learning als een algoritme (een stuk code met een bepaald doel) steeds beter wordt in het uitvoeren van taken, naarmate het meer gebruikt wordt. Zo’n algoritme is in staat te leren van verschillende data die er doorheen gaat. Dit soort algoritmes verwerken bijvoorbeeld niet alleen bestanden, door ze op alfabetische volgorde te zetten voor je, maar ze kunnen gaandeweg ook opmerken wat belangrijke overeenkomsten en verschillen zijn in de data zelf. Hoe meer data zo’n algoritme dus krijgt te verwerken, des te beter het onderliggende verbanden gaat zien. Hierdoor kan het zichzelf optimaliseren in de taken die het uitvoert. Dit doet nu al een beetje denken aan hoe wij zelf ook ervaring nodig hebben om iets te kunnen leren. Vandaar de term Machine Learning: de machine leert iets.
Machine Learning is een heel interessant veld in de informaticawetenschappen waar veel vooruitgang in wordt geboekt. De voordelen van Machine Learning zijn zelfs al goed zichtbaar in ons dagelijks leven. Denk aan de spamfilter van je mail, die uit zichzelf mails sorteert en met minimale correcties ook steeds beter kan herkennen wat voor jou spam is. Of de gezichtsherkenning voor de tags op social media, de zelfrijdende auto, Google maps en spraakherkenningssoftware. Al deze zaken bevatten zelflerende algoritmes die verbeteren naarmate ze vaker en door meer mensen worden gebruikt. Ze gebruiken al die ervaringen om steeds beter en betrouwbaarder te kunnen functioneren. Het gaat hier om taken die in de praktijk zo’n uiteenlopende situaties opleveren, dat wij mensen niet goed alle variabelen kunnen overzien om aan de software mee te geven. We weten eigenlijk zelf niet hoe we elke overeenkomst en elk verschil duidelijk zouden moeten uitleggen aan de computer, of dit zou gewoon onvoorstelbaar veel tijd kosten. Het is bij dit soort taken dan noodzakelijk dat de computer zelf de eigenschappen en situaties gaat herkennen om hier vervolgens lering uit te trekken.
Deep Learning
Laten we nog één stap verder ingaan op dit fenomeen van Machine Learning. Binnen het totale spectrum van programma’s die zelf leren, hebben we namelijk ook nog een specifiekere vorm genaamd Deep Learning. Hierbij werkt het algoritme in meerdere lagen van abstractie, waarbij data opgedeeld wordt in hele kleine clusters met elk een bepaalde waarde. Via deze lagen kan data op verschillende niveau’s geïnterpreteerd en ‘begrepen’ worden. Het bijzondere aan Deep Learning is dat dit begint te lijken op hoe ons menselijk brein werkt. Bij onze hersenen is er namelijk sprake van een neuraal netwerk, bestaande uit neuronen die ‘oplichten’ en via allerlei wegen met elkaar in verbinding staan. Ons zeer complexe netwerk van neuronen zorgt er onder andere voor dat wij verschillende waarnemingen kunnen interpreteren als geheel en verbanden kunnen leggen op meerdere niveau’s van betekenis. We kunnen bijvoorbeeld een plaatje bekijken en in één oogopslag zien dat het om een afbeelding gaat, begrijpen wat er is afgebeeld, hoe dit is afgebeeld en welke losse, specifiekere elementen hieraan te pas komen. Dit zijn dus allerlei observaties en interpretaties, die voor ons vloeiend door elkaar lijken te lopen en één geheel vormen. We kunnen de lijnen, vormen, tinten en kleuren onderscheiden. We kunnen globaal een emotie, oordeel of waarde toekennen aan hetgeen dat afgebeeld staat of een inschatting maken van afstanden en de grote van het onderwerp. We kunnen zelfs het medium en de stijl van de afbeelding onderscheiden: of het bijvoorbeeld om een foto, schilderij, tekening of fotobewerking gaat.
Dit is in grote trekken ook wat er met Deep Learning gebeurt. Deep Learning maakt namelijk ook gebruik van een ‘neuraal netwerk’. Het is het idee van observatie en informatie verdelen in hele kleine clusters, die vervolgens een bepaalde waarde of prioriteit krijgen. Aan de hand van deze waarde of prioriteit kun je zeggen dat ze meer of minder ‘oplichten’. Al deze kleine clusters zijn vervolgens verdeeld in een complex netwerk van verbindingen, dat verbanden kan leggen, om zo een diepgaander ‘begrip’ te krijgen van de verwerkte informatie. Hier wordt uiteindelijk een netwerk gemaakt dat de informatie op verschillende niveau’s kan begrijpen en dit nieuwe begrip ook steeds weer inzet om beter te kunnen functioneren.
Dit is dus een onderneming om een computerprogramma te laten leren en begrijpen zoals wij dit ook doen. Op deze manier krijgen we hele complexe zelflerende algoritme’s. De algoritmes die tot stand komen met Machine Learning en met name Deep Learning, kunnen dingen doen die niet specifiek zijn ingegeven door ons. Waarbij wij slechts de condities scheppen voor het zelflerende algoritme, dat vervolgens zelf dingen gaat ‘begrijpen’ en zich gaat ontwikkelen om steeds efficiënter te worden. Hier komen tegenwoordig al vaardigheden uit, die we misschien in eerste instantie helemaal niet hadden verwacht van een computerprogramma. Denk aan creatieve taken zoals bijvoorbeeld het schrijven van een verhaal, het componeren van een muziekstuk of het maken van een schilderij. Voor wie wilt zien hoe een neuraal netwerk van een AI tot stand komt, is deze video een aanrader. In de video laat Grant Sanderson op een visuele manier zien hoe neurale netwerken in elkaar zitten.
AlphaGo
Nu we intelligentie, Machine Learning en Deep Learning behandeld hebben, komen we eindelijk aan bij AlphaGo. AlphaGo is een stuk software waarbij eigenlijk alle zaken die ik eerder besproken heb in de praktijk samenkomen. In AlphaGo is terug te zien hoe een computerprogramma zichzelf kan optimaliseren, zelf kan leren, zichzelf herschrijft en uiteindelijk zelf kan gaan denken. Al deze dingen heeft AlphaGo nodig gehad om één enkel spel te kunnen spelen, namelijk het eeuwenoude bordspel ‘Go’. Go is een tactisch bordspel, oorspronkelijk afkomstig uit China. Er zijn schattingen gedaan waarbij vermoed wordt dat Go al 4000 jaar oud is en conservatievere dateringen zeggen dat het al zeker 2500 jaar gespeeld wordt. Het spelen van Go is in heel het Oosten al die tijd gemeengoed gebleven waardoor dit het oudste bordspel is dat nu nog steeds gespeeld wordt.
Laten we snel kijken waarom het zo bijzonder is dat AlphaGo dit spel kan spelen. Het lijkt in eerste instantie misschien niet zo bijzonder, als je denkt aan de vele computerprogramma’s die kunnen schaken. We hebben in 1996 bijvoorbeeld al ‘Deep Blue’ kunnen zien, een schaakprogramma van IBM dat het opnam tegen toenmalig wereldkampioen Garry Kasparov. Toch is het spelen van Go van een hele andere orde voor een computerprogramma. Go laat zich namelijk misschien wel vergelijken met schaak, in de zin dat het een eeuwenoud tactisch bordspel is met zwarte en witte stukjes, maar zodra we Go beter bekijken zien we dat het vele malen moeilijker te programmeren is. Dit komt omdat Go onvoorstelbaar veel variabelen heeft. Waar men in de openingszet van schaak 20 mogelijke zetten heeft, is dit bij Go al gelijk 361. Waar er in schaak gemiddeld 36 mogelijke zetten per beurt aanwezig zijn, ligt dit gemiddelde bij Go tussen de 150 en 250. Door deze enorme ruimte van mogelijkheden, kan een computer niet meer simpelweg alle mogelijke scenario’s afgaan om te zien wat gewenst is in de loop van toekomstige zetten. Als het dit namelijk probeert te doen (uitgaande van slechts 4 zetten vooruitdenken) zou het meer dan 320 miljard mogelijkheden af moeten gaan. Hier zien we dat de mogelijke variabelen van een spelletje Go al snel niet meer te overzien zijn naarmate het spel vordert. Een bekende uitspraak, om even een beeld te krijgen van Go’s complexiteit, is dat het vele malen meer mogelijke bordposities heeft (ongeveer 2 × 10170), dan de hoeveelheid atomen in het zichtbare Universum (geschat op 1080).
In 2017 verscheen er een fascinerende documentaire over de ontwikkeling van AlphaGo, waarin dit programma het uiteindelijk opneemt tegen een grootmeester in Go, de Zuid-Koreaanse Lee Sedol.
De volledige documentaire is gratis te kijken via het Youtube kanaal van DeepMind, het ontwikkelteam achter de AlphaGo software.
Herschrijven
Het spelen van Go is dus zo complex dat hier gebruik gemaakt moet worden van Deep Learning, in plaats van simpelweg zetten vooruit te berekenen. Wat er met Deep Learning gebeurt, is dat het computerprogramma een eigen begrip of misschien zelfs wel een soort eigen intuïtie ontwikkelt bij het spelen van Go. Het moet net als wij eerst een enorme hoeveelheid ervaring opdoen om uiteindelijk op slimme wijze te kunnen reageren op verschillende zetten. De algoritmes van AlphaGo zijn in eerste instantie beïnvloed door data van wedstrijden tussen menselijke spelers, maar hebben uiteindelijk zelf moeten ondervinden wat succesvol is in de praktijk door van alles uit te proberen. Hier heeft het honderdduizenden potjes tegen zichzelf voor moeten spelen. Daar komt uiteindelijk een code uit, die het spel heel effectief kan spelen. Het gekke aan zo’n code en aan de manier waarop AlphaGo te werk gaat (zo zien we ook in bovenstaande documentaire), is dat de makers zelf niet volledig meer begrijpen wat er onder de motorkap gebeurt. AlphaGo geeft wel netjes aan hoe ver het vooruit rekent en welke slagingspercentages er bij de verschillende zetten horen, maar omdat hier ook sprake van Deep Learning is, zien we dat het programma niet slechts simpelweg op deze percentages afgaat.
Het is niet precies te herleiden waarom AlphaGo de zetten doet die het doet. We zien het programma soms zetten doen, die een minimaal tot bijna nihil slagingspercentage hebben. Beide het ontwikkelteam en tegenstander Lee Sedol staan dan ook keer op keer verstelt van de keuzes die AlphaGo maakt. Het is zeer interessant om de Go spelers in de documentaire te horen spreken over deze keuzes. Er wordt gesproken over zetten die niet eerder zo gezien zijn, ogenschijnlijk zonder logica of zonder menselijkheid, maar die tegelijk ook weer vaak prachtig zijn om te zien.
Met heel deze onderneming zien we denk ik, dat mensen eigenlijk tekort schieten in het schrijven van software als AlphaGo. Daarom hebben we gekozen om een zelflerend algoritme op te zetten, dat uiteindelijk zichzelf gaat schrijven. Het heeft generatie op generatie, talloze variaties van zichzelf moeten uitproberen in de praktijk, om te analyseren welke het meest succesvol is. Dit is een proces van evolutie waarbij steeds de meest nuttige eigenschappen en de sterkste versies overblijven, om uiteindelijk nog weer sterkere voort te brengen. Het programma zal steeds nieuwe code blijven formuleren en deze blijven optimaliseren. Het moet zichzelf ‘herschrijven’ om zo zichzelf steeds opnieuw uit te kunnen vinden.
In het volgende artikel wil ik AlphaGo verder bekijken en zien hoe de potentiële kracht van dit soort algoritmes zich verhoudt tot de mens.
Reacties
log in of registreer om een reactie te geven