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

DeepMind en Blizzard publiceren machinelearningtools voor StarCraft II

Door , 54 reacties, submitter: FPSMelvin

Googles onderzoeksafdeling DeepMind en ontwikkelaar Blizzard hebben samen een toolset onder de naam Sc2le uitgebracht, waarmee ze onderzoek op het gebied van kunstmatige intelligentie en reinforcement learning binnen de rts-game StarCraft II willen faciliteren.

DeepMind en Blizzard kondigen de tools aan in eigen blogposts. Daar melden ze dat Blizzard een api heeft ontwikkeld die gamers, hobbyisten en onderzoekers toegang geeft tot StarCraft II. Zo kunnen geïnteresseerden ook binnen een sandbox experimenteren met kunstmatige intelligentie op basis van scripts of met een zelflerende variant. Daarvoor is een volledige versie van de game vereist die is voorzien van de api. Volgens DeepMind is die aanwezig vanaf versie 3.16.1.

Volgens Blizzard is de api geschikt om op grote schaal op een centrale infrastructuur te draaien. De ontwikkelaar heeft daarom, naast macOS- en Windows-versies van de game, een aparte Linux-versie uitgebracht die alleen werkt met de api en bedoeld is voor onderzoeksdoeleinden. In gepubliceerde Sc2le-tools zit verder een verzameling geanonimiseerde replays van 1v1-games op de StarCraft-ladder. Dat zijn er nu 65.000, maar dat aantal moet in de komende weken groeien naar een half miljoen.

Om de api te gebruiken, heeft DeepMind zijn eigen PySc2-toolset als onderdeel van de release beschikbaar gesteld. Die biedt een Python-interface waarmee zelflerende agents met de game kunnen communiceren. Daarvan maakt ook een voor mensen leesbare interface deel uit, die voornamelijk is bedoeld voor debuggingdoeleinden. De interface is verdeeld in feature layers, die in onderstaande video te zien zijn. Tot slot geven de organisaties een verzameling minigames vrij waarmee onderzoekers kunnen testen hoe goed hun agents zijn in het uitvoeren van specifieke taken.

Schematische weergave van Sc2le

DeepMind schrijft dat StarCraft een interessante game is voor onderzoek naar kunstmatige intelligentie, omdat spelers verschillende taken moeten uitvoeren om te winnen. Bijvoorbeeld grondstoffen verzamelen, een basis bouwen en gevechten houden. Bovendien kan een enkel potje lang duren, waardoor acties die vroeg worden genomen, uitwerkingen op de lange termijn hebben. Daar komt bij dat er veel spelers zijn, waardoor er genoeg replays zijn om van te leren. Ook zijn er meer dan driehonderd acties mogelijk, vergeleken met een beperkt aantal acties in bijvoorbeeld Atari-games.

Tot nu toe is de zelflerende ai voornamelijk goed in het uitvoeren van specifieke taken, zoals het verzamelen van grondstoffen. Het spelen van een volledig potje is echter nog zeer moeilijk. Zo kunnen de agents niet winnen van de makkelijkste ai die standaard in StarCraft aanwezig is. DeepMind schrijft dat uit onderzoek is gebleken dat de kunstmatige intelligentie goed kan leren door imitatie. Daarom is er goede hoop dat door de publicatie van replays betere agents ontwikkeld kunnen worden. Blizzard en DeepMind hebben hun onderzoek gepubliceerd in een paper.

Het verschil tussen een getrainde en een ongetrainde agent

Sander van Voorst

Nieuwsredacteur

10 augustus 2017 09:56

54 reacties

Submitter: FPSMelvin

Linkedin Google+

Reacties (54)

Wijzig sortering
Wat ik mij nu afvraag is waarom dit zo'n nieuws is, Starcraft heeft toch allang een A.I.? Of gaat het puur om het lerende aspect? Ik ben hier geen expert in, iemand?
Dit is een van de eerste grote AI projecten waar de AI werkt in een omgeving waar het niet alle parameters tot zijn beschikking heeft. Bij Go, schaak en andere vergelijkbare projecten had de AI altijd alle informatie tot zijn beschikking en kon deze tot 'perfectie' analyseren en daarop gebaseerde interacties implementeren.

Bij Starcraft II heb je de Fog of War - delen van de kaart waar je geen zicht hebt maar waar zich natuurlijk van alles afspeelt (de vijand heeft daar z'n basis, bouwt legers, SCV scouts etc). De AI weet dit niet zeker maar moet daar op een manier rekening mee houden - hetgeen mensen doen met (klinkt heel flauw) boerenverstand. Echter, De AI is geen boer (al heeft hij wel serverfarms tot zijn beschikking :+ ) dus moet de I van AI herdefiniŽrd worden. De AI moet weten dat hij dingen niet weet en die leegte zo goed mogelijk invullen n.a.v. wat hij wel weet.

Aan het einde van dit project wordt je niet zomaar ingemaakt wanneer je een spelletje doet - je wordt op maat ingemaakt.
Wat ik mij afvraag m.b.t. de fog of war: er zijn grote delen van de kaart die je wel kan zien, omdat je daar gebouwen of units in de buurt hebt. Dat gebied kan veel groter zijn dan wat op het scherm zichtbaar is, dus je kunt toch op ieder moment maar een beperkt deel van de kaart in de gaten houden.

Maar een A.I. kan natuurlijk oneindige snel scrollen en kijken (neem ik aan?), dus de AI heeft al als voordeel dat hij meer tegelijk in de gaten kan houden dan welke menselijke speler dan ook. Geeft dit de AI niet al een oneerlijk voordeel?
Zoals anderen al zeiden in dit topic - het is lastig om te bepalen wat nou eerlijk is zonder een duidelijke context te zetten.

Als het AI versus mens is, zonder verdere voorwaarden, dan mogen beide partijen doen wat ze willen en alle middelen die zij tot hun beschikking hebben gebruiken. Als een AI 10.000 orders per seconde kan geven aan units - vooral doen. Immers, dat is dan het doel van de test - kijken hoe een AI presteert als Starcraft II speler. Op een gegeven moment zal geen mens ter wereld de AI dan nog kunnen verslaan, mede door de reden die jij geeft.

Niet snel daarna zullen onderzoekers/toeschouwers willen dat een AI de zelfde sensorische/zintuiglijke grenzen krijgt die een mens ook heeft. Want dan zal een AI slechts het aantal commando's per seconde kunnen uitvoeren wat een newbie/veteran/wereldkampioen ook kan. Het zelfde zal gelden met het verzamelen van info (scrollen, focus op het scherm, wel/geen geluid gebruiken als input). Dat kun je heel ver doortrekken, tot het punt dat een AI moet spelen als een kleurenblinde speler met die 1 functionele arm heeft en doof is.

Per test/match moet er vooraf gekeken worden wat ze willen testen en onder welke voorwaarden. Dan is het, in mijn optiek, eerlijk O-)

[Reactie gewijzigd door Kuusje op 11 augustus 2017 10:16]

Inderdaad, en volgens mij was het doel zo geformuleerd dat de computer in elk geval dezelfde interface moest gebruiken als een mens, dus ik dacht dat hij wel alles moet doen door (virtueel) op de knoppen in het spel te drukken. Verder vermoed ik dat zijn aantal drukken per seconde ook beperkt zal worden tot iets dat in de buurt zit van de beste spelers; die dingen horen namelijk niet bij intelligentie, maar bij andere aspecten van het spel.
Tja dan zou da AI in principe ook na verloop van tijd dingen moeten "vergeten" of "niet goed gezien hebben" zoals een menselijke speler, hoe ga je de vergeetachtigheid van een mens kwantificeren :p.
De AI weet dit niet zeker maar moet daar op een manier rekening mee houden - hetgeen mensen doen met (klinkt heel flauw) boerenverstand. Echter, De AI is geen boer (al heeft hij wel serverfarms tot zijn beschikking :+ ) dus moet de I van AI herdefiniŽrd worden. De AI moet weten dat hij dingen niet weet en die leegte zo goed mogelijk invullen n.a.v. wat hij wel weet.
Volgens mij hoeven we niks aan te passen en is dit zo'n beetje de definitie* van intelligentie: Met nieuwe situaties om kunnen gaan op grond van kennis en ervaring uit het verleden.
Mensen hebben ook geen kristallen bol in hun hoofd. Ons "boerenverstand" doet op een of andere manier precies hetzelfde als de AI, al zijn we ons daar niet van bewust.
Het roept direct leuke vragen op zoals: Wat de relatie is tussen (zelf)bewustzijn en intelligentie? Is het nog intelligentie als je het onbewust doet? Waar ligt de grens tussen instinct en intelligentie? Is er uberhaupt een verschil? Kan een computer intelligent zijn? Kan een computer een instinct hebben? Moet de computer daar zelfbewust voor zijn?

* er is geen echt goede definitie van intelligentie, overal zijn wel uitzonderingen op te bedenkenk.
Intelligentie kan alleen worden gedefinieerd in termen van probleemoplossend vermogen. Kan een AI een probleem oplossen wat bijv. een mier kan oplossen, dan is hij al in bepaalde mate intelligent. Wil je mens-equivalente intelligentie, zal de AI aantoonbaar problemen even goed op moeten kunnen lossen als een mens.

Een AI die mensen in SC2 kan verslaan, met wat restricties over max APM, reactietijd, zicht op de map, etc, is even intelligent / intelligenter dan een mens, in het enkele aspect van SC2 spelen.

Antwoord op je vragen:
Zelfbewustzijn is een illusie, ja, nvt, nee, ja, ja (als hij de benodigde hardware bevat), nee

[Reactie gewijzigd door Origin64 op 10 augustus 2017 12:31]

Volgens mij hoeven we niks aan te passen en is dit zo'n beetje de definitie* van intelligentie: Met nieuwe situaties om kunnen gaan op grond van kennis en ervaring uit het verleden.
Het ging me niet zo zeer om de definitie van intelligentie zelf maar de definitie van intelligentie bij AI. Van grotendeels reactief (acties gebaseerd op feitelijke data) naar proactief (acties gebaseerd op anticipaties, aannames en theorieŽn). Wel leuke vragen die je stelt, ik denk dat het 'waarom' aspect en logica (A vloeit voort uit B, vloeit voort uit C) een grote rol speelt. Maar dat zegt denk ik meer over hoe mensen kijken naar intelligentie. Misschien dat AI met andere pijlers voor intelligentie op de proppen komt 8)7
Het verschil tussen leerling en meester: de leerling imiteert, tot hij de meester kan verslaan - omdat hij voorbij imitatie is..
Heel simpel gezegd: de vorige 'ai' volgde een door programmeurs gemaakt script met een hoop 'als dit gebeurd is, doe dan dat'. De ai van dit artikel heeft enkel meegekregen 'win' en mag zelf zijn script schrijven van hoe dat het beste te bereiken is. Daar komt een stuk meer computer intelligentie bij kijken.

Tl;dr: de oude 'ai' was niet zelf lerend en dus niet echt intelligent.

[Reactie gewijzigd door svenk91 op 10 augustus 2017 10:16]

Vraagje, het is ai, artificial intelligence, geeft dat eigenlijk niet al aan dat het niet echt intelligent is, maar meer de indruk wekt van intelligent zijn?
Het intelligente van wezens met intelligentie is dat die op punt x een keuze kunnen maken uit een oneindig aantal mogelijkheden, terwijl een ai op exact datzelfde punt maar een keuze uit 2 mogelijkheden - 0 of 1 - kan maken? Omdat een ai dat in ongelooflijk veel minder tijd kan doen, en in dezelfde tijd dat dat intelligente wezen heeft besloten keuze x uit mogelijkheden oneindig te doen is de ai al 10000den stappen verder. en het lerende, is dat niet gewoon, in die situatie had die ?oplossing-boom? het meest succesvolle resultaat, dus mocht die situatie zich weer voordoen dan spring ik meteen naar het eind van die oplossing-boom en ga vanaf dat punt verder?
Het intelligente van wezens met intelligentie is dat die op punt x een keuze kunnen maken uit een oneindig aantal mogelijkheden, terwijl een ai op exact datzelfde punt maar een keuze uit 2 mogelijkheden - 0 of 1 - kan maken? Omdat een ai dat in ongelooflijk veel minder tijd kan doen, en in dezelfde tijd dat dat intelligente wezen heeft besloten keuze x uit mogelijkheden oneindig te doen is de ai al 10000den stappen verder. en het lerende, is dat niet gewoon, in die situatie had die ?oplossing-boom? het meest succesvolle resultaat, dus mocht die situatie zich weer voordoen dan spring ik meteen naar het eind van die oplossing-boom en ga vanaf dat punt verder?
Nee. Computers zijn binair, maar machine learning algoritmes vaak niet. Neurale Netwerken en Deep Learning werkt vaak met floats waarbij de individuele neuronen een neuron in je brein simuleren. Afhankelijk van de (floating point) inputs wordt er een uitvoer gegenereerd, die ook floating point is. Veelal op basis van sigmoÔde functies, S-gevormde functies met twee asymptoten, 0 en 1. Continue wiskunde dus.

Afhankleijk van het algoritme doe je vervolgens iets met die output. Je zou die kunnen thresholden naar 0 of 1, maar je kunt ze ook prima inzetten voor continue acties. Heel simpel voorbeeld: als je een mobiele robot op twee wielen bestuurt kun je een snelheid voor het linker wiel instellen en een snelheid voor het rechter wiel. Als je learning algoritme dan twee outputs heeft tussen 0 en 1 kun je dat schalen naar de maximale snelheid van de motoren en kun je ze dus nagenoeg continue aansturen. Het blijft digitaal, dus volledig continu wordt het niet, je hebt altijd een beperking in de numerieke precisie, maar het is veel meer dan binair. Op deze wijze kun je de robot zelfstandig laten rondrijden.

En of het nep is, daar zijn filosofen al decennia over aan het twisten. Wat ons brein doet is voor een groot deel hetzelfde, alleen dan wel op een wat grotere schaal dan wat ANN's doen. Miljarden neuronen die op basis van hun activatie een output afgeven waar dan weer verder mee gewerkt wordt. Dat daar dan bewustzijn uit voorkomt betekent niet dat dat alleen op basis van biologische neuronen zou kunnen. Het is zeker niet uit te sluiten dat dat op basis van digitale neuronen ook zou kunnen. Zo ver zijn we echter nog lang niet.

[Reactie gewijzigd door MadEgg op 10 augustus 2017 12:23]

nee, artificial is oorspronkelijk voortgekomen/bedoeld als kunstmatig, niet natuurlijk ontstaan (omdat de mens het heeft gebouwd) - maar verder niet van menselijke intelligentie te onderscheiden.

Elk gamebedrijf heeft vervolgens een autonoom script wat als tegenstander dient 'AI' genoemd omdat het cool klinkt, maar het is het in principe niet.
De mens is natuurlijk ontstaan, dus alles wat wij bouwen is ook natuurlijk ontstaan. :+
natuurlijk als in organisch ;)
En als we over 30 jaar een AI bouwen van organisch materiaal die de menselijke hersenen nabootst, is die dan nog kunstmatig?

We kunnen net zo goed nu de A uit AI halen en over 'Intelligences' gaan praten.
Als wij ooit een zelf-groeiend organisme wat zelf intelligentie ontwikkelt, kunnen bouwen, dan is het inderdaad volgens de oorspronkelijke definitie geen AI.

Ik denk dat dat echter nog wel tientallen zo niet honderden jaren duurt.

[Reactie gewijzigd door Chrotenise op 10 augustus 2017 12:50]

Ik gok 30 jaar. Spreek je in 2047 wel.
Iets wat voorgedefinieerd is, is absoluut geen AI en heeft daar ook helemaal niks mee te maken. Een voorgedefinieerde script/programma is een Robot. Robots zijn dom, want zij doen wat wij willen dat ze doen. AI leeft voor zichzelf en ontwikkelt zichzelf. Ik zie dat een bijzonder grote meerderheid op tweakers dit verschil al weer is vergeten. AI is nog steeds extreem complex.
DeepMind is de organisatie achter AlphaGo, die in het spel Go de beste spelers ter wereld versloeg.

zie https://tweakers.net/nieu...werelds-beste-speler.html

Een van hun volgende projecten was een spel als Starcraft omdat daar meer verschillende soorte handelingen en mogelijkheden zijn dan een spel met "beperkte" regels zoals Go.
Het doel is dus via machine learning te onderzoeken of/hoe een machine kan leren om het spelen te spelen net als mensen, en op hetzelfde niveau als mensen.
A.I. in spelletjes is voorgeprogrammeerd, ze hebben het hier over machine learning. Bij machine learning wordt een model opgebouwd waarmee het spel gespeeld wordt, dus ze proberen een programma het spel te laten 'leren' door replays van andere spelers te gebruiken.
Het doel lijkt hier dan ook meer te leren over machine learning waarbij ze hun eigen spel als voorbeeld gebruiken. Als ze een goed model gemaakt hebben zouden ze dit natuurlijk ook kunnen gebruiken ter vervanging van de voorgeprogrammeerde strategie die ze nu gebruiken.
Vorig jaar Maart lieten ze weten zich te concentreren op Starcraft 1 Dus waarom gaan ze zich nu focusen op Starcraft 2? Is het gelukt om een AI te maken op basis van Starcraft 1? Of is het makkelijker om een AI Starcraft 2 te leren?

[Reactie gewijzigd door rickboy333 op 10 augustus 2017 10:13]

Hoe bedoel je dit? (ik heb sc1 en candy crush nooit gespeeld)

Edit typo
Ik heb het zinnetje maar weggehaald gezien mensen de -1 knop gebruiken omdat aan te geven het er niet mee eens zijn ipv waar ie voor bedoeld is :(

Maar het feit is dat de engine van Starcraft 1 gelimiteerd is. Je kan maar 12 units per keer selecteren en de pathfinding van sommige units is... uhm questionable. Maar je moest een groter leger goed kunnen microen en waren je units niet zo bij elkaar gefrot dan in Starcraft 2. Een ''deathball'' maken was dus onmogelijk en als je dat deed moest je behoorlijk goed microen, en dat was nog niet eens zo slim, High Templars (die flink sterker waren in sc1) Lurkers (ook flink sterker), Defilers, Reavers, Siege Tanks (ook flink sterker) en noem het maar op konden deathballs in een vingerknip slopen. Daarom werd er veel meer aan kleine aanvallen gedaan en was het feitelijk een tug battle tussen 2 spelers. Alles was micro in Starcraft 1 en fouten maken was 50 keer makkelijker in Starcraft 1.

In Starcraft 2 kan je makkelijk een deathball maken en A-moven. Hierdoor zijn die kleine aanvallen verdwenen want waarom zou je? Je probeert elkaar alleen zo goed mogelijk te harrasen met een marine drop enzo maar feitelijk is het merendeel een beetje taggen met 2 deathball legers. En natuurlijk is het nog steeds mooi hoe pro's marine splits doen tegen Banelings en Mech position battles maar je kan niet ontkennen dat er mensen geweest die met 50/60 APM grandmaster zijn geworden en hoog zijn geŽindigd in WCS. Legacy of the Void heeft dit gedeeltelijk gefixed met de (re)introductie van de Lurker, de Disruptor ect waardoor die kleine gevechten meer aan het terug komen zijn maar feit blijft dat alle units op een mierenhoop worden gegooid en er in het verleden genoeg 1v1's zijn geweest waar ook de pro's alleen maar deden A-moven (Swarmhost anyone?)

Daarom denk ik dat het voor een AI makkelijker is om Sc2 te leren dan Sc1 gezien je makkelijker deathballs kan maken en je minder hoeft te vechten tegen de limieten van de engine. Dit kan ook in Starcraft 2 zoals Starbow heeft bewezen alleen Blizzard blijft er voor kiezen om Starcraft 2 units lekker opgefrot te laten.
Het probleem blijft dat jouw hele redenatie absoluut 0 invloed heeft op een AI.

Je kan maar 12 units per keer selecteren: Daar heeft de AI geen last van, in een microseconde selecteert hij 60 units en stuurt ze allemaal de juiste kant op.
Pathfinding is twijfelachtig: De AI geeft gewoon elke unit 600 commandos als ze 10 vakjes moeten lopen, en dan gaat die perfect op het pad wat de AI wil dat hij gaat.

Het vechten tegen de interface is iets wat mensen moeten doen, AIs hebben hier geen last van gezien ze zo goed als oneindige APM hebben.

Persoonlijk vind ik het positief dat mensen met lage APM ook GM kunnen worden, ik vind dat het bij een strategie spel niet hoort te gaan over wie het meeste klikt, maar ik weet dat velen het daar met mij oneens over zijn.
Mwa fair point, maar is de AI ook menselijk genoeg om beslissingen te maken.

Maar weet een AI ook wat hij moet doen als ik een Lurker/Defiler drop in zijn base doe? Gezien je per situatie moet kijken of je in of uit de Dark Swarm wil gaan. Weet een AI ook hoe positionering werkt want je Siege Tank op high ground zetten kan ook in je nadeel werken.

In Starcraft 2 heb je die zaken ook, maar is het veel meer straight forward en veel logischer. Een proxie Oracle heeft een hele duidelijke hardcounter, Een Infestor/Lurker drop is een kwestie van spreiden (+ een Lurker heeft minder range) Siege tanks doen maar de helft friendly damage dus het nadeel van high ground siegetanks is al minder.

En ik geef je inderdaad gelijk dat de AI geen last zal hebben van de limieten van de engine. Maar de strategie die in Brood War zit is gewoon dieper. De AI moet meer menselijke keuzes maken bij bepaalde gevechten terwijl bij Starcraft 2 het gewoon iets meer straight forward is. Dat is ook de rede dan de meta van Wings of Libery nadat Blizzard het niet meer ondersteunde nog steeds hetzelfde is en die van BW nog altijd veranderd.

Als laatste vergeet niet dat het om een zelf learning AI gaat en niet om een script. Hij zal bij de 2 base lurker aggrasion in zowel Sc1 als in Sc2 moeten bepalen wat hij eerst maakt per situatie, gaan voor lurker researh of toch nog die extra 4 drones erbij.

[Reactie gewijzigd door rickboy333 op 10 augustus 2017 13:54]

Het is echt compleet andersom. Het is makkelijker voor een AI om in BW een menselijke speler te verslaan omdat die AI geen problemen heeft met het individueel aansturen van al zijn High templars terwijl hij ook nog eens invidiueel al zijn builders vertelt om units te maken en tegelijkertijd expand etc etc. Juist omdat BW voor een mens mechanisch veel moeilijker is, is het gat met een AI groter omdat de AI alles tegelijkertijd kan doen en niet tegen de UI hoeft te vechten.

Daarnaast bestaat het deathball principe ook voornamelijk omdat dat gewoon de makkelijkste manier is om redelijk goede control te hebben voor een mens. Pak een random deathball, haal er 3 units uit en laat die perfect harassen (zoals twee afzonderlijke lurker drops of HT drops) en dan wint die AI. het is alleen near-impossible om dat goed te doen als een mens, maar AIs hebben die limitatie van ons niet.
Erg interessante discussie!
Wat levert dit onderzoek op als we vinden dat een AI niet mag:
  • deathballen (want saaie tactiek?)
  • micro'en (want logisch dat een mens dat verliest?)
  • exploiten (want dat was niet de bedoeling van de engine?)
In ieder geval het beschikbaar maken van coole AI simulatie software :)
Het toevoegen van de Lurker en de Disruptor maken het juist zo dat je nog meer deathball speelt omdat je elke keer dat je commit units kwijtraakt, ongeacht hoe groot je leger is. Je kunt dus beter proberen in 1x er overheen te walsen als je veel dps units hebt dan lange engagements aan te gaan. Tenzij je zelf ook veel lurkers en disruptors bouwt. Dan wordt het een wedstrijdje wie bouwt de grootste hoeveelheid disruptors en spreid ze beter.

Een sc2 AI die tegen mensen moet spelen zal beperkingen wat betreft APM en reactietijd moeten hebben, anders wint hij altijd op macro.

[Reactie gewijzigd door Origin64 op 10 augustus 2017 12:17]

Op welke manier is Starcraft 2 Candy Crush vergeleken met Starcraft 1? Enige wat ik kan bedenken is dat je de veel intuitievere user interface van Starcraft 2 bedoelt. Persoonlijk ben ik geen fan van moeten vechten tegen een slechte UI, maar los welk van de twee je prefereert: Een AI heeft daar absoluut geen enkele last van. Dat je (als ik het goed heb) in Starcraft 1 elk gebouw afzonderlijk moet aanklikken als je wat wil produceren, terwijl je in SC2 simpelweg alle gebouwen onder een control group hebt en de juiste hotkey ingedrukt houdt, waarnaar alle gebouwen zullen gaan produceren, maakt alleen een verschil uit voor mensen, niet voor een AI.

Los van het hele machine learning, volgens mij als je een beetje tijd met een groepje fatsoenlijke scripters eraan besteed moet het prima te doen zijn een AI te maken die zo goed als onverslaanbaar is. Als je ziet wat bestaande scripts al kunnen, zoals https://youtu.be/DXUOWXidcY0?t=51 en https://youtu.be/IKVFZ28ybQs?t=30, dan heb je daar geen schijn van kans tegen als mens, ook al is je strategie veel beter.

Oftewel een AI kan prima mensen verslaan met een inferieure strategie en geen flauw idee wat de tegenstander aan het doen is, simpelweg doordat zijn micro perfect kan zijn, en terwijl die 30 andere dingen aan het doen is zal die ook nog op het perfecte moment een nieuw supply depot kunnen bouwen.
Enige manier om een match Man vs Machine eerlijk te laten verlopen is een kwestie van de tijdslimieten van de mens ook in te stellen op de computer. Pas dan kan je vergelijken of het strategisch slimmer is. Die Automaton heeft gewoon een vrijwel oneindig hoge en nauwkeurige APM. Levert mooie beelden op van perfecte micro, alleen is het gewoon unbalanced. Laat dan twee Automatons tegen elkaar :+

Ben zelf als ervaren SC2'r erg benieuwd naar AI's die op master niveau mee gaan komen. Ziet het er in bovenstaand filmpje naar uit dat het nog een lange weg is, al kan dat met AI's natuurlijk snel bewandeld zijn. Ik vraag me ook af waarom Deepmind zijn tools vrij geeft, willen ze hiermee talent vinden of komen ze er zelf niet meer uit??
Dat ze Starcraft II zijn gaan gebruiken, is vorig jaar al op Blizzcon bekendgemaakt. ;)

https://deepmind.com/blog...-ai-research-environment/
Als ik het artikel lees waar je bericht aan refereert, waren ze voornemens om zich op SC1 te richten. Maar blijkbaar zijn ze van gedachten veranderd en richten ze zich nu op het vervolg.

Jeff Dean in Business Insider

Demis Hassabis in Verge
Gaaf nieuws :) hoe cool zou het zijn als in de toekomst bij games je geen moeilijkheidsgraad meer in hoeft te stellen, maar de AI zich gewoon aanpast aan de speler. Altijd een gelijkwaardige tegenstander.
Gaat niet werken. We zijn erg goed in het vinden van exploits en in heel veel games zit de grootste winst in het 'abusen' of 'double dippen' van bepaalde mechanics. Ga je dat een AI ook aanleren, dan verandert het landschap volledig. Zeker tegen de AI spelen we toch vooral om te winnen, ik denk dat de lol er voor velen wel heel snel vanaf zal gaan.

De nieuwe exploit wordt dan simpelweg een AI leren heel 'dom' te spelen en vervolgens zelf workarounds te bedenken voor de opzettelijke fouten. Bijvoorbeeld...

[Reactie gewijzigd door Vayra op 10 augustus 2017 10:38]

Huh, je speelt toch nog steeds om te winnen? Alleen je geeft niet meer aan welke voorgeprogrammeerde moeilijkheidsgraag je wilt, maar dit wordt besloten door de AI. Al denk ik niet dat dat het beste uitgangspunt is. Ik merk dat ik met mijn beperkte vrije tijd geen behoefte meer heb aan de moeilijkste uitdagingen, maar dat ik nieuwe ervaringen en mentale uitdagingen wil. Hierbij kan een AI wel dynamisch meebeslissen over de moeilijkheidsgraag, dus ideaal gezien zou het als volgt worden:

Traditioneel
  • Makkelijk: Vorige uitdaging + 1 vijand
  • Normaal: Vorige uitdaging + 3 vijanden
  • Moeilijk: Vorige uitdaging + 5 vijanden
AI
  • Makkelijk: (Vorige uitdaging + 1) * huidige gedrag uitgezet tegen geprogrammeerde verwachting = X vijanden
  • Normaal: (Vorige uitdaging + 3) * huidige gedrag uitgezet tegen geprogrammeerde verwachting = X vijanden
  • Moeilijk: (Vorige uitdaging + 5) * huidige gedrag uitgezet tegen geprogrammeerde verwachting = X vijanden

[Reactie gewijzigd door HellFury op 10 augustus 2017 11:14]

Voor bepaalde spellen werkt dat zo. Overigens zie je dat ook gebeuren in Diablo 3, daar heb je tientallen moeilijkheidsniveaus die in combinatie met je level bepalen hoeveel vijanden er zijn.

In Starcraft werkt dat niet - de AI zal zich nog steeds aan de regels moeten houden. Hij krijgt dus niet meer of minder resources, hij kan alleen beter of slechter spelen.

Je zult dus ofwel pre-trained AI's hebben met een bepaalde moeilijkheidsgraad die je zelf kunt kiezen, die vervolgens niet verder leren, of domme AI's die van je leren terwijl ze je verslaat tot op het niveau dat ze te moeilijk zijn om te verslaan. Reinforcement Learning optimaliseert de beschikbare acties en is houdt daar niet mee op. Zodra er een betere actie gevonden wordt zal daarop overgeschakeld worden.

Je kunt hoogstens hopen dat de AI een lokaal maximum behaalt, een plateau, waar vandaan hij eerst wat slechter moet spelen om een betere tactiek te vinden. Met de occassional random actie kunnen reinforcement learning algoritmen daar ook goed overheen komen, dus je zou je algoritme al moeten verminken om dat te voorkomen.

Kort gezegd: adaptief de slimheid aanpassen aan jou is heel lastig als je het leuk voor de mens wilt houden.
Veronderstellende dat de AI alleen leer van de spellen die het tegen jouw speelt, dan zou de AI ook tegen een wet van remmende voorsprong moeten aanlopen op het moment dat hij beter wordt dan jij: hij kan dan niet zo goed meer van jouw leren wat een goede strategie is. Van de andere kant kun jij van de AI leren hoe het wel moet.
Als zoiets goed werkt, dan ontstaat er op een gegeven moment een balans waarin jij en de AI allebei op het zelfde niveau uitkomen en je dus altijd een tegenstander hebt waar je aan gewaagd bent.

Als je de AIs kennis laat delen, dan zal er gauw een uber-AI ontstaan waar geen enkele menselijke speler nog tegenop kan, zoals dat intussen bij schaken en Go is.
Dan kun je hoogstens nog een AI-competitie houden: wie heeft de slimste AI ontwikkeld; dan heb je net zoiets als de Robocup wedstrijden waarbij het niet gaat om wie het beste kan voetballen, maar om wie de beste voetbalrobot kan ontwikkelen.
Veronderstellende dat de AI alleen leer van de spellen die het tegen jouw speelt, dan zou de AI ook tegen een wet van remmende voorsprong moeten aanlopen op het moment dat hij beter wordt dan jij: hij kan dan niet zo goed meer van jouw leren wat een goede strategie is. Van de andere kant kun jij van de AI leren hoe het wel moet.
Als zoiets goed werkt, dan ontstaat er op een gegeven moment een balans waarin jij en de AI allebei op het zelfde niveau uitkomen en je dus altijd een tegenstander hebt waar je aan gewaagd bent.
Ik ben bang dat het niet zo gaat werken. Tot op zekere hoogte wel, maar de AI zal naast het winnen van het potje wel bezig zijn met het optimaliseren van zijn strategie zoals de build order, de resource productie etcetera. Aangezien het leerproces heel anders en gerichter is dan bij mensen zal hij daar sneller van leren dan je als mens bij kunt houden.

Lastig te voorspellen hoe het precies gaat werken natuurlijk, maar ik voorzie dat de AI na een paar potjes wint en daarna steeds blijft winnen, terwijl hij steeds beter wordt en je het als mens niet bij kunt houden.

Als de enige reward is het verslaan van je tegenstander dan zou het misschien wel kunnen zoals jij het omschrijft. Dan moet je er wel voor waken dat je niet Free For All gaat doen met meerdere AI-tegenstanders, want dan gaan ze elkaar wel vooruit helpen als jij dat niet doet.
De essentie hiervan is wat je zelf zegt: je speelt om te winnen, maar het wel een beetje relaxed blijven. Ik vraag me af of de learning curve met een AI opponent nog uberhaupt te behappen is. De trend van tegenwoordig lijkt een beetje te zijn dat iedereen die een beetje aan het gamen is, ook gelijk competitief moet gamen of zo, terwijl de meesten gewoon even spelen voor de lol.
De nieuwe exploit wordt dan simpelweg een AI leren heel 'dom' te spelen en vervolgens zelf workarounds te bedenken voor de opzettelijke fouten. Bijvoorbeeld...
Waar de AI dan weer van leert, gaat dus (op langere termijn) niet werken. Vraag me af of de AI op den duur de menselijke speler niet gaat exploiten op zijn fouten..
Ja dat is het punt. Het is een eindeloze strijd niet meer binnen de kantlijnen van de gameplay mechanics van de game zelf, maar juist zoveel mogelijk erbuiten. Het gaat dan allang niet meer over 'unit counters' en dergelijke, maar over hoeveel APM jij hebt tegenover je AI opponent - en dat is per definitie een oneerlijke strijd. Je bent eigenlijk niet meer de game aan het spelen en 'leren kennen' maar vooral de AI die erin zit.

Een AI zal dus effectief, uiteindelijk, de winst pakken vanwege de beperkingen van de mens, motorisch gezien. Dat zie je nu al bij de 'AI' Micro bots in SC1.

Een ander aspect dat problematisch is, is dat een mens vandaag moe kan zijn en morgen hartstikke energiek. Een AI is altijd hetzelfde humeur, altijd even alert en even snel, maar weet niet hoe jij je vandaag voelt.

[Reactie gewijzigd door Vayra op 10 augustus 2017 12:21]

AI die zelf een exploit benut, behaald betere resultaten dan die het niet exploiteren. Ergo, is dit de reden waarom AI regelmatig exploits leren.

Beste (succesvolle) voorbeeld wat ik me herinner, is Qlearning Arkanoid. Je ziet dat de AI een gat heeft leren maken aan 1 kant, en daarna het bal door 1 blokje 'teleporteerde' naar boven.

Ander leuk verhaal is Polyworld, waar levende wezens nageslacht produceren en meteen opeten, voor infinite food.

Als je AI dus echt een kans wilt geven, moet je zijn mogelijkheden niet beperken ('dom spelen' leren).
gewoon als zeer eenvoudige tegenstander beginnen en leren van je menselijke tegenspeler.
Zou wel cool zijn, dan wordt je ook wat meer uitgedaagd in plaats van steeds op dezelfde manier winnen.

Al wordt het spel na verloop van tijd dan mogelijk wel te moeilijk.
Voor de ontwikkeling van AI is dit een interessante stap. Met name over de manier waarop AI nieuwe en moeilijkere dingen leert (gevolg en effect over langere termijn).

Starcraft met name is interessant omdat het niet een kort schaakspelletje is, maar een lang schaakspel. Net als we eerder gezien hebben met Google's AI en het spelletje GO. Probability berekening is met een potje starcraft veel moeilijker.
Een ander belangrijk verschil is dat bij schaken/Go alle informatie over het spel bij beide spelers bekend is. In het geval van bv SC, is dit niet het geval, omdat je niet kunt zien wat je tegenstander doet.
Goed punt! Dat maakt het juist des te interessanter. Deze AI zou dus niet de kennis hebben van wat de tegenstander doet, tenzij het misschien te laat is. Een extra soort kansberekening die onmogelijk lijkt.

Maar zoals welbekend zijn computers beter in kansberekening en het vinden van bepaalde patronen dat het toch mogelijk moet zijn om erop te anticiperen. Dit is ook het risico van AI naar mijn idee.
De computer zal iig kunnen bepalen wat de beste momenten zijn om te scouten op elke map, en een optimaal pad plannen, maar hier zal hij soms ook van af moeten wijken omdat mensen dat pad anticiperen. Dat is dus een stuk moeilijker dan 1 kansberekening, er zit een menselijke interactie in.

[Reactie gewijzigd door Origin64 op 10 augustus 2017 11:48]

Ugh.. Kon je al steeds minder makkelijk mee omdat je de snelheid niet hebt van jongere SC2 spelers, straks wordt je gewoon door de AI ingemaakt :)

Mooie ontwikkeling overigens toch wel. Zelf lerende AI kan het spelen een stuk interessanter maken.
Weet nog goed de tijd dat je in Red Alert muurtjes kon bouwen naar vijandelijke basis en van dichtbij turrets/tesla's kon spammen om zo op een goedkope manier te winnen van de AI. ( geen vijandelijke unit die op die manier meer bij jouw basis kon komen ) .
Dat soort tactieken zou met zelflerende AI snel afgelopen zijn.
een aparte Linux-versie uitgebracht die alleen werkt met de api en bedoeld is voor onderzoeksdoeleinden.
Ik hoop dat dit op termijn gaat resulteren in een volledige port van StarCraft 2 naar Linux, zodat men op Linux geen Wine meer hoeft te gebruiken om StarCraft te kunnen spelen. Het zou mij meteen weer klant maken bij Blizzard in ieder geval.
Een mede-student van mij heeft tijdens mijn opleiding een project gedaan met Starcraft 1 waarbij reinforcement learning gebruikt werd om micromanagement in veldslagen te doen. Waar veel spelers vooral groepen commanderen in het spel heeft een PC natuurlijk de mogelijkheid om units snel en effectief individueel aan te sturen. In het gehele spel was de betreffende AI best waardeloos, maar in veldslagen waarbij beide zijden ongeveer evenveel mankracht hadden was de AI daar extreem effectief in geworden.

Het hele spel goed spelen is een veel grotere uitdaging natuurlijk. Leuk dat ze hier een toolkit voor geschreven hebben voor Starcraft 2, ik ga hier zelf zeker ook eens mee aan de slag. Het spel is echt briljant en een leuke uitdaging om met RL te lijf te gaan.
Nice. Ik had al langer het idee dat het spelen van games (tegen zichzelf/elkaar en later tegen mensen) een nuttige manier is voor AI's om te leren. Dan is de AI bezig met daadwerkelijk problemen oplossen in plaats van 'leer een aap een truucje'

Op dit item kan niet meer gereageerd worden.


Apple iPhone X Google Pixel XL 2 LG W7 Samsung Galaxy S8 Google Pixel 2 Sony Bravia A1 OLED 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

*