În continuarea subiectului discutat anterior pe blogul nostru vom discuta despre cât de aplicabil este în acest context învățarea automată și în ce formă. Expertiza și soluțiile pe care le-am ales pe baza acesteia expertul în domeniul inteligenței artificiale de la Apex Game Tools, Jacob Rasmussen.

În ultimii ani, s-au purtat multe discuții despre faptul că învățarea automată va schimba radical industria jocurilor, deoarece această tehnologie a devenit deja revoluționară în multe alte aplicații digitale. Dar nu trebuie uitat că jocurile sunt mult mai complexe decât un simulator de condus, un program de control al dronelor sau algoritmi de recunoaștere facială.
Încă în industria jocurilor se folosesc metode tradiționale de inteligență artificială, cum ar fi metodele automate finite, arborii de comportament și — din ce în ce mai des — inteligența bazată pe utilitate (sisteme bazate pe utilitate). Astfel de inteligențe sunt denumite și design-based (inteligență artificială de design) sau sisteme expert. Dar devine din ce în ce mai evident — mai ales pentru jucători — că aceste sisteme sunt tot mai puțin potrivite pentru crearea de adversari cu adevărat avansați care să imite comportamentul jucătorilor. Acest lucru este valabil în special pentru soluțiile creative. Acest lucru se datorează faptului că dezvoltatorii inteligenței artificiale nu reușesc să ia în considerare toate tacticile și strategiile posibile de comportament și să le implementeze cu succes în sistemele tradiționale de inteligență artificială. pentru jucători, aceasta se traduce adesea printr-o experiență plictisitoare și previzibilă atunci când joacă împotriva unui adversar al cărui comportament este ușor de memorat.
Această situație este determinată de numeroase motive, dar unul dintre cele mai importante este incapacitatea inteligenței artificiale de a învăța. Prin urmare, atunci când se dezvoltă inteligența artificială pentru adversari, vine de la sine ideea trecerii la învățarea automată, care s-a dovedit a fi foarte eficientă în multe alte aplicații. Totuși, există câteva nuanțe de care trebuie ținut cont. Astfel, inteligența artificială din jocuri trebuie să fie capabilă să se adapteze la orice situație și să folosească avantajele pe care aceasta le oferă, precum și să se adapteze la diferitele stiluri de joc ale adversarilor — jucători umani și alte inteligențe artificiale.
Cum stau lucrurile acum
Compania britanică DeepMind, care se ocupă cu dezvoltarea inteligenței artificiale, a arătat recent cum AI poate învăța singur să joace jocuri, să învețe regulile acestora și să găsească modalități de a finaliza jocul sau de a câștiga — deocamdată, însă, doar cu exemple de jocuri simple, precum jocurile timpurii. — de exemplu, șahul și jocul logic japonez go. Rezultatele obținute pentru aceste jocuri arată că inteligența artificială este capabilă să își formeze o evaluare adecvată a situației de pe tablă. În ceea ce privește adaptarea AI la diferitele stiluri de joc ale adversarului, rezultatele nu sunt deocamdată la fel de impresionante.
În prezent, rețelele neuronale au învățat deja să recunoască imagini și să conducă automobile. Dar aceste funcții pot fi implementate și cu arhitecturi relativ simple, chiar dacă rezultatul final devine destul de complex și voluminos. De exemplu, AI-ul de recunoaștere a imaginilor de pe Facebook are o adâncime de aproximativ 100 de straturi, ceea ce îl face să semene cu un creier biologic — datorită numărului și complexității conexiunilor între neuroni care formează o rețea mare.
AI-ul de joc
În ceea ce privește aplicarea învățării automate în industria jocurilor, există o serie de constrângeri care împiedică utilizarea acestui tip de arhitectură. Acestea includ cerințele sistemului, în special cele referitoare la CPU, care determină capacitatea computerului de a procesa structuri complexe de joc și adecvarea acestuia pentru povestirea și gameplay-ul jocului.
Astfel, se dovedește că, în multe jocuri, pentru a implementa un sistem complex de inteligență artificială, nu există posibilitatea de a organiza hardware-ul necesar și cu atât mai puțin clustere de servere, care există, de exemplu, pentru rețelele de recunoaștere a imaginilor de la Facebook. Uneori, trebuie să funcționeze simultan mai multe IA — și nu doar pe computere, ci și pe dispozitive mobile și pe alte platforme mai puțin performante. Toate acestea impun restricții asupra dimensiunii și complexității arhitecturii de învățare automată, având în vedere că toate calculele trebuie efectuate într-un interval de timp de aproximativ 1 sau 2 milisecunde. Desigur, se pot utiliza diverse tehnologii de optimizare și distribuire a sarcinilor între cadre, dar tot nu se reușește să scăpăm complet de aceste restricții.
Problemele serioase pentru IA pot fi cauzate de complexitatea jocului. În jocuri precum StarCraft II, mecanica jocului este mult mai complexă decât în jocurile Atari. Prin urmare, nu ar trebui să ne așteptăm ca, la o anumită rată de cadre și cu cerințe sistemice cunoscute, învățarea automată să poată învăța întreaga stare a jocului și să interacționeze cu aceasta. Așa cum un jucător se ghidează adesea pe baza intuiției în etapele incipiente ale jocului, la fel și IA trebuie să învețe procesarea inițială a stării jocului pentru a simplifica continuarea acestuia. De exemplu, într-unul dintre cele mai recente pe hărți este afișată doar informația pe care dezvoltatorii au considerat-o importantă: într-un caz, IA a utilizat o versiune redusă a întregului teritoriu al hărții, iar în al doilea — asemănător cu jucătorul, a putut muta camera, iar percepția sa a fost limitată la informațiile de pe ecran.

Vizualizarea jocului IA AlphaStar împotriva jucătorului în StarCraft II: captura de ecran arată observațiile „pure” de bază, activitatea rețelei neuronale, unele dintre acțiunile sale posibile și coordonatele, precum și rezultatul estimat al meciului.
Acesta este un aspect deosebit de relevant în cazul jocurilor. Adesea, metodele convenționale de rezolvare a problemelor de învățare automată nu sunt aplicabile inteligenței artificiale în jocuri. De exemplu, nu trebuie neapărat să câștige sau să facă tot ce depinde de el pentru a obține victoria, așa cum s-a întâmplat în cazul jocurilor Atari. Rolul AI este mai degrabă acela de a face experiența de joc mai captivantă. Este posibil să trebuiască să joace un rol și să se comporte așa cum se cuvine pentru personajul pe care îl reprezintă. Astfel, AI-urile din jocuri sunt mai legate de designul de joc și de povestire și trebuie să aibă instrumentele necesare pentru a-și gestiona comportamentul în vederea atingerii unui obiectiv stabilit. Învățarea automată în sine nu este întotdeauna potrivită pentru acest lucru - așadar, este necesar să căutăm ceva diferit.
Probleme practice ale învățării automate
Aceste probleme au apărut în timpul dezvoltării inteligenței artificiale bazate pe învățarea automată pentru , unde AI-ul trebuie să se comporte ca jucători obișnuiți - adică, să fie la fel de flexibili și ingenioși.
La fel ca în Starcraft II, Unleashed este mult mai complex decât șahul și go-ul pentru Atari. Gameplay-ul este intuitiv și ușor de stăpânit, dar pentru a avea într-adevăr succes, sunt necesare anumite abilități de gestionare a meta. Jucătorul trebuie să construiască labirinturi, să elibereze monștri asupra inamicilor și să își planifice strategia în economie, atac și apărarea structurilor pe parcursul întregului joc. Pentru aceasta, trebuie să blufeze și să anticipeze mișcările altora, gestionând de asemenea meta psihologică - aceasta fiind ceea ce transformă pokerul într-o experiență mult mai complexă decât o simplă joc statistic.

Captură de ecran din Unleashed
În căutarea unei arhitecturi cel mai potrivite pentru aceste scopuri, tehnologiile precum și învățarea profundă au fost integrate în joc într-o formă practic neschimbată, pentru a verifica cum se comportă acestea în formă brută ca AI adversar.
A fost groaznic.
A devenit clar rapid că în Unleashed trebuie rezolvate multe probleme globale, la care este greu de adaptat învățarea automată.
Una dintre ele este construirea unui labirint eficient. Așa cum se întâmplă în multe jocuri în care obiectivul este protejarea turnului, jucătorii trebuie să construiască un labirint în jurul acestuia, prin care vor pătrunde monștri. Acestora trebuie să li se facă față cu ajutorul armelor plasate în labirint. Ideal ar fi ca labirintul să fie cât mai lung, pentru a reuși să provoace un număr suficient de daune monștrilor și a nu le permite să ajungă la turn. Pentru unele tipuri de arme, monștri sunt mai vulnerabili decât pentru altele, așa că, pentru eficiență mai mare, ar fi bine să fie așezate în labirint mai devreme decât celelalte. Specificitatea Unleash constă în faptul că nu există un labirint ideal: în joc sunt atât de multe tipuri de monștri încât, într-un fel sau altul, cineva dintre ei va trece neobservat printr-o anumită zonă a labirintului. Orice labirint trebuie adaptat la noii monștri introduceți de alți jucători. Astfel, a fost necesar nu doar să învățăm inteligența artificială să construiască labirinte, ci să o învățăm să creeze labirinte eficiente pentru diferite scenarii, cu care se poate întâlni atât în versiunile timpurii, cât și în cele mai avansate ale jocului.
De asemenea, IA trebuie să învețe să estimeze ce monștri vor apărea în labirint. Aceasta este o problemă inversă în raport cu construirea labirintului. Așa cum se întâmplă în multe alte jocuri, în Unleash nu este suficient doar să îți mărești armata și să o trimiți în tabăra inamicului: este necesar, de asemenea, să spionezi apărarea inamicului și să structurezi armata astfel încât să lovești cât mai eficient punctele slabe ale adversarului. Armata de monștri trebuie să interacționeze între ei astfel încât să reușească să străpungă labirintul. Uneori este necesar să eliberezi monștri într-o anumită ordine, în funcție de funcțiile și rolurile acestora. Acest lucru crește, de asemenea, numărul de combinații posibile.
În cele din urmă, deoarece jucătorul trebuie atât să creeze labirinturi, cât și să adune o armată de monștri, IA trebuie să învețe, de asemenea, să găsească un echilibru între atac și apărare. Este important de menționat că cu cât jucătorul își dezvoltă mai mult armata de monștri și își construiește labirintul, cu atât are nevoie de mai multe resurse pentru acest lucru. Prin urmare, strategia corectă de atac este extrem de importantă atât pentru economia jocului, cât și pentru victorie. Pentru a asigura competitivitatea, IA trebuie să fie capabilă să-și gestioneze resursele astfel încât să creeze o armată puternică de monștri, fără a compromite forța labirintului. Investiția maximă în monștri poate fi profitabilă din punct de vedere economic, dar crește riscul ca labirintul să fie capturat de monștri inamici. Pe de altă parte, dacă se optează pentru întărirea apărării labirintului, acest lucru poate afecta economia. Niciunul dintre aceste scenarii nu va duce la victorie. Astfel, problema optimizării în Unleashed se dovedește a fi mai complexă decât în cazul șahului sau Starcraft-ului, implicând necesitatea de a sacrifica ceva și de a calcula beneficiile pe mai multe nivele în avans.
Pe măsură ce inteligența artificială învață, apar numeroase probleme neprevăzute anterior. Astfel, inițial, IA ajungea frecvent la un anumit nivel de dezvoltare în care începea să înțeleagă anumite aspecte ale jocului — de exemplu, care arme din labirint sunt eficiente împotriva anumitor tipuri de monștri sau care monștri trec cel mai bine prin anumite secțiuni ale labirintului. Însă învățarea a fost lentă și a dus la dezvoltarea unor strategii repetitive.
Necesitatea abordărilor paralele
În timp ce dezvoltarea AI-ului bazat pe învățarea automată a evoluat lent și nu a fost deosebit de reușită, pentru alte etape de testare și dezvoltare a fost necesar un AI mai bun și AI-uri concurente mai de încredere. Pentru implementarea acestora a fost utilizată arhitectura Utility, care permite crearea de AI-uri specializate pentru testarea și verificarea calității jocului, teste interne și echilibrarea armelor și monștrilor, precum și crearea de labirinturi și monștri specifici. Cu toate acestea, pe parcursul dezvoltării Unleash, creatorii au perfecționat și ei abilitățile în parcursul acestuia, iar apoi au decis să folosească cunoștințele dobândite pentru a crea un AI Utility mai complex. Astfel, a devenit clar că multe probleme apărute în sistemele de inteligență artificială bazate pe învățarea automată pot fi ușor rezolvate cu ajutorul sistemelor Utility care utilizează cunoștințele încorporate în acestea, și invers.
De exemplu, labirinturile mai eficiente sunt mai bine construite cu ajutorul AI-ului Utility, bazat pe cunoștințele acumulate din rezultatele testelor interne. Este ușor să descrii și să programezi un algoritm de construcție a labirintului și de plasare a armelor în el astfel încât să fie mai ușor să aperi turnul de monștri specifici pentru un jucător viu. În schimb, crearea unei armate de monștri pe baza cunoștințelor despre baza inamică s-a dovedit a fi o sarcină complexă pentru astfel de AI, deoarece numărul diferitelor condiții și combinații care trebuie luate în considerare era copleșitor. Cu un astfel de tip de arhitectură AI, căutarea seturilor potrivite de monștri ar dura o eternitate. În aceste condiții, având restricții, învățarea profundă ar fi fost soluția ideală pentru această sarcină.
Crearea AI-urilor hibride
Astfel, s-a decis să se combine două metode și astfel să se creeze un sistem hibrid de inteligență artificială bazat pe învățare automată și Utility. Ideea a fost că acolo unde era necesară procesarea unui număr uriaș de combinații și stări ale jocului, sau unde era necesar să o învețe ceva, se utiliza învățarea automată. Pentru alte sarcini, unde era mai bine să ne bazăm pe experiența personală a dezvoltatorilor, au fost implicate sistemele Utility. Avantajul acestei abordări constă și în faptul că, atunci când este necesar, se poate controla mai bine comportamentul AI-ului, pentru a asigura o urmărire mai precisă a obiectivului stabilit. De exemplu, se poate folosi AI-ul Utility pentru a asigura un echilibru între atac și apărare, creând astfel diferite niveluri de agresivitate, sau pot fi create diferite configurații de labirinturi pentru diferite AI-uri, pentru a le forma stiluri de joc individuale. De asemenea, se pot seta rețele neuronale cu anumite sisteme de valori pentru a forma diferite preferințe în selectarea monștrilor aerieni sau terestre și astfel să se adauge și în AI-uri individualitate. Există încă multe alte opțiuni pentru implementarea soluțiilor de proiectare, iar toate acestea subliniază punctele forte ale fiecărui tip de arhitectură AI.
Abordarea hibridă a fost, de asemenea, un răspuns la o altă întrebare, care s-a ridicat în fața echipei de dezvoltatori în timpul dezvoltării inteligenței artificiale pentru Unleash: ar trebui să aplicăm o rețea neuronală adâncă globală bazată pe învățare automată pentru a lua în considerare toate datele de intrare și ieșire sau ar fi mai bine să proiectăm AI-ul cu o structură ierarhică?

Cele două arhitecturi utilizate în Unleash: la stânga — o rețea neuronală adâncă mare cu o arhitectură unică, la dreapta — un sistem ierarhic, în care fiecare rețea are propria sarcină.
Și totuși, ne-ar plăcea să creăm o abordare comună pentru sistemul de inteligență artificială, în arhitectura căruia dezvoltatorii să nu își încorporeze experiența proprie. Totuși, cu cât se efectuau mai multe intrări în joc, cu atât rețeaua neurală crescuse mai mult. În acest context, nu se putea separa antrenamentul AI-ului și a-i învăța un singur aspect: fie apărarea, fie atacul. Și existau temeri că o abordare mai generală ar conduce la o creștere semnificativă a numărului de calcule.
De aici a apărut ideea de a crea o arhitectură ierarhică, în care fiecare sarcină specifică să fie realizată de o rețea neurală specializată. Conform acestei idei, mai întâi inteligența artificială trebuie să ia o decizie privind alocarea resurselor pentru atac (creșterea armatei de monștri) și apărare (construirea labirintului). Odată ce a luat această decizie, trece la următorul strat conform alegerii sale și obține acces la partea necesară a stării jocului, după care ia decizii detaliate despre ce monștri să aleagă și ce arme să instaleze în labirint.
Concluzie și pași următori
Prin abordarea hibridă, AI-ul Utility cuplată cu rețele de învățare automată seamănă cu o arhitectură ierarhică. Iar aceasta, la rândul său, este similară cu creierul biologic, în care diferitele centre nervoase răspund fiecare pentru sarcina lor.
În prezent, AI-ul inamic în Unleash este foarte greu de învins: sunt capabili să se adapteze la orice situație din joc, — dar dezvoltatorii pot modifica setările lor după bunul plac. În opinia autorului articolului, în timp, abordarea hibridă ar trebui să câștige mai multă popularitate și să apară în multe alte jocuri. Poate că, într-o bună zi, va fi posibil să implementăm inteligența artificială bazată pe învățarea automată în forma sa pură în procesul de joc. Dar, evident, mai este nevoie de timp pentru aceasta. Deocamdată, scopul este de a găsi o arhitectură care să se adapteze singură la sarcinile care i se prezintă și să găsească modalități optime de a le rezolva.
Sursa: habr.com
