Moravec’s Paradox

Hans Moravec schreef: “it is comparatively easy to make computers exhibit adult level performance on intelligence tests or playing checkers, and difficult or impossible to give them the skills of a one-year-old when it comes to perception and mobility“. Moravec’s Paradox. In 1997 versloeg schaakcomputer Deep Blue II Garri Kasparov, de op dat moment beste schaker ter wereld. Een ongekende prestatie. Vier jaar later loopt robot ASIMO nog steeds als een dronken peuter die net z’n luier heeft gevuld.
Het probleem van Moravec’s Paradox lijkt te liggen in het feit dat we behoorlijk belabberd zijn in het inschatten van de moeilijkheid van een taak. Moravec kan wel snoeven over het niet eens hebben van ‘the skills of a one-year-old when it comes to perception and mobility’, maar daarbij lijkt hij behoorlijk te onderschatten hoe complex de taken zijn die zo’n one-year-old allemaal uitvoert. Wat komt er kijken bij het zetten van een stap? We moeten diepte kunnen inschatten, zien waar we onze voet neerzetten, inschatten of dat vlak of scheef, zacht of hard is, we moeten onze balans van ons ene been naar ons andere been verplaatsen, de goede hoeveelheid kracht zetten en weer netjes uitkomen. Daar komen nogal wat systemen en berekeningen aan te pas. Neem daarentegen een potje schaken: met een simpel setje regels kan je alle mogelijke zetten relatief rap uitrekenen. Daarnaast heeft die one-year-old natuurlijk toch ook al heel wat data verwerkt in z’n jaar op aarde. Het kind is eigenlijk op elk moment bezig met proefjes doen: Kan ik dit vasthouden? Is dit lekker? Is deze tepel eetbaar? Vindt men het leuk als ik recht in hun mond nies? Daarnaast heeft het ook nog eens een aardige lading voorprogrammering in de vorm van genetica: dingen die we van generatie op generatie (vaak the hard way) hebben geleerd en die het kind nu al in z’n systeem voorgebakken heeft. Al met al: die one-year-old is lang niet het incompetente idiootje waar Moravec hem voor aan lijkt te zien.
Zo lijken de taken die computers erg goed doen toch ook wat gemeen te hebben: een relatief lage complexiteit. Ja, computers hebben ondertussen van mensen gewonnen met schaken, Go, en ze beginnen zelfs in complexere spellen succes te boeken. Maar al deze spellen hebben nog steeds een afgebakende speelruimte met afgebakende regeltjes. Game-tree complexity geeft een schatting van het aantal mogelijke toestanden aan: hoe hoger de game-tree complexity hoe meer mogelijke toestanden berekend zullen moeten worden. Zo heeft schaken een geschatte complexiteit van 10123, terwijl Go alweer op een geschatte 10360 mogelijke toestanden komt. En dat zijn spellen met een beperkt aantal vakjes op een bord, waar twee spelers om de beurt een zet doen. Als we naar een computerspel als Starcraft kijken zien we hoe de complexiteit ontploft: de beslissingen worden real-time gemaakt dus tijd is een factor, de hoeveel ‘vakjes’ in ongelooflijk veel groter en het aantal mogelijke toestanden vanuit de huidige toestand is bijna oneindig! Als we dan een stapje verder doen naar de echte wereld, en een peuter die een stap wil zetten wordt duidelijk hoe ongelooflijk complex zo’n berekening eigenlijk is.
Naarmate de computerkracht groeit kunnen we steeds complexere problemen oplossen. Stukje bij beetje beginnen we beter te snappen hoe ons lichaam deze problemen oplost, en kunnen we kijken of we dat in algoritmes na kunnen bootsen. Uiteindelijk leren we én hoe awesome ons lichaam eindelijk is, én hoe we onze eigen ontwikkeling kunnen gebruiken om met behulp van de computers nóg verder te komen. En zo gaan we verder, stapje voor stapje. Net als een one-year-old.