×

Laat je stem gelden!

Dit jaar organiseren we voor de elfde keer de Tweakers Awards! Wat vind jij de beste tech- en elektronicaproducten van het afgelopen jaar? Laat je stem gelden en ontvang 50 ippies. Je maakt bovendien kans op een Philips Hue Starter Pack, JBL Charge 3, Call of Duty: WWII of twee vrijkaarten voor de uitreiking op donderdag 1 februari!

Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Programmeur laat neuraal netwerk eigen Mario Kart-speelstijl imiteren

Programmeur en YouTube-persoonlijkheid SethBling heeft een neuraal netwerk getraind om zijn eigen speelstijl in Super Mario Kart te imiteren. Daarvoor gebruikte hij opnames van door hemzelf gereden races.

In de bijbehorende video legt hij uit dat hij vijftien uur aan videomateriaal heeft gebruikt om het neurale netwerk te trainen. Aan de hand van het materiaal moest het netwerk voorspellen welke knop SethBling zou indrukken in bepaalde situaties. De programmeur maakte daarbij gebruik van een zogenaamd recurrent neural network, oftewel rnn.

Als het rnn een verkeerde voorspelling maakt, wordt het 'gewicht' van een bepaalde input verzwaard, zodat het netwerk in de toekomst een andere afweging maakt en dichter in de buurt komt van de gameplay van SethBling, zo legt de programmeur uit. Hij kwam erachter dat als hij alleen zijn opnames gebruikte, het netwerk in situaties terechtkwam waar het niet meer uit kon komen. Daarom hield hij ook speelsessies waarin hij het neurale netwerk liet spelen en alleen in bepaalde gevallen ingreep.

SethBling gebruikte Googles opensourcebiliotheek TensorFlow om zijn netwerk te bouwen en heeft instructies online beschikbaar gesteld. Super Mario Kart vierde onlangs zijn 25e verjaardag.

Door

Nieuwsredacteur

45 Linkedin Google+

Reacties (45)

Wijzig sortering
Voor de geļnteresseerden; het YouTube kanaal 3Blue1Brown is een paar weken geleden begonnen met een serie video's over de werking van (klassieke) neural networks. Deze kun je hier vinden.

Het type netwerk dat SethBling gebruikt werkt in de basis op dezelfde principes, behalve dat het dus ook rekening houdt met de geschiedenis van de status van het netwerk bij het berekenen van de outputs.
Voor degenen die baby steps in neurale netwerken willen zetten: 'Make your own neural network' van Tariq Rashid. Een spotgoedkoop boekje dat heel concreet de werking uitlegt en stap voor stap een OCR use case implementeert. Heel diep gaat het uiteraard niet, maar veel mensen hebben een 'black magic' gevoel bij neurale netwerken, terwijl het basisprincipe vrij eenvoudig is en concreet uitgelegd en gedemonstreerd kan worden.
Als je dan nog wat meer tijd wilt investeren kun je de online Stanford cursus van Andrew Ng volgen:
https://www.coursera.org/learn/machine-learning
Zo goedkoop is het boekje ook weer niet (¤37,99):
https://www.bol.com/nl/p/...network/9200000057950572/
Hint: Kindle.

Kort geleden voor EUR 2.99.
Of je bekijkt gewoon voor nop de 45 minuten durende Pycon presentatie "A gentle introduction to Neural Networks" gebaseerd op het boek :)

[Reactie gewijzigd door mindcrash op 8 november 2017 08:45]

Super interessant inderdaad!

Je vindt op dat kanaal ook een super duidelijke introductie in de techniek achter de blockchain. Totaal offtopic weet ik, maar interessant genoeg om even te vermelden.
Bedankt voor deze link.
Dit is toch al uit 2 jaar geleden? https://www.youtube.com/watch?v=S9Y_I9vY8Qw ook van sethbling. toen heb ik de code nog gedownload.
SethBling zegt in de nieuwe video dat het doel hier niet was om zelf te leren hoe het spel werkt, maar om zijn eigen speelstijl na te apen. Daar zit dus een verschil in.
De vraag bij dit alles is hoe lang duurt het nog voordat een computer beter is in het spelen van dit soort behendigheidsspelletjes. Als ik me niet vergis is PacMan spelen al gedaan met een ongelofelijk hoge score.

De volgende stap waar men al mee bezig is, is laat een computer formule 1 rijden en wanneer zal deze sneller dan verstappen zijn.
Kan een AI computer dergelijke spellen niet nu al tot in perfectie spelen?? (want in tegenstelling tot bv een F1 race zijn hier de variabelen qua input redelijk beperkt...) Lijkt me haast wel.
Vind het knapper dat het hier gelukt is de computer als 'mens' te laten spelen - inclusief diens eventuele denkfouten / strategiefouten. Dan komt ineens ook de Turing Test om de hoek kijken... Hoe zie je nog dat het een computer is of een mens?

[Reactie gewijzigd door kazz1980 op 6 november 2017 13:55]

Ik denk dat het niet zo zeer dat is, maar dat de computer moet spelen met visuele input. Als je een AI leert Mario Kart te spelen met in plaats van visuele input de daadwerkelijke gegevens over de positie van spelers op een baan en zo dat hij heel makkelijk onverslaanbaar word (zoals bots nu eigenlijk).

Ik denk dat de AI nu maar de helft van de input heeft die jij en ik hebben en daarom ook in die situaties terecht komt waarin het mis gaat. Het is immers een AI en die snapt niet wat hij aan het doen is, alleen maar wat jij ongeveer van hem wil.

Voor een AI is die hele visuele input eigenlijk alleen maar nodeloos complex, je verbergt de informatie in een constante informatie stroom waar hij dan iets mee moet doen.

In tegenstelling tot mensen kan een computer beter overweg met de ruwe data die voor ons juist vertaald word naar visuele informatie waar wij dan weer meer mee kunnen.

Het is veel knapper dat een zelf lerende AI het op deze manier kan spelen, maar je mist een manier om hem duidelijk te maken wat hij aan het doen is.

Dit is ook waarom het veel makkelijker is een bot te maken die dit doet. Je geeft hem alleen de info die hij nodig heeft en de hele code is er op gericht dat ene doel te bereiken. Je bot "weet" wel wat hij aan het doen is.

Ik denk dat dit ook uit eindelijk een mooie manier is om een computer van een mens te onderscheiden.
Hoe zie je nog dat het een computer is of een mens?
Over x jaar als ai ver is zou je computer aan perfectie kunnen herkennen. Wil je dat niet kunnen zul je dus bewuste fouten moeten gaan inbrengen, c.q de computer aanleren niet alles perfect te doen maar alles op middelmatig niveau.
Perfectie vind ik juist niet echt kenmerkend aan AI... Mooi is hier dat er niet bewust fouten ingebouwd zijn, maar dat de computer geleerd heeft van een mens (die per definitie fouten maakt)... En dus zal deze AI ook fouten maken...
Het is maar net hoe je het ziet. als mens maak je fouten en normaal leer je daaruit c.q verbeter je jezelf.
Als mens heb je daarnaast te maken met je vaardigheden, in dit geval reactievermogen, kunnen sturen. Naar mate je het meer doet zul je beter worden.

Voor AI zal hetzelfde van toepassing zijn. Nu leer ai van een mens maar hoe ver laat je ai doorleren.
In dit voorbeeld gaat het denk ik puur om het spelen van het spel. Ga je echter ai meegeven dat het om snelheid c.q snelste tijd gaat, kan deze verder leren en dus fouten minimaliseren.

alles hang dus af van de parameters die je meegeeft. Speel een spel, blijf op de baan kan er eentje zijn.
AI zal zich dan waarschijnlijk niet perfectioneren en menselijke fouten kunnen maken.
Zeg je zet de snelste tijd neer zal ai mogelijkheden proberen te ontdekken, leren en uiteindelijk perfekt zonder fouten kunnen werken.
Bij AI training geef je niet zozeer "parameters" mee, als wel een doel, en een meetfunctie om te bepalen hoe ver je van het doel afzit (de "training error").

De AI algoritmes zijn zo ingericht dat ze de afgeleide tussen de training error en de AI parameters schatten, en op basis van die fout de parameters incrementeel verbeteren.

"Deep Learning" is een verzamelnaam voor algoritmes die ook indirecte AI parameters (op grotere afstand van de output) kunnen optimaliseren. Dat was vroeger een probleem omdat die parameters meestal op meerdere manieren doorwerken.
klopt bij sommige games hebben ze de AI potjes tegen AI laten spelen om zo veel meer potjes te kunnen spelen en daaruit kwamen ook heel onverwachte settings uit.
dus ja AI kan al van AI leren.
Natuurlijk kan ai van ai leren want in het begin is het zo dat de ene ai ander geleerd heeft dan de ander en ze net als een mens van elkaar zullen leren.

Uiteindelijk zullen de verschillen als ze goed leren steeds kleiner worden en afhankelijk van de opdracht, spel, zal er weinig verschil meer overblijven. Als je bijv dammen gekraakt hebt zou er net als boter kaas eieren gelijkspel uit moeten komen.
Waarom zou er een gelijkspel uit moeten komen? Er zijn spellen bekend waarbij de eerste partij een winnende strategie heeft (initiatief, voordeel van beginnen is te exploiteren), er zijn spellen waarbij de tweede partij wint (tegenpartij kan inspelen op beginzet).

Gelijkspel als dwingende uitkomst zie je met name bij spellen warbij een speler een zet mag overslaan. Dat voorkomt dat je je positie verslechtert, en je hebt daardoor situaties waarin beide partijen niet willen zetten en er een impasse ontstaat.
Echter is 1 van de belangrijkste features van een neuraal netwerk (of feitelijk elk ML algoritme) foutminimalisatie. Dus de input data kan hier en daar een fout bevatten, maar binnen de context van een NN zal daar na verwerking van de input data en aantal iteraties training op die input data een flinke foutcorrectie (die 0 benaderd) op hebben plaatsgevonden. Dit is bijvoorbeeld ook de reden waarom AlphaGo (en opvolger) 'gewoon' de beste Go spelers ter wereld verslaat, door zelf potjes Go te spelen en elke keer een bepaalde fout die gemaakt is niet te herhalen.

Of in wat minder technische termen binnen de context van het artikel: In eerste instantie speelt de KI Mario Kart ontzettend ruk, maar naarmate hij meer data krijgt aangereikt en op basis daarvan zichzelf kan trainen speelt hij steeds beter.

[Reactie gewijzigd door mindcrash op 8 november 2017 09:09]

Ik vermoed dat dat meevalt; perfectie is subjectief, en bovendien, neurale netwerken werken (grofweg) op vergelijkbare manier als onze hersenen, en die gaan geregeld de fout in, dus..
Je kunt nu ook al AI aan perfectie herkennen hoor. Speel maar eens Unreal Tournament met bots die je op het aller moeilijkste zet. En post hier dan maar eens de score. :P

Of speel een spelletje schaak tegen stockfish. Zelfs de aller eerste iphone met stockfish wint het in 100 spelletjes 90 keer van Magnus Carlsen

[Reactie gewijzigd door Kain_niaK op 6 november 2017 21:14]

De grafische gegevens moeten worden omgezet naar een reactie, de computer krijgt hierbij geen informatie over snelheid e.d., dus lijkt me dit toch lastiger dan zoals je het hier stelt.
De input is beperkt, maar wel immens complex.
Dat vond ik ook een eng idee bij de volgende AI gegenereerde video. Aan de hand van een audiobestand wordt een angstaanjagend realistische filmpje gegenereerd: https://youtu.be/9Yq67CjDqvw
dan ga je er wel vanuit dat de computer meer doet dan het naspelen van voor opgenomen circuits. In dit geval zal het NN niet 'beter' worden dan de input. Wellicht dat als de NN getraind zou worden om te winnen en het concept zou begrijpen van racen e.d. dan zou het wellicht meer in de richting komen van 'de beste mario kart racer'.

Op dit moment vind ik het een leuk experiment, tof dat een NN vanuit 15 uur trainings materiaal als oefening mee kreeg om zoveel mogelijk de opname 'na te bootsen'. Een stap verder is om het werkelijk Mario Kart te laten 'snappen'.
Kan deze 'bot' alleen bepaalde, vooraf ingestelde races rijden, of is 'ie ook in te zetten op een race die hij nog niet kent?
Is natuurlijk alleen interessant als deze bij elke race ingezet kan worden. Als deze alleen vooraf ingestelde races kan rijden, is het eigenlijk niets meer dan een 'videorecorder'.
Ik vind het een beetje lastig te begrijpen hoe de bot kan voorspellen wat er gedaan moet worden als de race steeds anders is.

Bij MarI/O (ook van sethbling) liet hij Mario constant verschillende knoppencombinaties proberen op ieder level om zo te bepalen welke combinatie het verst komt in het level. Zodoende kon ieder level na verloop van tijd nagenoeg perfect gespeeld worden.

Als er bij deze bot ook zoiets aan de hand zou zijn lijkt het 'machine learning' me veel logischer.

Hoe leert deze nu een nieuwe, onbekende race dan?
Volgens mij heb je paar scenario's die elke keer in meer of mindere mate waar zijn. Denk aan bochtje naar lilnks, bochtje naar rechts, rechtdoor, bonusitems in de buurt enz. Dat zal voor elke baan op gaan.
Ik vraag me dan ook af wat er gebeurd bij onverwachte situaties.. Als de AI geraakt zou worden door een banana.
Dan is de vraag: heb je een bot die goed mario kan spelen/snappen? Of iets wat een perfecte level kan spelen na 10000x proberen.

Ik zou wel eens willen zien hoe een perfecte mario ai random levels van mario maker krijgt voorgeschoteld en ze allemaal in 1x uitspeelt. Als het al zou kunnen...
Dit is een bekend probleem in AI. De zoekterm voor Google is "overtraining". Je kunt een netwerk teveel laten trainen op een te kleine set data. Dan werkt dat netwerk heel goed op die data, maar heel slecht op andere data.

Voor meer details verwijs ik graag naar de Coursera cursus van Andrew Ng, hierboven al aangehaald.
een baby krijgt in eerste instantie ook alleen maar de opvoeding van zijn ouders. En zal aan de hand hiervan dingen gaan dubpliceren. Na een tijdje merkt de baby dat hij ook zelf dingen kan verzinnen.

Als de AI dat ook zou kunnen doen, door zijn geleerde in process te brengen, en als dat goed gaat zelf input er bij gaat verzinnen om te verbeteen. Denk ik dat een kleine set data geen kwaad kan. Echter meer data en meer variablen zou kunnen helpen sneller te verbeteren.
Ja, die kan inderdaad perfect spelen na 10000x proberen, hier op basis van een soort evolutie. Ik raad je aan de video eens te kijken, het is echt erg interessant :)
Ik vermoed dat hij alleen op dergelijke tracks werkt, echter is er niet genoeg "opslag" of netwerk om zo'n "videorecorder" na te doen. De kunst is dus dat het het leert in een veel compactere representatie, en alleen de essentie onthoud.

Edit: En aan de video te zien zou het op meerdere tracks moeten werken, het opereert op een voorbewerkte beelddata (naar grijswaarden).

[Reactie gewijzigd door Dykam op 6 november 2017 14:19]

Misschien leuk om het linkje van Tensorflow ook toe te voegen voor de geinteresseerden. :)
https://www.tensorflow.org
Mensen draven alweer door, bij het lezen van dit soort berichten. Dit is niet meer of minder als ouwerwets programmeren, kansberekingnen en beslissingstabellen. Wordt al decennialang gedaan. Maar nu worden woorden gebruikt als "Neural network" en "AI" en mensen denken dat computers ineens tot leven komen!

Het is allemaal simuleren van menselijk gedrag, en de simulatie doet precies wat de mens prrogrammeert! daar is totaal niks AI aan.
Hallo Welkom in de toekomst. Dat is inderdaad gewoon door mensen geprogrammeert. En dat stukje code bewaart in data wat het leert en voert het daarna uit. Een beslissingstabel deluxe. En de manier waarop dit werkt heeft dus een naam, en dat is Neural Network. Mensen hebben de beslissingstabel niet geprogrammeerd.

En.. jij bent de enige die de term AI toepast hier.
De term AI komt in het hele bericht niet voor...
De volledige officiele naam van een Neural Network is Artificial Neural Network. Het doel van een Neural Network is om een computerprogramma zelfstandig te laten leren op basis van input. Een Neural Network is daarom dus wel degelijk een vorm van AI (of KI).
Dat is discutabel. Wat wel en niet onder de noemer AI valt wisselt snel tegenwoordig.
Maar is een ANN niet gewoon een tool/methode om AI te bereiken. Ipv dat het opzich zelf AI te noemen valt?
Nope. Hier is weinig programmeren aan (gewoon Tensorflow configureren), het is geen kansberekening (kansen zijn van die dingen die tussen de 0% en 100% zitten, met wetten zoals Bayes), en er komen geen beslissingstabellen voorbij.

En we weten van de recente AlphaGo Zero dat die gedrag vertoond wat er niet door mensen ingestopt is, simpelweg omdat er 0 kennis ingestopt is (vandaar ook de naam "Zero").
Bizar dat de enige invoer voor het neurale netwerk de video uitvoer van het spel is. Ik had iets totaal anders verwacht. Kennelijk moet ik me er toch eens wat meer in verdiepen.

[edit]
Correctie, ik begrijp nu dat het eerstvolgende stuk baan als een 2D vlak wordt geprojecteerd. Dat is al begrijpelijker, alleen wordt er dus geen rekening gehouden met items en enemies.

[Reactie gewijzigd door Bigs op 6 november 2017 16:39]

Op dit item kan niet meer gereageerd worden.


Apple iPhone X Google Pixel 2 XL LG W7 Samsung Galaxy S9 Google Pixel 2 Far Cry 5 Microsoft Xbox One X Apple iPhone 8

© 1998 - 2017 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Hardware.Info de Persgroep Online Services B.V. Hosting door True

*