Mario Kart giocato da una rete neurale? Si può fare!

Un programmatore ha applicato una rete neurale a Mario Kart affinché imitasse il suo stile di gioco analizzando le sue partite. Vediamo come funziona.

Mario Kart giocato da una rete neurale? Si può fare!
Articolo a cura di

Forse non tutti se ne sono accorti, ma stiamo vivendo l'epoca della nascita delle intelligenze artificiali, algoritmi che analizzano dati e imparano con il tempo secondo lo scopo per cui sono programmati. Purtroppo l'idea comune di "intelligenza artificiale" è decisamente errata, visto che purtroppo è notoriamente associata a robot-killer: nulla vieterebbe di creare un automa da guerra, ma ad oggi il concetto di AI è associato ad algoritmi specifici basati sul Machine Learning che nascono e muoiono con un solo obiettivo, solitamente votati ad applicazioni commerciali. Questo va specificato perché attualmente le AI sono implementate in ambiti estremamente settoriali che conosciamo tutti: riconoscimento foto, marketing, sistema di consigli per l'utente, sistema di sblocco (iPhone X) e tante altre applicazioni, senza dimenticare l'intensa ricerca svolta a livello universitario e aziendale sull'argomento.
Negli scorsi mesi chi segue Everyeye.it ha già letto i nostri articoli di AI applicate ai videogames (Dota2, Super Mario Bros.) ed in questo articolo vogliamo analizzare un nuovo interessante caso di un programmatore che ha sfruttato una rete neurale affinché imitasse il suo stile di gioco in Mario Kart (SNES) e lo replicasse in partite nuove.

Machine Learning e Neural Network

Machine Learning significa apprendimento automatico ed è una categoria di algoritmi basati su concetti di statistica che analizzano dei dati e da questi cercano di eseguire una funzione specifica commettendo l'errore più piccolo possibile. Un'ottima applicazione di questi algoritmi risiede nelle reti neurali (neural networks), che sono suddivise in vari strati che elaborano i dati in sequenza prendendo ispirazione dal funzionamento del cervello umano. Il programmatore SethBling ha implementato una rete neurale in Mario Kart per SNES basandosi su un articolo scientifico del settore e l'ha allenata a giocare come lui. Cosa significa allenare un algoritmo? Un normale script esegue quello che i programmatori hanno deciso che faccia, mentre una rete neurale senza dati è sostanzialmente incapace di eseguire un'azione sensata.
Esattamente come un giocatore impara a guidare un kart in Mario Kart completando più volte le piste messe a disposizione dal gioco, la rete neurale deve avere la possibilità di giocare per acquisire o analizzare i dati che gli sono stati inseriti in ingresso. Potete pensare ad uno studente che legge un libro, impara i concetti e dà l'esame finale: la rete neurale analizza i dati, imposta i suoi coefficienti ed è in grado di giocare. SethBling ha impostato l'obiettivo delle rete neurale di imitare i suoi video di gameplay: è importante notare che se un'AI del genere ha un certo scopo, non può in nessun modo deviare dal suddetto, quindi in questo caso non saprà cosa significa vincere una gara.

Nel video potete vedere la neural network che si allena cercando di imitare il gameplay di SethBling. Di norma una neural network analizza i dati facendoli passare in maniera consecutiva per tutti i suoi strati, così che alla fine possa predire il risultato in base all'input: in questo caso deve decidere quale pulsante premerà SethBling nel frame successivo, basandosi sulle possibilità che offre il pad del SNES.
I dati in input in questo caso sono la posizione del kart controllato, rappresentato da un pixel su una mappa che riprende il gioco dall'alto, dove ogni avversario sarà un altro puntino, più tutto il resto della pista (bordi, ostacoli, ... ). La rete neurale aggiusta i propri coefficienti (i pesi) analizzando qual è l'errore che compie ad ogni predizione: questo è l'obiettivo primario dell'allenamento dell'algoritmo. Ogni secondo l'algoritmo effettua 15 cicli completi per restituire la predizione del frame successivo. Se volete maggiori dettagli sul funzionamento della recursive neural network impiegata vi consigliamo la visione del video in basso, che mostra con delle immagini chiare come viene gestito il flusso di dati durante i calcoli.

I risultati dell'esperimento

Più che un test per creare il giocatore imbattibile, il caso analizzato è votato a mettere alla prova un algoritmo complesso per capire la sua capacità di imitare lo stile di gioco di un essere umano. L'esperimento ha evidenziato delle criticità evidenti: se il gameplay è troppo "pulito" perché frutto dell'esperienza di un giocatore che non compie più determinati errori, la rete neurale sarà totalmente impreparata nell'incontrare situazioni nuove. Il caso più eclatante mostrato nell'ultimo video è sicuramente quello del personaggio bloccato davanti ad un muro, incapace di capire come comportarsi. Questo perché nei dati da cui ha imparato manca completamente una situazione del genere ed è stato necessario alternare le sessioni di gioco della neural network alle sessioni di gioco del giocatore per aggirare il problema, così che fosse SethBling ad insegnare all'algoritmo come uscire fuori da una situazione nuova.
I risultati di questo metodo di allenamento alternato sono stati decisamente migliori ed hanno prodotto un'intelligenza artificiale capace di cambiare il proprio comportamento in base a quello che accade sullo schermo, in grado non solo di imitare il gameplay di un giocatore specifico ma anche di affrontare situazioni nuove e insolite.