Continuando il tema precedentemente sollevato nel nostro blog parleremo di quanto l'apprendimento automatico sia applicabile e in che forma. A condividere la propria esperienza e le soluzioni scelte sulla base di essa è l'esperto di IA di Apex Game Tools, Jakob Rasmussen.

Negli ultimi anni si è parlato molto del fatto che l'apprendimento automatico cambierà radicalmente l'industria del gaming, poiché questa tecnologia è già diventata rivoluzionaria in molte altre applicazioni digitali. Ma non dobbiamo dimenticare che i giochi sono molto più complessi di un simulatore di guida, di un programma di gestione di droni o di algoritmi di riconoscimento facciale nelle immagini.
Nel settore dei videogiochi continuano a essere utilizzati metodi tradizionali di intelligenza artificiale, come i metodi a stati finiti, gli alberi comportamentali e — ultimamente sempre più spesso — l'intelligenza artificiale basata sull'utilità (sistemi basati su utilità). Queste intelligenze artificiali vengono anche chiamate design-based (intelligenza artificiale di design) o sistemi esperti. Tuttavia, sta diventando sempre più evidente — soprattutto per i giocatori — che questi sistemi sono sempre meno adatti a creare avversari realmente avanzati in grado di imitare il comportamento dei giocatori. Questo vale in particolare per le soluzioni creative. Ciò può essere spiegato dal fatto che gli sviluppatori di intelligenza artificiale non sono in grado di prevedere tutte le possibili tattiche e strategie comportamentali e di realizzarle con successo nei sistemi tradizionali di intelligenza artificiale. Per i giocatori, questo si traduce spesso in partite noiose e prevedibili contro un avversario la cui linea comportamentale è facilmente memorizzabile.
Questo risultato è il risultato di molteplici fattori, ma uno dei principali è l'incapacità dell'IA di apprendere. Pertanto, nella creazione dell'intelligenza artificiale nemica, viene naturalmente in mente la soluzione di passare all'apprendimento automatico, che ha dimostrato di essere efficace in molte altre applicazioni. Tuttavia, ci sono alcuni aspetti da considerare. Ad esempio, l'IA nel gioco deve essere in grado di adattarsi a qualsiasi situazione e sfruttare i vantaggi che essa offre, nonché adattarsi a diversi stili di gioco degli avversari: giocatori umani e altre IA.
Come stanno le cose adesso
La compagnia britannica DeepMind, specializzata nello sviluppo dell'intelligenza artificiale, ha recentemente dimostrato come le IA possano imparare autonomamente a giocare ai giochi, assimilare le loro regole e trovare modi per completare il gioco o vincere — attualmente solo nel contesto di giochi semplici, come i primi giochi — ad esempio, gli scacchi e il gioco logico giapponese del go. I risultati ottenuti per questi giochi mostrano che l'intelligenza artificiale è in grado di formarsi un'adeguata valutazione di ciò che accade sul campo. Tuttavia, quando si parla di adattamento dell'IA ai diversi stili di gioco degli avversari, i risultati finora non sono così impressionanti.
Al giorno d'oggi, le reti neurali hanno già imparato a riconoscere immagini e guidare automobili. Ma queste funzioni possono essere realizzate anche con architetture relativamente semplici, anche se alla fine risultano piuttosto profonde e complesse. Ad esempio, l'IA per il riconoscimento delle immagini su Facebook ha una profondità di circa 100 strati, il che la rende simile al cervello biologico per il numero e la complessità delle connessioni tra i neuroni che formano una grande rete.
IA di gioco
Per quanto riguarda l'applicazione del machine learning nell'industria dei videogiochi, ci sono diversi limiti che impediscono di utilizzare sempre questo tipo di architettura. Questi includono i requisiti di sistema, in particolare quelli relativi alla CPU, che definiscono la capacità del computer di elaborare strutture di gioco complesse e la sua idoneità per la narrazione e il gameplay.
Di conseguenza, in molti giochi non è possibile organizzare l'hardware necessario per implementare un sistema complesso di intelligenza artificiale, né tantomeno un cluster di server, come avviene, ad esempio, nelle reti di riconoscimento delle immagini di Facebook. A volte devono funzionare contemporaneamente più intelligenze artificiali, non solo sui computer, ma anche su dispositivi mobili e altre piattaforme meno potenti. Tutto ciò impone dei limiti sulle dimensioni e sulla complessità dell'architettura del machine learning, dato che tutti i calcoli devono essere eseguiti con una durata del fotogramma di circa 1 o 2 millisecondi. Certamente, è possibile utilizzare diverse tecnologie di ottimizzazione e distribuzione del carico tra i fotogrammi, ma nonostante ciò, non riesce a liberarsi completamente di queste limitazioni.
Le complessità del gioco possono rappresentare seri problemi per l'IA. Infatti, in giochi come StarCraft II, la meccanica di gioco è molto più complessa rispetto a giochi Atari. Pertanto, non si può aspettare che, dati un certo frame rate e specifiche di sistema, il machine learning riesca necessariamente a apprendere l'intero stato del gioco e a interagire con esso. Così come un giocatore si guida spesso per intuizione nelle fasi iniziali di una partita, l'IA deve apprendere a elaborare inizialmente lo stato del gioco per semplificare il proseguimento successivo. Ad esempio, in uno dei recenti le mappe mostrano solo le informazioni che gli sviluppatori hanno ritenuto importanti: in un caso, l'IA utilizzava una vista ridotta dell'intero territorio della mappa, mentre nell'altro — come un giocatore, poteva muovere la telecamera, e così la sua percezione era limitata alle informazioni sullo schermo.

La visualizzazione del gioco dell'IA AlphaStar contro un giocatore in StarCraft II: nello screenshot sono rappresentate le osservazioni 'grezze', l'attività della rete neurale, alcune delle sue potenziali azioni e le coordinate, oltre all'esito previsto della partita.
Questo è un aspetto particolarmente rilevante nel caso dei giochi. Spesso, le tecniche di intelligenza artificiale per i giochi non si basano sui metodi di apprendimento automatico tradizionali. Ad esempio, non è necessario che vincano o facciano tutto il possibile per ottenere la vittoria, come avveniva nei giochi Atari. Più spesso, il ruolo dell'IA è quello di rendere l'esperienza di gioco più coinvolgente. Potrebbe essere necessario che giochi un ruolo e si comporti secondo le caratteristiche del personaggio che gestisce. Pertanto, l'IA nei giochi è più legata al game design e alla narrazione, e deve possedere gli strumenti necessari per controllare il proprio comportamento per raggiungere l'obiettivo prefissato. L'apprendimento automatico puro non è sempre adatto a questo scopo, il che richiede di cercare alternative.
Problemi pratici dell'apprendimento automatico
Questi problemi sono emersi nello sviluppo dell'intelligenza artificiale basata sull'apprendimento automatico per , dove l'IA deve comportarsi come normali giocatori, ovvero essere altrettanto flessibili e ingegnosi.
Come Starcraft II, Unleashed è molto più complessa degli scacchi e del go per Atari. Il gameplay è intuitivo e facile da apprendere, ma per eccellere veramente è necessario possedere competenze specifiche nella gestione della metagame. Il giocatore deve costruire labirinti, scatenare mostri contro i nemici e pianificare la propria strategia in economia, attacco e difesa delle strutture per tutta la durata del gioco. Per questo, deve bluffare e prevedere le mosse altrui, gestendo anche la metagame psicologica — è proprio questa a rendere il poker qualcosa di più di un semplice gioco statistico.

Screenshot di Unleashed
Nella ricerca dell'architettura più adatta a questi scopi, inizialmente nel gioco sono state integrate tecnologie come e apprendimento profondo, per testare come si sarebbero comportate in forma grezza come intelligenza artificiale nemica.
È stato orribile.
È diventato presto chiaro che in Unleashed era necessario affrontare molti problemi globali, difficili da adattare all'apprendimento automatico.
Uno degli obiettivi è costruire un labirinto efficace. Come in molti giochi di difesa della torre, qui i giocatori devono costruire un labirinto attorno ad essa, attraverso il quale i mostri cercheranno di passare. Questi ultimi devono essere eliminati usando le armi posizionate nel labirinto. Idealmente, il labirinto dovrebbe essere il più lungo possibile, in modo da infliggere ai mostri abbastanza danni e impedirne l'arrivo alla torre. Per alcuni tipi di armi, i mostri sono più vulnerabili rispetto ad altri, quindi per una maggiore efficacia vale la pena disporli nel labirinto prima di tutti gli altri. La peculiarità di Unleash è che non esiste un labirinto perfetto: nel gioco ci sono talmente tanti tipi di mostri che, in un modo o nell'altro, qualcuno di essi riuscirà a passare senza ostacoli attraverso una parte del labirinto. Ogni labirinto deve essere adattato ai nuovi mostri lanciati da altri giocatori. Pertanto, non era sufficiente insegnare all'intelligenza artificiale a costruire labirinti; bisognava insegnarle a creare labirinti efficaci per vari scenari, che si possono incontrare sia nella versione iniziale che in quella avanzata del gioco.
Inoltre, l'IA doveva imparare a calcolare quali mostri sarebbero apparsi nel labirinto. Questa è una sorta di problema inverso rispetto alla creazione del labirinto. Come in molti altri giochi, in Unleash non è sufficiente semplicemente potenziare un esercito e inviarlo nel campo nemico: è necessario anche spiare le difese avversarie e strutturare l'esercito in modo da colpire le vulnerabilità del nemico nel modo più efficace possibile. L'esercito dei mostri deve interagire tra loro in modo da riuscire a fare breccia nel labirinto con successo. A volte è anche necessario rilasciare i mostri in un certo ordine a seconda delle loro funzioni e ruoli. Questo aumenta anche il numero di diverse combinazioni.
Infine, poiché il giocatore deve sia creare labirinti che raccogliere un esercito di mostri, l'IA deve anche imparare a trovare un equilibrio tra attacco e difesa. È importante inoltre considerare che man mano che il giocatore aumenta la dimensione del proprio esercito di mostri e costruisce sempre più labirinti, avrà bisogno di maggiori risorse per farlo. Pertanto, una strategia di attacco corretta è fondamentale sia per l'economia durante il gioco che per la vittoria stessa. Affinché l'IA sia competitiva, deve saper gestire le risorse in modo da creare un potente esercito di mostri, senza compromettere la forza del labirinto. Investire al massimo nei mostri può essere economicamente vantaggioso, ma aumenta il rischio di perdita del labirinto a causa dei mostri avversari. D'altra parte, puntare a rafforzare la difesa del labirinto potrebbe indebolire la tua economia. Nessuno di questi scenari porterà a una vittoria. Pertanto, il problema dell'ottimizzazione in Unleashed risulta essere più complesso di quello degli scacchi o di Starcraft e comporta la necessità di sacrificare qualcosa e calcolare i propri benefici diversi passi avanti.
Con l'avanzare della formazione dell'intelligenza artificiale, emergono numerosi problemi precedentemente trascurati. Inizialmente, l'IA raggiungeva spesso un certo livello di sviluppo in cui iniziava a comprendere alcuni aspetti del gioco, come ad esempio quale arma nel labirinto fosse efficace contro specifici tipi di mostri o quali mostri riuscissero meglio a superare determinate aree del labirinto. Tuttavia, l'apprendimento era lento e portava alla creazione di strategie ripetitive.
La necessità di approcci paralleli
Mentre l'addestramento dell'IA basata su machine learning si è evoluto lentamente e senza particolari successi, è diventata necessaria una migliore IA e IA concorrenti più affidabili per altri stadi di testing e sviluppo. Per la loro realizzazione è stata utilizzata l'architettura Utility, che consente di creare IA specializzate per il testing e il controllo qualità del gioco, test interni, bilanciamento di armi e mostri, e creazione di labirinti e mostri specifici. Tuttavia, durante lo sviluppo di Unleash, i creatori hanno affinato le proprie abilità nel suo superamento, per poi decidere di usare le conoscenze acquisite per creare una Utility IA più complessa. È diventato chiaro che molti problemi che sorgono nei sistemi di intelligenza artificiale basati su machine learning possono essere facilmente risolti utilizzando sistemi Utility che sfruttano le conoscenze integrate in essi, e viceversa.
Ad esempio, labirinti più efficienti possono essere costruiti usando l'IA Utility, basata su basi di conoscenza create dai risultati di test interni. È possibile descrivere e programmare facilmente un algoritmo per costruire un labirinto e posizionare armi in modo che sia più semplice difendere una torre da specifici mostri per un giocatore. Tuttavia, la creazione di un'armata di mostri basata sulla conoscenza della base nemica si è rivelata una sfida complessa per tali IA, poiché il numero di diverse condizioni e combinazioni da considerare era sbalorditivo. Con tale architettura dell'IA, la ricerca di insiemi adatti di mostri richiederebbe un tempo infinito. In tali condizioni, l'apprendimento profondo sarebbe la soluzione ideale per questo problema.
Creazione di IA ibride
È stata quindi presa la decisione di combinare due approcci per creare un sistema ibrido di intelligenza artificiale basato su machine learning e Utility. L'idea era che, dove era necessario elaborare un'enorme quantità di combinazioni e stati di gioco, o dove era richiesto addestrarla a qualcosa, venisse utilizzato il machine learning. Per altre attività, dove era meglio fare affidamento sull'esperienza personale degli sviluppatori, venivano impiegati sistemi Utility. Il vantaggio di questo approccio è che, se necessario, è possibile controllare meglio il comportamento dell'IA per garantire un'aderenza più precisa agli obiettivi prefissati. Ad esempio, è possibile utilizzare l'IA Utility per garantire un equilibrio tra attacco e difesa, creando così diversi livelli di aggressività, oppure si possono progettare diversi configurazioni di labirinti per diverse IA, al fine di formare stili di gioco individuali. È anche possibile assegnare alle reti neurali determinate sistemi di valori per creare diverse preferenze nella selezione di mostri volanti o terrestri, aggiungendo così personalità alle singole IA. Ci sono molte altre opzioni per implementare soluzioni progettuali, e tutte evidenziano i punti di forza di ciascun tipo di architettura IA.
L'approccio ibrido è stato anche una risposta a un'altra domanda che il team di sviluppo si è posto durante lo sviluppo dell'intelligenza artificiale per Unleash: è meglio utilizzare una singola rete neurale profonda globale basata su machine learning per considerare tutti i dati in ingresso e in uscita, o progettare l'IA con una struttura gerarchica?

Due architetture utilizzate in Unleash: a sinistra — una grande rete neurale profonda con una propria architettura unificata, a destra — un sistema gerarchico, in cui ogni rete ha il proprio compito.
Eppure, si voleva creare un approccio comune al sistema di intelligenza artificiale, in cui gli sviluppatori non avrebbero integrato la propria esperienza nell'architettura. Tuttavia, man mano che aumentavano gli input nel gioco, la rete neurale cresceva sempre di più. Non era possibile separare l'apprendimento dell'IA e addestrarle su un solo aspetto: difesa o attacco. Si temeva che un approccio più generale avrebbe portato a un aumento significativo della potenza di calcolo.
Da qui è nata l'idea di creare un'architettura gerarchica, in cui un'altra rete neurale specializzata si occupasse di ogni compito specifico. Secondo questa idea, l'intelligenza artificiale deve prima prendere una decisione sulla distribuzione delle risorse tra attacco (aumento dell'esercito di mostri) e difesa (costruzione del labirinto). Una volta fatto questo, passa al livello successivo in base alla sua scelta e accede alla parte necessaria dello stato di gioco, dopo di che prende decisioni dettagliate su quali mostri scegliere e quale armamento installare nel labirinto.
Conclusione e prossimi passi
Con un approccio ibrido, l'IA Utility con reti di machine learning integrate ricorda un'architettura gerarchica. Questa, a sua volta, assomiglia al cervello biologico, in cui diversi centri nervosi sono responsabili ciascuno di un compito specifico.
Attualmente, l'IA avversaria in Unleash è molto difficile da battere: è in grado di adattarsi a qualsiasi situazione di gioco, anche se gli sviluppatori possono modificare le impostazioni a loro piacimento. Secondo l'autore dell'articolo, nel tempo l'approccio ibrido dovrebbe diffondersi maggiormente e apparire in molti altri giochi. È possibile che un giorno si possa integrare un'intelligenza artificiale basata su machine learning in modo puro nel gameplay. Ma, chiaramente, ci vorrà ancora del tempo. Nel frattempo, l'obiettivo è trovare un'architettura che si adatti autonomamente ai problemi che affronta e trovi modi ottimali per risolverli.
Fonte: habr.com
