V pokračování dříve zmíněného tématu na našem blogu se podíváme na to, jak je k němu aplikovatelné strojové učení a v jaké podobě. O svých zkušenostech a na jejich základě přijatých rozhodnutích expert na otázky AI v Apex Game Tools Jakob Rasmussen.

V posledních letech se hodně hovoří o tom, že strojové učení radikálně změní herní průmysl, neboť tato technologie se už stala průlomovou v mnoha dalších digitálních aplikacích. Ale neměli bychom zapomínat, že hry jsou mnohem složitější než simulátor řízení automobilu, řízení dronů nebo algoritmy rozpoznávání obličejů na obrázcích.
Zatímco v herním průmyslu stále přetrvává používání tradičních metod AI, jako jsou metody konečných automatů, stromy chování a — v poslední době stále častěji — AI založené na užitku. Takové AI se také nazývá design-based (umělá inteligence založená na designu) nebo expertními systémy. Ale stává se čím dál jasnějším — a to především hráčům — že tyto systémy jsou stále méně vhodné pro vytváření opravdu pokročilých protivníků, kteří by byli schopni imitovat chování hráčů. To se zvláště týká kreativních řešení. Lze to vysvětlit tím, že vývojáři umělé inteligence nejsou schopni vzít v úvahu všechny možné taktiky a strategie chování a úspěšně je implementovat v tradičních AI systémech. Pro hráče to často znamená, že je nudné a předvídatelné hrát proti protivníkovi, jehož linie chování je snadno zapamatovatelná.
K tomuto výsledku vede mnoho důvodů, ale jedním z hlavních je neschopnost AI se učit. Proto při vytváření umělé inteligence protivníka přirozeně přichází na mysl přechod na strojové učení, které se osvědčilo v mnoha jiných aplikacích. Ale existuje několik nuancí, které stojí za to zvážit. Tak herní AI by měla být schopná se přizpůsobit jakékoli situaci a využívat výhody, které nabídne, a také se adaptovat na různé herní styly soupeřů — živých hráčů a dalších AI.
Jaká je aktuální situace
Britská společnost DeepMind, která se zabývá vývojem umělé inteligence, nedávno ukázala, jak se může AI sama učit hrát hry, osvojovat si jejich pravidla a nacházet způsoby, jak projít hrou nebo v ní zvítězit — zatím však pouze na příkladu jednoduchých her, jako jsou rané hry — například šachy a japonská logická hra go. Výsledky získané pro ně ukazují, že umělá inteligence je schopna si vytvořit adekvátní hodnocení probíhajícího dění na hrací ploše. Pokud jde o adaptaci AI na různé herní styly protivníka, dosavadní výsledky nejsou zatím tak působivé.
V dnešní době již neuronové sítě dokážou rozpoznávat obrázky a řídit automobily. Tyto funkce však lze realizovat také pomocí relativně jednoduchých architektur, i když se v důsledku ukážou být poměrně hluboké a objemné. Například AI pro rozpoznávání obrázků na Facebooku má hloubku přibližně 100 vrstev, což ji činí podobnou biologickému mozku — z hlediska počtu a složitosti vzájemných vztahů mezi neurony, které tvoří jednu velkou síť.
Herní AI
Co se týče použití strojového učení v herním průmyslu, existuje řada omezení, která brání jeho využití v této oblasti. Patří sem systémové požadavky, zejména ty, které se vztahují k CPU, jež určují schopnost počítače zpracovávat složitou herní strukturu a jeho vhodnost pro herní vyprávění a hratelnost.
Takže se ukazuje, že v mnoha hrách není možné realizovat složité systémy umělé inteligence, protože chybí potřebný hardware a zejména klastrové servery, které existují například pro sítě rozpoznávání obrazů na Facebooku. Někdy musí dokonce fungovat několik AI najednou – nejen na počítačích, ale také na mobilních zařízeních a jiných méně výkonných platformách. To vše omezuje velikost a složitost architektury strojového učení, protože veškeré výpočty musí být prováděny s časem snímku kolem 1 nebo 2 milisekund. Samozřejmě je možné využít různé technologie optimalizace a rozdělení zátěže mezi snímky, ale přesto se z těchto omezení nelze zcela vymanit.
Složitost hry může způsobit vážné problémy pro AI. Například v hrách jako StarCraft II je herní mechanika mnohem složitější než v hrách Atari. Proto nelze očekávat, že při dané snímkové frekvenci a známých systémových požadavcích se strojové učení nutně seznámí s celým stavem hry a bude schopno s ním interagovat. Jak hráč často spoléhá na intuici v raných fázích hry, tak se AI musí naučit základní zpracování stavu hry, aby jednodušeji pokračovalo ve hře. Například v jednom z posledních. na mapách se zobrazují pouze ty informace, které vývojáři považovali za důležité: v jednom případě AI používalo zmenšenou verzi celé mapy, v druhém – podobně jako hráč, mohlo posouvat kameru, a pak jeho vnímání bylo omezeno pouze na informace na obrazovce.

Vizualizace hry AI AlphaStar proti hráči v StarCraft II: na screenshotu jsou zobrazeny "syrové" zdrojové pozorování, aktivita neuronové sítě, některé z jejích možných akcí a souřadnice, stejně jako předpokládaný výsledek zápasu.
Toto je zvlášť relevantní aspekt v případě her. Obvykle se na herní umělou inteligenci nevztahují běžně používané metody strojového učení. Například obvykle nemusí vyhrávat nebo dělat vše, co je v jeho silách pro vítězství, jako tomu bylo v případě her Atari. Častěji je úloha AI, aby hru učinila atrakčnější. Může být nezbytné, aby hrála roli a chovala se tak, jak to vyžaduje charakter postavy, za kterou je zodpovědná. Takže herní AI je více spojena s herním designem a vyprávěním příběhů a musí mít potřebné nástroje, aby mohla řídit své chování k dosažení stanoveného cíle. Čisté strojové učení pro to není vždy vhodné – což znamená, že je třeba hledat něco jiného.
Praktické problémy strojového učení
Tyto problémy se objevily při vývoji umělé inteligence založené na strojovém učení pro , kde se AI musí chovat jako běžní hráči – tedy být stejně flexibilní a vynalézaví.
Stejně jako Starcraft II, je Unleashed mnohem složitější než šachy a go na Atari. Hratelnost je intuitivně srozumitelná a snadno se ovládá, ale k opravdovému úspěchu v ní jsou potřebné určité dovednosti v řízení meta. Hráč musí vybudovat labyrinty, posílat na nepřátele monstra a promýšlet svou strategii v ekonomice, útoku a obraně budov po celou dobu hry. K tomu musí bluffovat a předvídat tahy druhých, stejně jako řídit psychologickou metu – ta dělá z pokeru něco víc než jen statistickou hru.

Screenshot z Unleashed
Při hledání nejvhodnější architektury pro tyto účely byly nejprve do hry nainstalovány technologie jako a hluboké učení a otestovány, jak se prokáží v surové podobě jako protivník AI.
Bylo to otřesné.
Rychle se ukázalo, že v Unleashed je nutné vyřešit mnoho globálních problémů, na které se těžko zaměřuje strojové učení.
Jedním z cílů je vybudování efektivního labyrintu. Stejně jako v mnoha hrách, jejichž cílem je ochrana věže, i zde se hráči musí kolem ní postavit labyrint, kterým se budou probíjet příšery. Ty je třeba odstranit pomocí zbraní rozmístěných v labyrintu. Ideálně by měl být labyrint co nejdelší, aby bylo možné příšerám způsobit dostatečné poškození a nedovolit jim dosáhnout věže. Některé typy zbraní jsou na příšery účinnější než jiné, proto by měly být umístěny v labyrintu co nejdříve, než ty ostatní. Zajímavostí Unleash je, že neexistuje dokonalý labyrint: ve hře je tolik typů příšer, že nakonec někdo z nich bez překážek projde nějakou částí labyrintu. Každý labyrint je třeba přizpůsobit novým příšerám, které spouštějí jiní hráči. Tím pádem bylo nutné naučit umělou inteligenci nejen stavět labyrinty, ale také vytvářet efektivní labyrinty pro různé scénáře, se kterými se lze setkat jak v rané, tak v pozdní verzi hry.
Umělá inteligence se také musela naučit vypočítávat, jaké příšery se objeví v labyrintu. To je jakýsi inverzní problém ve srovnání se stavbou labyrintu. Stejně jako v mnoha jiných hrách, v Unleash nestačí jen zvýšit armádu a poslat ji do tábora nepřítele: je také třeba špehovat nepřátelskou obranu a strukturovat své vojsko tak, aby co nejefektivněji udeřilo na slabá místa protivníka. Armáda příšer by měla tak vzájemně spolupracovat, aby co nejúspěšněji prorazila labyrint. Někdy je také nutné vypustit příšery v určitém pořadí v závislosti na jejich funkcích a rolích. To také zvyšuje množství různých kombinací.
Konečně, protože hráč musí jak vytvářet labyrinty, tak shromažďovat armádu monster, musí se AI také naučit najít rovnováhu mezi útokem a obranou. Také je důležité vzít v úvahu, že čím více hráč zvyšuje armádu monster a čím více buduje labyrint, tím více prostředků pro to potřebuje. Správná útočná strategie je proto nesmírně důležitá jak pro ekonomiku během hry, tak pro vítězství v ní. Aby byla zajištěna soutěživost, musí být AI schopno umísťovat prostředky tak, aby vytvořila silnou armádu monster, aniž by ohrozila sílu labyrintu. Investice do monster může být ekonomicky výhodná, ale zvyšuje riziko, že labyrint obsadí monstra protivníka. Pokud se naopak zaměříte na posílení obrany labyrintu, může to oslabit vaši ekonomiku. Žádný z těchto scénářů nepovede k vítězství. Problém optimalizace v Unleashed se tedy ukazuje jako rozsáhlejší než v případě šachu nebo Starcraftu a zahrnuje nutnost obětovat něco a posuzovat svůj zisk o několik kroků dopředu.
Jak se umělá inteligence učí, vyvstává mnoho dříve nezohledněných problémů. Zpočátku AI často dosahovala určité úrovně vývoje, při které začínala chápat některé aspekty hry — například, jaká zbraň v labyrintu je účinná proti konkrétním typům monster nebo které monstra nejlépe procházejí určitými úseky labyrintu. Ale učení bylo pomalé a vedlo k vytváření jednotných strategií.
Nutnost paralelních přístupů
Zatímco se vývoj AI založené na strojovém učení posouvá pomalu a ne zrovna úspěšně, pro ostatní etapy testování a vývoje se stal potřebným lepší AI a spolehlivější konkurence AI. Pro jejich realizaci byla použita architektura Utility, která umožňuje vytvářet specializované AI pro testování a kontrolu kvality hry, vnitřní testy a vyvážení zbraní a monster, a pro vytváření konkrétních bludišť a monster. Během vývoje Unleash tvůrci sami zdokonalovali dovednosti v jejím překonání, a poté se rozhodli využít nabyté znalosti pro vytvoření složitějšího Utility AI. Tak se ukázalo, že mnohé problémy, které se objevují v systémech umělé inteligence založené na strojovém učení, lze snadno vyřešit pomocí Utility systémů, které využívají v nich zakotvené znalosti, a naopak.
Například efektivnější bludiště lze lépe stavět pomocí Utility AI, která vychází z databází znalostí sestavených na základě výsledků interních testů. Algoritmus pro stavbu bludiště a umístění zbraní v něm lze snadno popsat a naprogramovat tak, jak by to usnadnilo obraně věže před konkrétními monstry živému hráči. Vytvoření armády monster na základě znalostí o soupeřově základně se však ukázalo jako složitý úkol pro takové AI, protože množství různých podmínek a kombinací, které je třeba zohlednit, ohromovalo. Při takovém druhu architektury AI by vyhledávání vhodných sad monster zabralo nekonečně dlouhý čas. Pak by se s ohledem na daná omezení hluboké učení stalo ideálním řešením pro tento úkol.
Vytváření hybridních AI
Bylo tedy rozhodnuto kombinovat dva přístupy a tím vytvořit hybridní systém umělé inteligence založený na strojovém učení a Utility. Myšlenka spočívala v tom, že tam, kde bylo třeba zpracovat obrovské množství kombinací a stavů hry, nebo kde bylo potřeba ji něčemu naučit, se využívalo strojové učení. Pro další úkoly, kde je lepší se spolehnout na osobní zkušenosti vývojářů, byly zapojeny systémy Utility. Výhodou tohoto přístupu je také to, že je možné lépe kontrolovat chování AI, aby přesněji sledovala stanovený cíl. Například je možné využít Utility AI k zajištění rovnováhy mezi útokem a obranou a tím vytvořit různé úrovně agrese, nebo vytvořit různé konfigurace bludišť pro různé AI, aby si vytvořily vlastní herní styly. Také je možné nastavit neurálním sítím určité hodnotové systémy pro vytváření různých preferencí při výběru vzdušných nebo pozemních monster, čímž lze také jednotlivým AI dodat osobitost. Existuje také mnoho dalších možností pro realizaci projektových řešení a všechny zdůrazňují silné stránky daného typu architektury AI.
Hybridní přístup také představoval odpověď na jinou otázku, která se objevila před týmem vývojářů při vývoji umělé inteligence pro Unleash: zda používat jednotnou globální hlubokou neurální síť založenou na strojovém učení, aby zohlednila všechen vstup a výstup, nebo je lepší navrhnout AI s hierarchickou strukturou?

Dva architektonické styly použité v Unleash: vlevo - velká hluboká neurální síť s vlastní jednotnou architekturou, vpravo - hierarchický systém, v němž má každá síť svůj vlastní úkol.
Přesto by bylo dobré vytvořit jednotný přístup k systému umělé inteligence, do jehož architektury vývojáři nezapracovávali svou vlastní zkušenost. Čím více byl herní systém používán, tím více se neuronová síť rozrůstala. Přitom nebylo možné oddělit výuku AI a naučit je něčemu jednomu: buď obraně, nebo útoku. A objevily se obavy, že obecnější přístup by vedl k výraznému zvýšení výpočetního zatížení.
Odtud vznikla myšlenka vytvořit hierarchickou architekturu, ve které by každou konkrétní úlohu plnila specializovaná neuronová síť. Podle této myšlenky musí umělá inteligence nejprve rozhodnout o rozložení zdrojů na útok (navýšení armády monster) a obranu (stavbu bludiště). Jakmile se tak rozhodne, přechází na další úroveň podle svého výběru a získává přístup k potřebné části stavu hry, po čemž přijímá podrobná rozhodnutí o tom, jaké vybrat monstra a jaké zbraně umístit do bludiště.
Závěr a následující kroky
Při hybridním přístupu Utility AI, do které jsou zahrnuty sítě na základě strojového učení, připomíná hierarchickou architekturu. Ta se zase podobá biologickému mozku, kde různé nervové centrum odpovídají každé za svou úlohu.
Současný nepřítel v Unleash je velmi těžko porazitelný: dokáže se přizpůsobit jakékoli situaci ve hře, — přičemž vývojáři mohou měnit jejich nastavení podle svého uvážení. Podle názoru autora článku by v průběhu času měl hybridní přístup získat větší rozšíření a objevit se v mnoha dalších hrách. Možná se jednou podaří implementovat strojově učenou umělou inteligenci čistě do herního procesu. Ale je jasné, že na to ještě bude zapotřebí času. Prozatím je cílem najít takovou architekturu, která se sama přizpůsobí předloženým úkolům a nalezne optimální způsoby jejich řešení.
Zdroj: habr.com
