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

Door , , 38 reacties

Velen vinden het klassieke Mario Bros. een leuk spel, maar het kan af en toe moeilijk zijn. Hoe zou het zijn als Mario zelf dit spelletje kon spelen? Duitse onderzoekers proberen dat voor elkaar te krijgen door Mario kunstmatige intelligentie te geven.

Dankzij de kunstmatige intelligentie kan Mario zelf bepalen hoe hij ergens komt of muntjes gaan verzamelen omdat hij 'honger' heeft. Ook leert hij zaken over de omgeving van het spel en karakters in de game, zodat hij doorheeft dat een Goomba doodgaat als hij erop springt.

Mario kan nog niet helemaal zelf door de game heen dankzij de kunstmatige intelligentie, maar je kunt al wel met hem praten in de game. Hij geeft antwoorden op basis van zijn 'emoties' en ervaringen. Het is een project van onderzoekers van de Duitse universiteit van Tübingen. Wat precies het nut is van het project is een beetje onduidelijk, maar misschien ga je dankzij de kunstmatig intelligente Mario minder snel af in het oude Mario Bros.

Moderatie-faq Wijzig weergave

Reacties (38)

Kunstmatige intelligentie implementeren (succesvol) kan op zich een doel zijn.
Dat is volgens mij de nut. Informatie die je daaruit verzamelt over gedrag,keuzes en efficientie kan je later breeder\specifieker inzetten.

In game industrie alleen al is er bij vrij wel elk spel vraag naar goede AI.
Spellen worden steeds uitgebreider en wij met de dag veeleisender. Het kost al genoeg tijd om een game in elkaar te knutselen zonder dat je aan allerlei AI zaken moet denken b.v. AI pathfinding, wat in het verleden veelal scripted uitgevoerd werd.
Een goede AI engine die je breed kan toepassen scheelt heel wat ontwikkel tijd. Tijd die men goed kan besteden aan andere zaken waar "hand-arbeid" voorlopig de enige uitweg is.

Een eenvoudige voorbeeld vind ik (jij wellicht niet) al complex genoeg
Voorbeeld:LINK en dit is in mijn ogen nogal basic stuff!!

[Reactie gewijzigd door josipbroz op 19 januari 2015 13:37]

Het is wel zo dat deze A.I. heel specifiek voor dit spel is.
In games kan je niet een 'algemene' A.I. schrijven (met een op neuronen gebaseerd zelf lerend vermogen) omdat dit veel te veel resources opslokt, daar pas je de A.I. aan op de verschillende mogelijke omgeving factoren.
Voor een ander spel zal je dus bijna 'from-scratch' moeten beginnen.
Wat dit aantoont is alleen hoe slim de programmeurs zijn, hoe goed ze code aan kunnen passen op de omgeving variabelen van dit specifieke Mario spel.
Mits succesvol een goede entry op hun portfolio, maar geen baanbrekende wetenschap.
Als ze een serverconnectie hadden gemaakt naar een 'echte' A.I. server die dit spel EN andere spellen kon leren spelen DAN was het wel iets baanbrekend geweest.

[Reactie gewijzigd door Artimunor op 19 januari 2015 12:27]

Daar zijn wetenschappers ook mee bezig, general game playing heet dat onderzoeksveld. Om een voorbeeld te geven: er zijn inmiddels systemen om spelregels in te definiëren, deze worden dan aan general game AI's gevoed die vervolgens alleen aan de hand van die regels zelf het spel gaan spelen. Op http://www.gvgai.net/ wordt bijv. een competitie van zulke AI's gehost.
De action-space en de state-space waarin je moet zoeken naar oplossingen bij Super Mario is erg beperkt en leent zich uitstekend voor dit soort projecten. Tijdens mijn opleiding heb ik hier ook wel eens een opzetje voor gemaakt voor het eerste level. Je kunt Mario prima aanleren wanneer hij moet springen en wanneer hij kan/moet schieten met behulp van neurale netwerken, bijvoorbeeld. Met puzzeltjes waarbij het iets moeilijker is dan actie/reactie wordt het iets lastiger maar met meer training moet dat ook goed te doen zijn.

Leuk afstudeerproject bij deze universiteit, maar echt nieuws is het niet wat mij betreft.
edit:
Maar dat hoeft ook niet, want dit is .geek }:O

[Reactie gewijzigd door MadEgg op 19 januari 2015 10:27]

Wat vertel je dan aan je figuur? Hoe leer je een figuur dat ie moet springen? Ik neem aan dat je 'm leert dat ie Y hoog kan springen en X ver? Kan zo'n programma dan zien dat het volgende blok leeg is en kijkt het dan of ie binnen X-afstand een blok ziet, zodat ie horizontaal springt?

Ik vind het erg interessant, maar heb zelf totaal geen kennis van AI. Is mijn voorbeeld een beetje correct?
Niet in mijn implementatie. Dat hangt heel erg af van het algoritme. Je hebt supervised learning en unsupervised learning, dat laatste heb ik gebruikt.

Dat betekent feitelijk dat je er zo min mogelijk informatie instopt. De uitvoer bestaat uit een selectie van een commando: naar links, naar rechts, naar beneden, rennen of niet, schieten, springen.

De invoer bestaat uit de inhoud van het zichtbare scherm: welk blokje staat waar. En welk beestje zie je waar. "Welk beestje" is hierbij geabstraheerd als 0, 1, 2, ... Wat voor beestjes dat dat zijn en hoe hij daarmee om moet gaan mag hij zelf uitzoeken.

Vervolgens laat je hem gegeven de invoer (dus een grid van blokjes met inhoud, de score en de overgebleven tijd), een actie selecteren. Het resultaat daarvan is ofwel dood, ofwel in leven blijven. Een bijgevolg daarvan is het ophogen van de score-counter en het afnemen van de tijd, en eventueel het beindigen van het level.

Doodgaan wordt vervolgens beschouwd als straf: het nemen van de gekozen actie in die situatie wordt ontmoedigd door het veranderen van de gewichten tussen de neuronen in het neurale netwerk die voor deze actie gezorgd hebben. Het toenemen van de score resulteert in het licht verstevigen van die actie en het afronden van het level resulteert in een hoge versteviging van die verbindingen.

Heel simpel kwam het er bij mij op neer dat de eerste actie is het omzetten van de state (zoals gedefinieerd in de blokjes, de score en de tijd) in één getal: de waardering van die state. Hierbij heeft het bereiken van de vlag op het eind de hoogste waardering en het doodgaan de laagste. Alle states daarvoor worden op basis daarvan ingevuld, op basis van het spelen van het spel. Hierdoor zal de hoogste waardering zich als een vlek verspreiden over de states die leiden tot winst, terwijl de laagste waardering zich als een vlek verspreid over de states die leiden tot verlies.

Hiermee abstraheer je in één getal alle mogelijk rewards en failures, wat het makkelijker maakt om de actor (die de acties selecteert) te trainen.

Als alles in elkaar zit zet je het systeem aan het spelen en na vele (duizenden) oefenpotjes begint hij steeds beter te spelen.

[Reactie gewijzigd door MadEgg op 19 januari 2015 11:19]

[...]maar echt nieuws is het niet wat mij betreft.
Waarschijnlijk staat het daarom ook in de .Geek sectie, en niet in de officiële nieuwssectie :)
Goed punt, ik ben nog niet helemaal gewend aan de .geek sectie :)
Het doel van het project, als je het filmpje bekijkt, is niet zozeer om een AI te schrijven die Super Mario Bros. effectief kan spelen (dat zou veel beter kunnen met een specifiek programma, en dat kan zelfs als je de levels niet vastlegt) maar een oefening in kennisrepresentatie. Via een interface met spraakherkenning en -generatie worden feiten over de spelwereld ingevoerd en weer teruggepraat, en die kennis kan Mario ook opdoen door in de spelwereld zelf dingen te ervaren. Zo krijg je een agent die uiteindelijk wat domeinspecifieke kennis heeft van de spelwereld.

Dit staat nog steeds mijlenver af van intelligentie, natuurlijk, al was het maar omdat het meeste dat Mario "zelf" uitvindt van triviale aard is (gezien de kennis die er van te voren al ingestopt is over wat een "vijand" is, wat "springen" is, etc.) en de rest er bij verzonnen wordt door de onderzoekers ("emoties" die gewoon functies zijn met een numerieke waarde). Dit voegt niet iets wezenlijk nieuws toe aan de state of the art, het is gewoon een grappige toepassing.
Intelligentie is toch altijd maar zo "slim" als de getallen wat er achter draaien. Had je dit filmpje zonder uitleg gezien, was het vast veel magischer geweest, maar dankzij de uitleg, zie je hoe zijn "gedrag" kan worden beheerst. Zeer boeiend.

Maar idd wel beperkt :)
Intelligentie is toch altijd maar zo "slim" als de getallen wat er achter draaien.
Misschien -- dat is nog een hele discussie onder de onderzoekers. :)
Had je dit filmpje zonder uitleg gezien, was het vast veel magischer geweest
Een vroeg AI project (1968!) dat soortgelijke resultaten boekte is SHRDLU, dat handelingen kon uitvoeren in een blokkenwereld en daar zinvol commentaar op kon leveren. Naar moderne maatstaven is dit nog steeds behoorlijk indrukwekkend (indrukwekkender dan dit, vind ik in ieder geval). "Magisch" gaat wat ver, maar het toont wel goed aan hoe weinig de benadering eigenlijk gevorderd is sinds toen -- dit project komt niet veel verder dan SHRDLU, het heeft alleen een geliktere interface (aangezien we qua spraakbesturing wel verder gekomen zijn).
Dat zou wel een prestatie zijn. Mario mag natuurlijk ook weer niet te intelligent worden, anders is het snel klaar: Aaah, gorilla! weg hier! :+
Ja of hij begrijpt eindelijk dat al die blokken eigenlijk het volk van Mushroom Kingdom is en stopt eens met het kapot rammen van al die zwevende blokken:

http://sydlexia.com/image...truction_manual_story.jpg
Totdat Mario dadelijk zoveel AI heeft dat hij het spel gaat herprogrammeren zodat overal muntjes verschijnen.

Vervolgens wordt Mario nieuwsgierig naar de wereld buiten Mario World en komt hij er via internet achter dat het niet om digitale muntjes gaat, maar om materiële bezittingen. Hij herprogrammeert zijn spel om diverse instanties te hacken om uiteindelijk uit te komen op World Domination.

Hey Nintendo, bedankt hè!

Edit: grappig die moderatie hier. Mijn post is natuurlijk net zo min ongewenst als dat hij spotlight is. Het is meer om in te spelen op de redelijk recente discussie over het 'gevaar' van AI. Natuurlijk is het allemaal vergezocht, maar er zijn wel degelijk punten waar je de discussie kunt voeren. Maar kennelijk mag je van veel lui op Tweakers alleen maar 'oe' en 'aaaa' roepen bij technologische vooruitgang en is elke vorm van kanttekeningen direct 'ongewenst'.

[Reactie gewijzigd door Hoppa! op 19 januari 2015 11:08]

Dus skynet is eigenlijk mario
Of zijn evil broertje Luigi. Die wordt uiteindelijk jaloers op de intelligentere Mario en gaat dan helemaal los.
Mua, ik kan me daar wel iets bij voorstellen. Steeds je broer in de spotlight én een klotedeuntje horen de hele dag... Ik zou ook gek worden geloof ik.
je weet dat Luigi de Princess regelmatig bangt? :+ Dat is ook wat waard!
True, maar ook dat heeft z'n nadelen.. Denk aan "Luigi.. ik ben zwanger" enzo.. pfff
Het lijkt mij leuker om in een spel, tegen een kunstmatige intelligentie game te spelen, dan heeft het nog enige toegevoegde waarde.
Doet mij hieraan denken:
https://www.youtube.com/watch?v=prBEDkXy5yc
Super Mario Live Wallpaper voor Android wat al jaren bestaat. Random gegenereerde levels waar hij dan doorheen gaat. Zit ook een optie bij om de berekende paden te zien die hij in overweging neemt. Soms gaat hij dood, maar vaker niet dan wel.
Somehow, I feel less happy.

Het klinkt bijna als een tekst uit "Monkey Island" of "Sam and Max hit the Road". 8)7

Wel leuk dit onderzoek. Ik zie het meer als dat al dit soort ontwikkelingen samen gaan bijdragen aan zeer intelligente, zelfbewuste en zelflerende agents.

[Reactie gewijzigd door Double__D op 19 januari 2015 10:42]

Had google niet een project waarbij een zelf lerend algoritme elke game kon spelen bij observatie? Is dat niet een veel efficiëntere methode dan alles voor één game schrijven?
Dit is enkel voor geprogrameerde value's. Honger kan ook omgezet worden naar angst. en ieders keer als hij een muntje pak heeft hij geen angst.

Ze moeten zenuwen programmeren. Zodat ze een virtuele omgeving kunnen creëren waar karakters het koud of warm hebben en "Pijn" kunnen simuleren en daar zelf op reageren }>

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True