Uiteraard zijn voorgaande voorbeelden nauwelijks intelligent te noemen. Maar ik heb geprobeerd te doorgronden wat intelligentie nu eigenlijk inhoudt. Nu schakelen we over naar de historie van AI.
Men is al eeuwen bezig met het uitvogelen van semi-intelligente reacties op menselijke acties. Kijk naar het idee van robots! In de achttiende eeuw dachten Franse koningen en zelfs Napoleon het op te nemen tegen een schakende robot. Een machine in de vorm van een pop aangekleed als een pasja die in staat was tot het spelen van schaak! Een ware attractie.
Helaas was het niet zo. Dit mechanische wonder was een mechanisme dat moest worden aangestuurd door iemand die zich binnenin de machine verstopte en de zetten waarnam.
Nee, AI zou nog een tijd op zich laten wachten. Zelfs de eerste computers waren nauwelijks intelligenter dan de eerder beschreven duiker. De computers waarmee Alan Turing de berichten van de Duitsers kraakte waren niet meer dan heel uitgebreide rekenmachines. En in wezen zijn ze dat nog steeds. Een processor is niets anders dan een chip die gemaakt is berekeningen uit te voeren. Die berekeningen kunnen, door een heel proces, weer worden omgezet in de beelden die je op een computerscherm ziet.
Zelfs de computers die vijfentwintig jaar later voor de maanlandingen gebruikt zouden worden waren niet veel verder gevorderd dan de computers die Turing gebruikte. Al kwam men langzaam verder. De computer van Apollo elf, de maanlander, gaf tijdens de landing een foutcode weer.
Die foutcode moesten de astronauten weer doorgeven aan het commandocentrum in Houston. Daar zat dan weer iemand met een handgeschreven vel vol met codes en hun betekenissen. Je merkt dat dit nog erg primitief is. Maar merk op dat er al iets van automatisme om de hoek komt kijken. Waar de eerder genoemde duiker en de heks van Hans en Grietje reageerden op hun omgeving of door aansturing was de computer in de LEM (de feitelijke maanlander) in staat om zelf een probleem te signaleren en daarop te reageren. Dan wel met een code en niet met het welbekende blauwe scherm. Maar alle begin is moeilijk.
De foutcode die werd weergeven, 1201 en 1202, gingen over de computer van de LEM zelf. Hij kreeg te veel taken te verduren en kon geen nieuwe taken meer aan. Het is een wonder dat de computer deze codes kon weergeven want het was nooit de bedoeling om de computer zo ver onder druk te zetten dat die deze codes zou laten zien.
We hebben nu dus een computer die een probleem signaleert en daarop reageert. Zij het dan met een wanhopige uitlating van “1201” en “1202” dat hij het even niet meer aan kon. Maar die computer verzint dit natuurlijk niet zelf. Iemand moet die codes ingeprogrammeerd hebben en aangegeven hebben wanneer die codes zouden moeten verschijnen. Deze omstandigheden zijn “parameters”. Parameters zijn voorwaarden die bepalen wanneer een “probleem” zich voordoet.
Voor de duiker zou de parameter om geen water te lozen dus zijn dat het hoog water is aan de looszijde. De parameter, of eigenlijk parameters, om water te lossen zijn omgekeerd. Wanneer er geen water staat aan de looszijde dan mag er water worden geloosd. Maar er komt nog een parameter om de hoek kijken. Want als er aan de andere zijde van de duiker geen water staat kan die ook geen water lozen!
Maar goed. In een computer moeten ze worden geprogrammeerd. Zo ook in computerspelletjes. Een terrein waar ik een beetje bekend ben en waar ik het dus voor het grootste deel over AI ga hebben. In het bijzonder de evolutie van racespellen. Dit omdat het concept van een racespel simpel is; er is een speler. Die bestuurt een auto. Over de baan rijden andere auto’s.
Deze auto’s werken op AI. Ze moeten de baan volgen, maar tegelijkertijd ook tegengewicht geven aan de speler. Maar niet alleen de auto’s werken met AI. De hele wereld werkt met een soort van intelligentie. Stel je voor dat je met je raceauto met driehonderd kilometer per uur op een haakse bocht af gaat? In de normale wereld zou je uit de bocht vliegen wanneer je die bocht probeerde te nemen. Of erger; over de kop, rollebollend de tribunes in of te pletter slaan tegen de vangrail en een game-over veroorzaken.
Dus ook voor de wereld moeten parameters worden ingesteld. Die bocht kan je niet nemen met driehonderd. Sterker, geen enkele scherpe bocht kan gemaakt worden met driehonderd. Hiervoor moeten dus de parameters die in de echte wereld gelden worden nagebootst. Een te snelle auto die een bocht probeert te maken, waar dan ook, zal uit balans raken. Parameter 1. Daarna, als de afstand te lang is over de kop vliegen. Parameter 2. Of, wanneer er een object in de weg staat zal de auto daarop knallen. Parameter 2A. En, wanneer het object laag genoeg is wellicht eroverheen vliegen. Parameter 2A-A. In alle gevallen is de auto total loss. Parameter 3.
De tegenstanders moeten zich ook houden aan deze parameters. Wanneer ze niet afremmen vliegen ze uit de bocht en zijn ze total loss. Iets wat de AI ook wil voorkomen. Maar soms kan het gebeuren dat de AI besluit finaal uit de bocht te vliegen. Dit komt weer door een andere parameter die meer lijkt op toeval. Een RNG, of Random Number Generator.
Een parameter voor dit toeval kan op bepaalde momenten vragen aan het programma een nummer te genereren. Dat komt eigenlijk neer op het werpen van een dobbelsteen. Wanneer een bepaald nummer wordt “gegooid” kan de parameter bepalen dat de bestuurder “vergeet” af te remmen.
Uiteraard is dit heel erg versimpeld. Maar het belangrijkste is dat de auto’s van de tegenstanders zo rijden en zich gedragen omdat de programmeur dat zo gewild heeft. In vroeger tijden bepaalden tientallen parameters hoe een AI in een game zich behoort te gedragen. En een aantal zijn inderdaad van weerslag op de speler van het spel.
Een bekende internetmeme is gebaseerd op de fout van een ontwikkelaar. In het spel Civilization staat de speler aan het hoofd van een land. Dat land bevindt zich in een wereld met andere landen en hun leiders. Om het proces simpel te houden had de ontwikkelaar deze tegenstanders vaste parameters meegegeven. Een score toegevoegd aan deze parameters zou het gedrag van een tegenstander bepalen.
Julius Caesar was bijvoorbeeld oorlogszuchtig, maar niet onredelijk. Jozef Stalin daarentegen een bruut en Ramses II van Egypte wilde het liefst zo veel mogelijk monumenten bouwen. Atilla de hun wil jouw steden hebben en de Engelsen stichten het liefst zo veel mogelijk steden en koloniën.
Een van de heersers uit dit palet is Mahatma Gandhi. De vrijheidsstrijder die India wist los te weken van de Britse bezetting. Men kent hem als een extreem geweldloos individu. Maar in Civilization veranderde hij ineens in een oorlogszuchtige maniak die met kernbommen begon te strooien en om de minste reden de oorlog verklaarde.
Waarom zou de normaal geweldloze Gandhi dit doen? Het antwoord zat in de parameters van Gandhi. Zijn parameters maakten inderdaad dat hij geen geweld of oorlog zou nastreven. Hij had de laagste agressiescore van alle leiders in het spel. Maar die score kon worden aangepast door beslissingen die werden genomen in het spel. Wanneer Gandhi ervoor koos om in de latere fase van het spel democratie als regeringsvorm te nemen keerde zijn agressie om. Democratie zorgt er namelijk voor dat een leider nog iets minder geneigd is om oorlog te gebruiken voor zijn doelen. De agressie gaat dus een punt naar beneden.
Maar die van Gandhi kan niet lager. Hij kreeg dus een agressiescore van -1. Maar omdat er geen -1 kan bestaan behandelde het programma het als een klok. Net als dat er geen 13:-1 uur kan bestaan en het dus 12:59 is maakte het programma van de -1 agressiescore: 255. En omdat alle spelers in dit tijdsvak inmiddels beschikten over kernwapens was het dat waarmee Gandhi zijn hernieuwde agressie uitte.
Nu wordt dit verhaal bestreden door de ontwikkelaars. Maar het geeft wel aan dat achter de knoppen van de eerste AI mensen zaten die gewoon fouten maakten. In de nieuwere versies van het spel Civilization is Gandhi nog steeds een oorlogshitser die werkt met kernwapens. Maar dit is met opzet gedaan, ter nagedachtenis aan een legende.