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 , , 64 reacties

Intel en Facebook hebben elk een van de twee onderdelen van de VizDoom 2016-competitie op hun naam gezet. Bij deze competitie moet een kunstmatige intelligentie zo goed mogelijk een potje Doom, de versie uit 1993, spelen.

Facebook wist met zijn team F1 met afstand de meeste punten te behalen bij Track 1 van de VizDoom2016-competitie. Het team won tien van de twaalf wedstrijden. Hierbij moet de kunstmatige intelligentie een deathmatch-potje spelen op een vooraf aangegeven map, met als enige wapen de raketwerper. Deelnemers kunnen hierbij medikits en ammo oppakken.

Track 2 werd door Intels team IntelAct gewonnen. Bij dit deathmatch-onderdeel spelen de ai's op drie maps die ze nog niet kennen, met verschillende wapens en andere items. Deze categorie is aanzienlijk complexer dan Track 1, omdat de bots op onbekend terrein spelen en ze rekening moeten houden met de invloed van de verschillende wapens. Net als Facebook domineerde Intel het onderdeel: eveneens werden tien van de twaalf games gewonnen.

De bots zijn gemaakt op het VizDoom-platform en spelen op een vergelijkbare manier als een mens dat zou doen en reageren met acties op gebeurtenissen die ze in het spel waarnemen. Dit platform is een geliefde manier om kunstmatige intelligentie te trainen, vanwege de eenvoudige 3d-graphics in combinatie met complexe gameplay die uitnodigt verschillende strategieën uit te proberen. Volgens Engadget koos het Clyde-team er bijvoorbeeld voor om te spawncampen.

De VizDoom-omgeving laat gebruikers machine learning zoals deep reinforcement learning toepassen om de bots steeds beter te laten spelen. De software-agents hebben daarvoor alleen directe toegang tot de schermbuffer en niet tot delen van de code van Doom.

Moderatie-faq Wijzig weergave

Reacties (64)

De gebruikelijke term is 'deep reinforcement learning', niet 'reinforcement deep learning'.
Deze samenstelling komt voort uit: deep learning (DL) en reinforcement learning (RL). DL wordt gebruikt om een model te leren dat het visuele vertaalt naar slechts een aantal numerieke waarden die als input dienen voor het RL model. Bijvoorbeeld kan de output van een DL model zijn dat er een vijand momenteel in je vizier staat. RL is een framework om goed gedrag te leren voor sequential decision problems zoals Doom waar gemaakte keuzes de toekomst beïnvloeden, dit doet men vooral door een zogeheten policy te leren dat aangeeft per input welke actie de beste is om uit te voeren op dat moment. Oftewel, vijand in vizier dan is schieten het beste om te doen.

Er zijn overigens meer mensen, vooral hobbyisten en wat onderzoekers, die op https://gym.openai.com diverse reinforcement learning uitdagingen aangaan waaronder ook Doom: https://gym.openai.com/envs#doom

Op 0:45 van de video zie je dat de AI nog niet doorheeft dat het een spiegelbeeld is. Geweldig!

[Reactie gewijzigd door Koffer op 23 september 2016 09:38]

Enig idee ook mischien waarom die rechtsboven alleen maar in de muurt loopt? Lijkt compleet van slag te zijn...
Ik neem aan omdat het een hoek van 90 graden is waar ze te strak in staan.
(Ik ben totaal geen expert, maar ik weet wel ongeveer hoe pc's 'denken'):

Ik neem aan dat het team een algoritme in heeft geprogrammeerd waarbij een personage ergens naartoe loopt tot het iets tegen komt, zoals een muur, en probeert er dan omheen te lopen. Wat er nu mis gaat is (denk ik) dat nu aan beide kanten een muur zit, waardoor het programma van slag loopt. (Hier had IntAct last van op 3:14. Rechtsboven is gewoon super brakke code denk ik, er zit bijna geen logisch patroon in te vinden)
Hij probeert te draaien maar ziet een muur, draait de andere kant op, maar ziet ook een muur. Dat schiet dus niet op.
Wat je ook ziet, is dat Rechtsboven tegen de muur aan blijft schieten. Waarschijnlijk is dit omdat het programma denkt dat hij een speler tegen is gekomen, waar hij niet doorheen kan lopen. En als resultaat: Hij schiet.

De spiegel is denk ik een combinatie van bovenstaande met dat hij iets ziet bewegen en dat ziet als een personage, maar dat is hij zelf.
Bijna alle teams trappen erin, behalve Arnold. Ik denk dat ze het zo hebben geprogrammeerd dat zijn personage even stilstaat nadat hij een paar keer geschoten heeft, waardoor hij kan detecteren dat hij het zelf is. Het probleem hiervan is, dat hij relatief vaak een andere speler langs hem heen laat lopen zonder dat hij er achteraan gaat.

Het kan wezen dat ik dit compleet mis heb, maar dit is wel hoe ik het zou programmeren :)

[Reactie gewijzigd door Fordox op 23 september 2016 18:00]

Het punt van deze competitie is dat je juist _niets_ programmeert, behalve de leeralgoritmes.

De reden dat je agenten tegen muren aanlopen heeft een paar mogelijke verklaringen (om het precies te weten zou ik moeten weten welke algoritme, modellen en policies gebruikt zijn):
1. het DL model is niet complex genoeg of heeft niet genoeg geleerd om de muur te zien en daar het RL model over te informeren.
2. het RL model heeft niet de juiste acties geprobeerd tijdens het oefenen of heeft dit niet op juiste manier geleerd.
3. Je ziet dat sommige agenten/bots/AI beetje heen en weer spartelen als ze naar de muur kijken; vermoedelijk hebben ze nog een mechanisme dat ervoor zorgt dat ze af en toe een andere actie kiezen dan degene die ze als beste beschouwden. Dit is iets wat gebruikelijk is tijdens het trainen, maar niet zo zeer tijdens het daadwerkelijk spelen. De meeste implementaties van DRL gaan hier volledig de mist mee in: ze hebben hier een doodleuke random factor ingegooid dat af en toe een random actie doet, maar bij spellen als Doom moet zon random actie actief voor langere periode zijn voordat je uit een hoek kan komen.

Doorgaans is het DL en RL model samengesteld in 1, ik spreek hierboven alleen van twee aparte facetten: het extraheren van informatie uit plaatjes (DL) en de juiste sequentiele acties kiezen (RL).
Ik denk dat 1) van Koffer een goede verklaring is.

Het lopen tegen een muur en het op en neer lopen tussen die muren, heeft blijkbaar niet zo een negatief effect gehad tijdens het trainen dat het afgestraft werd.

Stel je voor dat ze veel meer getraind zouden hebben. Als de AI dan voornamelijk tegen muren aan het lopen is en ertussen blijft lopen, zal hij risico lopen om neergeschoten te worden (daar zal hij wel voor gestraft worden met een penalty/negatieve reward), op die manier zou hij het af kunnen leren.

Een policy zal uiteindelijk geleerd zijn en zal in de test slechts uitgevoerd worden. Hier kan niet zomaar van afgeweken worden (dat wil je ook niet.. want dan heb je blijkbaar geen vertrouwen in je methode) en de bot zou weleens in een soort loopje terecht komen (echter zal dit bij het trainen ook gebeurd moeten zijn, en moet hij er een oplossing voor hebben bedacht als het hem negatief beïnvloed, eigenlijk weer hetzelfde als het vorige punt: er is te weinig getraind). Of bij deze bots ook echt een random actie wordt uitgevoerd betwijfel ik, ik zie dat in elk geval niet terug in het paper van Arnold.

@Fordox: Wat jij beschrijft is echt een regelgebaseerde bot. Als jij alle domeinkennis hebt van een probleem en weet hoe de bot het op zou moeten lossen, kan dit in sommige gevallen beter werken dan een bot zoals deze. Het probleem is dat het heel lang duurt voordat je de regels zo hebt gebouwd dat het goed werkt. Daarnaast zal jouw bot zich moeilijk aan kunnen passen aan veranderingen in de omgeving (andere spelers die nieuwe tactieken hebben, nieuwe levels, ...). Met bots gebaseerd op machine learning principes, kunnen er tactieken en strategieën ontwikkeld worden, waar wij nooit aan gedacht hebben en lost de bot het op zijn eigen "slimme" manier op. Dit kan er in onze ogen wel eens "dom" uitzien ;)
Kijk eens aan, ik had het dus compleet mis zoals ik al dacht :9

Bedankt voor de heldere uitleg! :)
Ik vraag me af hoe je dit soort bots in de toekomst kan tegengaan online. Lijkt me ontzettend lastig te detecteren.
Dat klopt. Maar aan de andere kant spelen deze bots volgens dezelfde regels als mensen, dus moet je dit wel tegengaan?

Als kind droomde ik er altijd al van om een systeem te maken dat alle spelletjes kon leren gewoon door naar het scherm (buffer) te kijken en de keystrokes en muis bekeek. Dus zonder de interne data van het spel te kunnen zien. Dit begint nu, 30 jaar later werkelijkheid te worden. Mijn AI ambities heb ik niet echt meer, maar ik vind dit wel supertof.
De vraag is straks is het als mens dan nog wel leuk te spelen tegen een bot als die bots beter worden dan jij als mens.

Schaken moet je al heel goed zijn om niet van een computer te verliezen dus een wedstrijdje tegen een computer verlies je meestal met schaken.

Het idee achter een spel en het winnen daarvan is juist de onderlinge competitie, dat is niet alleen met online spel zo, tennis, voetbal, hardlopen, noem het maar op. Je meet je kunnen als mens tegen mens.

Nu zal het in het begin nog leuk zijn om als mens van een bot te winnen maar het staat wat mij betreft al vast dat over x jaar 99.99% van de mensen van een bot zullen verliezen. Dan is de fun weg.
Bot zijn een bedreiging aangezien er in de spelen ook geld omgaat wat je kan verdienen. Dat model zal met een toenemend aantal bot op termijn dus ook om zeep geholpen worden.

Als mens moet je dan een ander vermaak zoeken waar je weer als mens tegen mens je prestaties kan meten.
Schaken moet je al heel goed zijn om niet van een computer te verliezen dus een wedstrijdje tegen een computer verlies je meestal met schaken.
Er kan al tijden niet meer gewonnen worden van computers. Zelfs programma's die draaien op een mobieltje zijn krachtig genoeg om toernooien te winnen. (https://en.wikipedia.org/...s#Computers_versus_humans) En er is zoals je aangeeft ook weinig interesse meer hierin. De vraag is hier zeker niet of het leuk moet zijn om tegen bots te spelen, bots waar je nooit van kan winnen in fps-shooters bestaan al tijden. Het gaat hier voornamelijk om de ontwikkeling van "ai" achtige technieken. Een spel is daarvoor een buitengewoon schikte manier om dit soort dingen te maken en te toetsen ook.
Het zou heel vet zijn als er op dat moment meer geschakeld wordt naar een coöperatieve spelmode, waar je met de AI samen speelt tegen een andere menselijke speler.

Op deze manier is de AI afhankelijk van jouw eigen acties en kan hij aan de hand hiervan gaan leren en zal jouw AI-maatje zich gaan ontwikkelen rondom jou en zal die zich anders gedragen dan die van een ander.

Op die manier hou je de mens-mens competitie in stand, maar maak je het nog dynamischer.
Klopt totdat jou ai kloon beter gaat worden dan jij. Dan krijg je ai kloon tegen ai kloon die op zich wel ander spelen maar uiteindelijk van de mens zullen gaan winnen.

Bij ai filmpjes die ik gezien heb zie je ook al verschillende vormen hoe men een probleem oplost. Je kan dus ook zegen dat ai een soort persoonlijkheid ontwikkeld aan de hand van hoe deze begint en leert op basis van de informatie die gegevens wordt.
Uiteindelijk zal het dus best zo kunnen zijn dat je een fase krijgt waarin de ene ai bot beter is dan de ander. Uiteindelijk zal de verliezende ai bot leren van de winnende, gedrag wijzigen en zoals in de film war games krijg je dan gelijkspel. (boter kaas eieren)
Het zou heel vet zijn als er op dat moment meer geschakeld wordt naar een coöperatieve spelmode, waar je met de AI samen speelt tegen een andere menselijke speler.
Interessant idee, maar het lost het probleem van valsspelen niet op. Als het de bedoeling is om te spelen in teams van één mens plus één AI, dan ga je nog steeds hopeloos verliezen van een tegenpartij die stiekem uit twee AI-spelers bestaat.
Dan houd je toch mens en AI competities gescheiden? Je doet toch ook geen wedstrijd hotdogs wegwerken tegen een houtversnipperraar? :+

De vraag is natuurlijk, tot welk niveau blijft het verschil een uitdaging. Moeilijkere battles winnen is juist dat wat de kick geeft en heel wat frustrerende mislukte pogingen de moeite waard maakt, om ff Doom termen te spreken, Nightmare mode.

Zie het als de stap van wielrennen naar motor racen. Zelfs op je opoefiets kun je nog van een snorfiets winnen, maar na wielrenner tegen brommer kom je toch in de catergorie waar techniek het stokje over neemt. Uiteindelijk hebben we nu en de Tour de France en de MotoGP, ieder zijn ding.
bbob1970 bedoelt het spelen in een game. Daarin is de bedoeling dat alleen mensen tegen elkaar spelen.

Zo'n game kan verpest worden wanneer iemand besluit een bot in te zetten.

Wanneer een bot speelt zoals een mens, dan is het nog niet zo'n ramp, maar wanneer een bot altijd gaat winnen, dan is de lol van het spelletje er zo af.
Dat is voor de spelers niet leuk, voor de gameontwikkelaar is het niet leuk en voor de gene die de bot in het spel is het maar ten dele leuk.

Eigenlijk verliest iedereen, maar toch zal er altijd wel iemand zijn die het niet kan laten.
Exact dat bedoel ik over x jaar krijg je bot systemen die ingezet worden op tegen mensen omdat er in games ook geld te verdienen is. Waar geld te verdienen is wordt vals gespeeld. Als je het verschil tussen bot en mens nier meer kan zien dan heb je een probleem
Dan heb je het dus over valsspelen, gewoon een goede scheidsrechter implementeren, net als sporters die nu doping gebruiken, of matchfixing... people will always cheat...
Een bot kun je zien als valsspelen. Als de ai bot echter zo menselijk overkomt zie dan maar eens eens scheidsrechter te vinden die het verschil moet gaan zoeken.

Dan moet je gaan denken aan camera controle via webcam of er ook echt een mens zit te spelen, oeps privacy komt dan weer om de hoek kijken.
Ik kan me bij wingcommander anders herinneren dat ze een beetje AI hadden ingebouwd; als jij als piloot de neiging had om bepaalde manier van vliegen elke keer weer te gebruiken dan ging de tegenstander dat ook doen en erop anticiperen. Dus werd je gedwongen om elke keer iets anders te verzinnen. %#*(!&%@#!@(%#@# ;)
Maar aan de andere kant spelen deze bots volgens dezelfde regels als mensen, dus moet je dit wel tegengaan?
Bots kunnen sneller reageren en nauwkeuriger richten dan een mens.
Dit is overigens niets nieuws.

Natuurlijk wordt bij veel spellen qua aimbot gewoon gekeken naar geheugenadresjes.
Maar bij RuneScape waren er bijvoorbeeld programma's die automatisch konden minen d.m.v. het zoeken (en klikken op) een bepaalde kleur in een gebied.

Hier zat echter geen A.I. achter.
Ik heb een heel aantal color based scripts (Simba) voor runescape geschreven en die gaan verder dan enkel wat minen. (Bossing, staking, merching,..)

Met de bots was ik vaak sneller ik PvM dan legitieme spelers.
Het ging me meer om trainer bots, die bijvoorbeeld voor jou spelen als je ligt te slapen, om zo sneller een hoger level te bereiken. Of farmen bijvoorbeeld.
Als ik zo de beelden bekijk ben ik toch weer een stukje minder bang dat de AI het binnenkort op gaat nemen tegen de mensheid :+

De University of Dundee had het tijdens die match toch grotendeels op de muren voorzien.
En Intel op zijn spiegelbeeld :D
Valt me nu pas op dat het spiegelbeeld niet echt klopt. AI ia :9 schiet met een pistool, en valt later zonder ammo en deelt vuistslagen uit, doch het spiegelbeeld blijft schieten met een soortement m16.
Is me als tiener nooit opgevallen.

Ik kan me wel herinneren dat het supergemakkelijk was om levels te bouwen voor Doom.
Als dat het enige zou zijn. Het spiegelbeeld is helemaal niet in spiegelbeeld. Daarnaast schiet de ai character met een handpistool in zijn linkerhand. Het spiegelbeeld staat met een submachine gun in twee handen erop los te sprayen. _/-\o_
Ik heb eigenlijk nooit geweten dat DOOM multiplayer gespeeld kon worden, maar dat kan ook aan mij liggen.

Zou wel verklaren waren niet alles gesynct is.
Blijk maar weer hoe verwent we zijn geworden. Vroeger vielen kleine details niet op. Maar nu schreeuwen we moord en brand als er 1 ding niet correct is.
Heeft deels met creativiteit te maken.

De mens heeft van zichzelf een 'blind spot'.
Midden van je oog waar de lichtinval op komt, komen geen gegevens vandaan. Dat wordt weer ingevuld met gegevens van je ander oog.

Met beide ogen maken we er een beeld van dat ogenschijnlijk wel scherper lijkt. Soort van interpolatie op menselijke schaal.

Tegenwoordig zijn beelden zo scherp dat dat stukje verloren lijkt te gaan en dat we ons moeten inspannen om weer een scherp beeld te creëren en daardoor merken we al die kleine afwijkingen.

https://en.wikipedia.org/wiki/Blind_spot_(vision)
En mocht het toch wel gebeuren: altijd een spiegel meenemen!
Moet wel zeggen dat Tuho redelijk goed kan navigeren.
Ben na 3 minuten de comments gaan lezen, kom ik aan bij die van jou, scroll ik terug naar het filmpje die ondertussen op ~5:30 staat waarbij tuho staat te wallhuggen. haha.

Allemaal hebben ze wel last van het Blair witch syndroom. Na de tekst: ,,Net als Facebook domineerde Intel het onderdeel'' was ik zeer benieuwd. Maar wat een domper.. domineerde, eerder was de ai minder dom dan de rest imo. Ze mogen beeld input gebruiken, maar ik zie geen van de AI's reageren op hun statusbar. HP laat ze niet anders reageren en het spiegel schieten had voorkomen kunnen worden als ze geintegreerd hadden dat het portretkleur midden onderin hun eigen kleur weergeeft. Een simpele check of de speler die zij zien dezelfde kleur heeft als wat hij zelf aan heeft lijkt mij toch wel logisch.

Wat UoD doet snap ik al helemaal niet, die blijft maar wallhuggen en schieten op de muur, alsof die nog nooit getest is.

Zijn er ook filmpjes gemaakt van matches waar de ai beter uit de verf komt?
Een simpele check of de speler die zij zien dezelfde kleur heeft als wat hij zelf aan heeft lijkt mij toch wel logisch.
En dat is dus precies hoe AI niet werkt. Deze software maakt gebruik van Reinforced Deep Learning. Die doen niet aan checks inbouwen. het idee is dat ze na een aantal potjes een keer doorhebben dat dit op die manier werkt. Zie het als een kat die voor het eerst in de spiegel kijkt. dat duurt ook altijd een tijdje voordat die het snappen.
Ik snap dat ze het zelf moeten leren, maar de ai moeten ze toch wel mee geven welke tools hij ter beschikking heeft? Immers staat in de tekst dat ze gemaakt worden voor 1 map die al bestaat met 1 wapen en een ander deel van de competantie waar zowel de map als wapens willekeurig zijn. Lijkt mij dat de dan al wel vantevoren mee hebben gegeven welke functies er zijn en wat ze tegen kunnen komen. Van wat ik zie weten ze wel wat een vijand moet zijn. Of heb ik dat verkeerd begrepen en een verkeerde conclusie getrokken daardoor?
Nee de grap is dus dat dat niet wenselijk is.
Wij maken op t werk gebruik van neural networks en je defineert daarin feitelijk een input en een output om mee te testen. Hoe het netwerk dan bij de output komt moet ie zelf weten. De patroonherkenning moet hij helemaal zelf uitzoeken. Juist door het toevoegen van rules beperk je de ruimte waarin de ai kan leren. En je wilt juist dat ie zich stiekem door een level heen "cheat" door slim gebruik te maken van obstakels. Dat kan alleen als ie het zelf leert en je er geen regels voor in programmeerd.
En toch denk ik wel dat er wat statische dingen geprogrammeerd zijn. Bij de regels staat bijvoorbeeld:
ALLOWED
•[red]setting agent's[/red] name and [red]color[/red] via add_game_args("+name AI +colorset 0") (or in a config file),

Je mag dus je eigen kleur kiezen, het kan zijn zodat je als team Intel een blauw poppetje kan nemen en als AMD een groene, of een schutkleur kan kiezen waar de andere AI mogelijk moeite mee zal hebben op te pikken, maar het lijkt mij dat dit is dat je de ai kan zeggen: dit is je kleur. Het gedrag wat hij zal vertonene moet AI bestuurd zijn, ik zie niet in waarom je vaste elementen door de ai zou laten leren.

Wij leren ook eerst van anderen wat voor input je kan geven met autorijden en wat borden betekenen, daarna leren wij onszelf hoe je die "tools" gebruikt. zoals: hoeveel gas geef je om op te trekken, hoe hard rem je, hoe snel rijdt je door een bocht zonder er uit te vliegen.

[Reactie gewijzigd door RadioKies op 23 september 2016 10:44]

En dat is dan ook statische input voor het spel die niet de partonen aanpast. Puur een parameter voor spelerskleur. Dat zijn geen regels over wat de AI wel en niet mag doen. Bij het trainen verwacht je deze parameter zowel in de input als in de output.
Een statische parameter waar je AI wat mee kan ja. Bij de regels staat alleen dat je AI intiligent gedrag moet vertonen (ipv scipted overkomen), ik zie op de site niet wat wel en wat verder niet mag. Je bent er helemaal vrij in. Dan lijkt het mij dus onlogisch om niet je AI te vertellen wat zijn kleur is.
En dat is dus precies waarom je het juist niet moet doen. Het lijkt jou onlogisch, maar dat is het dus juist niet. Hoe meer jij defineerd als zijnde dit is een patroon (want je eigen kleur defineren als input: jo dit is jouw kleur is een patroon), hoe minder ruimte de AI overhoud om dit zelf te ontdekken.

Alles wat voor ons logisch lijkt is voor AI onlogisch en andersom geldt het ook. Als wij een poppetje zien die dezelfde kleur heeft als dat balkje onderin dan denken wij oh dat ben ik zelf. Dat is een Patroon en dat moet de AI zelf leren. Je wil juist specifiek zo weinig mogelijk inprogrammeren. Dus als het algoritme er niet zelf achterkomt wat de kleur van het eigen poppetje is dan moet je misschien het algoritme beter trainen op wat goed is en wat niet. Net als dat je een hond beloond als hij iets goed doet en vermanend toespreekt als hij iets fout doet, "voed" je AI op door de output te valideren op correctheid. heeft ie het goed gedaan dan geef je hem een cookie en anders zeg je gewoon nee dit is fout.
Ik weet uit ervaring uit het vakgebied (computer vision & reinforcement learning) dat het gros van de algoritmes niet op kleur zal leren. Die zal als eerste stap het kleurenbeeld naar grijsbeeld vertalen, waarna het vervolgens de 'deep learning' model ingaat.

De bedoeling is dat niks gescripted wordt, behalve de algoritmes die dus leren. Voor problemen zoals doom zullen de algoritmes doorgaans leren door te experimenteren: ik zie het volgende, laat ik actie A doen. Later actie B, of welke acties dan voor moge zijn. Dit doet het dan heel veel keer waarna het een combinatie van inputs en outputs leert welke actie het beste is voor elke situatie.

Het hekelpunt bij spellen zoals Doom is dat je positie in de map zeer belangrijk is en dat het eigenlijk wenselijk is om een hierarchie te gebruiken: op hoog nivo gaat het over strategisch door de map lopen zoals ammunition en vijanden opzoeken/ontwijken, en op laag nivo gaat het over daadwerkelijk richten van je pistool en maneuvreren. Mijn vermoeden is dat de meeste inzendingen dit niet heeft gedaan en simpelweg een behoorlijke (deep learning jargon:) convolutional neural network met wat fully connected layers op het einde en die simpelweg zoals (reinforcement learning jargon) deep Q-learning met experience replay heeft getraind, of asynchronous advantage actor-critic.
Ik denk dat je een goede inschatting maakt van de technieken die er gebruikt zijn, of gebruikt kunnen worden om dit probleem op te lossen. (Wat doe je zelf binnen computer vision?)

In deze gevallen zullen de directe input/output relatie niet zo belangrijk zijn (reinforcement learning), dus slechts een reward voor goed gedrag en penalty's voor slecht gedrag (maar hoe modelleer je dit netjes? Dat is ook nog een kunst.). De directe output doet er niet meteen toe, alleen de reward. Wat er wel bij komt is het bepalen van je features.

Even een samenvatting wat één van de groepen heeft gedaan (Arnold - The Terminator)
Deze groep heeft het probleem opgedeeld in twee fases: één voor navigeren (rondlopen; zoeken van items en zoeken naar tegenstanders) en één voor vechten met een tegenstander. Voor beide fases hebben ze een apart netwerk geïmplementeerd.
Afhankelijk van of er een tegenstander zichtbaar is, wordt één van de volgende netwerken/streams gebruikt voor of de actie of de navigatie.
  • Is er een tegenstander in het frame: dan maakt de action-stream de beslissing -> Een Deep Recurrent Q-Network met de game features
  • Is er geen tegenstander in het frame: dan maakt de navigation-stream de beslissing -> Een simpel Deep Q-Network (hoeft alleen rechts, links, rechtdoor te navigeren)
Een extra truc die ze hebben uitgehaald: tijdens het trainen is de engine zo aangepast dat ze per frame al van de engine terugkrijgen of er een entiteit zichtbaar is in het huidige frame (een tegenstander, een health pack, wapens, munitie, ...). Tijdens het testen van de bot is deze informatie niet aanwezig. Uiteindelijk hebben ze alleen de aanwezigheid van een tegenstander gebruikt als extra input tijdens het trainen. Dit maakt het trainen sneller en de betrouwbaarheid natuurlijk hoger.

De opdeling in twee fases, maakt het trainen sneller en modulair. Wat ze ook als voordeel aandragen is dat dit het zogenaamde "campen" tegengaat (er wordt namelijk gewoon genavigeerd als er geen tegenstander is).

Een probleem wat ze onderschrijven is het modelleren van de reward. De score in een deathmatch wordt gemeten in frags, maar als je iemand één keer raakt, krijg je die frag nog niet meteen. Ook zul je eerst een goed wapen moeten vinden, etc. Het is dus een erg vertraagde reward voor allerlei acties die de speler van tevoren heeft gemaakt. Dit maakt het lastig en daar moet nog iets op gevonden worden.

Om dit op te lossen hebben ze de reward functie voor het actie-gedeelte opgedeeld in kleinere rewards (objecten oppakken is een +, health kwijtraken is - en schieten is ook een -). Voor de navigatie-stream is er een positieve reward voor voor spullen oppakken en een negatieve reward voor lopen in lava. Daarnaast gebruiken ze ook nog een kleine reward voor de afstand die er afgelegd is in de afgelopen stap. Dit stimuleert het verder zoeken (in plaats van rondjes draaien).

Paper: http://arxiv.org/pdf/1609.05521v1.pdf
Dank!
Momenteel doe ik niet dagelijks computer vision; zo nu en dan een klus dat ermee werkt. Ik heb wel heel veel tijdens studie+afstuderen aan RL gedaan.

De rewards zijn inderdaad zeer zwaar delayed. De enige zekere duidelijke factor is het aantal frags en of je won aan het einde; dat terug propageren is niet gemakkelijk. Een mogelijk betere optie is om te kijken of de vijand van het scherm verdwijnt, of als er een animatie is van dood, dat het dat detecteert.

Hun opdeling vind ik wel leuk; je moet voor zoiets als dit echt iets high level en low level hebben. Het oppikken van wapens is iets voor high level strategie. Door op de high level heel simpele state space & action space te verzinnen (i.e. een maze die je traversed) wordt het leerproces over 'pak wapen, zoek enemy' gemakkelijker te leren.

De keuzes die ze voor rewards hebben gemaakt liggen voor de hand, maar zijn ook gevaarlijk. Met name kunnen ze het probleem veranderen of moeilijker maken, bv. lopen is belangrijker dan vijanden neerknallen.
"De bots zijn gemaakt op het VizDoom-platform en spelen op een vergelijkbare manier als een mens dat zou doen en reageren met acties op gebeurtenissen die ze in het spel waarnemen."

Kijkt rechtsboven in het filmpje hoe de bot tegen de muur aan schiet. Het erge is dat sommige mensen dit daadwerkelijk ook nog doen 8)7
Missschien was het een zéér menselijke A.I. en wilde die, net zoals ik vroeger, zijn/haar eigen naam op de muur schrijven met kogelinslagen.
Missschien was het een zéér menselijke A.I. en wilde die, net zoals ik vroeger, zijn/haar eigen naam op de muur schrijven met kogelinslagen.
Dat lijkt mij dan sterk dat je dat in Doom (1993) kan doen, aangezien je niet eens omhoog of omlaag kan kijken. Blauwe bonen, raketten en plasma gaan alleen diagonaal via auto-aim, als een vijand op een hoger of lager niveau staat. Anders schiet je altijd in een rechte lijn.

[Reactie gewijzigd door The Zep Man op 23 september 2016 09:55]

Er was toen nog geen hoger niveau. Alles was plat, het leek alleen hoger.
Nee, Doom was juist zo revolutionair omdat het echt een grote stap was in FPS. Je had echte Z coordinaten, en je kon wel omlaag springen maar niet omhoog.

Aan de andere kant had je nog geen verdiepingen; bij elke X,Y coordinaat hoorde maximaal 1 Z coordinaat.
Zie wel een hoop stick-to-walls AI, muur rechts houden en daar links blijven lopen etc. Wel grappig om te zien dit! Maar inderdaad, zoals hierboven genoemd, een spiegel brengt ze perfect van slag :+
Agorafobie denk ik :). En daarnaast, ik ben als kind ook wel eens tegen een glazen deur gelopen. Als mijn spiegelbeeld een m16 vast zou houden terwijl ik alleen een pistool zou hebben, dan zou ik hard wegrennen! :)
+1.

Ik zat ook al te kijken waarom ze niet dood gingen en waarom ik hele andere beelden zag op het scherm eronder.

Ik zou toch terug gaan naar de IKEA als mijn spiegel zo slecht zou zijn. Links is rechts en rechts is links, maar alleen als het om jou gaat en niet om environment.

(hoewel... een spiegel die upgrade van revolver naar M16... ik zie een use case daarvoor.)
Haha, als je spiegel een heel ander beeld laat zien als de realiteit, zou ik alles behalve het ding terugsturen naar ikea
Nouja. Het idee van een spiegel is natuurlijk dat ie exact hetzelfde laat zien als dat er gebeurt. lichtbreking en weerspiegeling enzo.

Als mijn spiegel een heel ander beeld zou laten zien dan de realiteit dan zou ik mij toch afvragen aan welke drugs ik zit.
Ja daarom ;)
Ik zou de spiegel eerst onderwerpen aan een onderzoek, wellicht de media inschakelen en/of tentoonstellen :p
Ongeloofelijk dat dit spel (met deze graphics) destijds zo "intens" was, dat ik me helemaal te tyfus schrok als er iemand de kamer binnen kwam lopen ;)
Nuja, ik weet nog hoe ik op runescape super bang was in de (oude) "wildernis", maar dat kwam vooral door de opbouw/risico's.

Het zelfde bij (zelfs heel slechte) zombie games waar je alles kwijt gaat wanneer je af gaat.
Er zijn al bots in het spel bij aantal MMO's. Het verschil is dat zij gebruik maken van raw game data en niet visueel is ingezet. En met voorgedefinieerde tracking punten lopen ze naar bekende grind plaatsen en via raw data weten ze welke mobs ze moeten hebben.

Hoewel, niet elke bot heeft AI tegen menselijke aanvallen, van echte spelers. Daardoor konden we ze misleiden en uit de weg ruimen in pvp mode.

In Blade and Soul heb je b.v. te maken met combat bots in arena. Ook via raw server data en illegale acties maken ze je zuur. Gelukkig kunnen we ook slim spelen en met juiste tricks kun je bots alsnog doden. Dat heet vooruit denken en tactieken bepalen. De bots hebben dat zover niet, ook niet via zelflerende AI.

Puur op visueel spelen is nog moeilijker om al die pixels te analyseren ipv raw game data. Herkennen van spiegelbeelden en weet dat daar muur is niet altijd duidelijk voor bots. Er is veel hulp nodig van te voren in de code.
raw game data zonder AI werkt op een shooter meer dan genoeg.

AI is heel wat anders dan een bot, het herkennen van een spiegelbeeld kan makkelijk, maar dit moet de AI zelf leren, in plaats van het gewoon in te programmeren.
Haha! Prachtig hoe op 0:39 de AI linksbovenin tegen een spiegel aan loopt en denkt dat het een tegenstander is! Hij blijft vervolgens bijna 40 seconde op 'zichzelf' schieten. :)

Wel heel leuk om te zien! Ik zie dat ze er nog wel flink wat moeite mee hebben, maar het begint al beter te worden!
Het is logisch dat ze de code niet hebben gehad, anders had de AI kunnen zoeken naar IDDQD :)

Op dit item kan niet meer gereageerd worden.



Nintendo Switch Google Pixel Sony PlayStation VR Samsung Galaxy S8 Apple iPhone 7 Dishonored 2 Google Android 7.x 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