Come addestrare una rete neurale artificiale per giocare a Diablo 2 usando l'input visivo?


139

Attualmente sto cercando di ottenere un ANN per giocare a un videogioco e speravo di ottenere un aiuto dalla meravigliosa comunità qui.

Ho optato per Diablo 2. Il gioco è quindi in tempo reale e da un punto di vista isometrico, con il giocatore che controlla un singolo avatar su cui è centrata la videocamera.

Per rendere le cose concrete, il compito è ottenere il tuo personaggio x punti esperienza senza che la sua salute scenda a 0, dove il punto esperienza si ottiene uccidendo i mostri. Ecco un esempio del gameplay:

Qui

Ora, dal momento che voglio che la rete funzioni basandosi esclusivamente sulle informazioni che riceve dai pixel sullo schermo, deve imparare una rappresentazione molto ricca per poter giocare in modo efficiente, dal momento che ciò richiederebbe presumibilmente di sapere (almeno implicitamente) come dividere il mondo di gioco in oggetti e come interagire con essi.

E tutte queste informazioni devono essere insegnate in qualche modo alla rete. Non posso per la vita di me pensare a come addestrare questa cosa. La mia unica idea è di avere un programma separato per estrarre visivamente qualcosa di buono / cattivo nel gioco (ad es. Salute, oro, esperienza) dallo schermo, e quindi usare quella statistica in una procedura di apprendimento di rinforzo. Penso che farà parte della risposta, ma non credo che basterà; ci sono troppi livelli di astrazione dall'input visivo grezzo al comportamento orientato agli obiettivi per un feedback così limitato da formare una rete durante la mia vita.

Quindi, la mia domanda: quali altri modi puoi pensare di formare una rete per svolgere almeno una parte di questo compito? preferibilmente senza fare migliaia di esempi etichettati.

Solo per un po 'più di direzione: sto cercando altre fonti di apprendimento di rinforzo e / o qualsiasi metodo non supervisionato per estrarre informazioni utili in questa impostazione. O un algoritmo supervisionato se riesci a pensare a un modo per estrarre i dati etichettati da un mondo di gioco senza doverli etichettare manualmente.

UPDATE (04/27/12):

Stranamente, ci sto ancora lavorando e sembra che stia facendo progressi. Il più grande segreto per far funzionare un controller ANN è usare le architetture ANN più avanzate appropriate all'attività. Quindi ho usato una rete di credenze profonde composta da macchine Boltzmann condizionate condizionate fattorizzate che ho addestrato in modo non supervisionato (nel video di me mentre giocavo al gioco) prima di mettere a punto la retro-propagazione delle differenze temporali (cioè l'apprendimento di rinforzo con lo standard feed-forward ANNs).

Tuttavia, sto ancora cercando input più preziosi, in particolare sul problema della selezione dell'azione in tempo reale e su come codificare le immagini a colori per l'elaborazione ANN :-)

UPDATE (10/21/15):

Mi sono appena ricordato di aver fatto questa domanda nel passato, e ho pensato di ricordare che questa non è più un'idea folle. Dal mio ultimo aggiornamento, DeepMind ha pubblicato il suo documento sulla natura per ottenere reti neurali per giocare ai giochi Atari da input visivi . In effetti, l'unica cosa che mi impedisce di usare la loro architettura per giocare, un sottoinsieme limitato, di Diablo 2 è la mancanza di accesso al motore di gioco sottostante. Il rendering sullo schermo e il reindirizzamento alla rete è troppo lento per allenarsi in un ragionevole lasso di tempo. Quindi probabilmente non vedremo questo tipo di bot giocare a Diablo 2 in qualunque momento presto, ma solo perché giocherà qualcosa di open-source o con accesso API alla destinazione di rendering. (Forse un terremoto?)


1
Dai un'occhiata a questo documento. : D ri.cmu.edu/pub_files/pub2/pomerleau_dean_1992_1/…
zergylord

Una grande differenza tra il problema di guida sulla carta e un gioco è che nel problema di guida l'input visivo è una rappresentazione dello stato sufficientemente completa: se c'è un ostacolo a destra - gira a sinistra, se c'è un ostacolo a sinistra - gira giusto. Tuttavia, in un gioco, spesso devi prendere decisioni basate su cose che non sono visualizzate sullo schermo. Ogni volta che entri in un negozio, potrebbe sembrare lo stesso, ma devi acquistare diversi articoli.
Don Reba,

1
Per essere il migliore del mio ricordo, Diablo 2 usa fogli sprite facilmente estraibili. Dovrebbe essere abbastanza semplice legare oggetti (giocatore, nemici ecc ...) a un elenco di sprite associati. Non risolve il problema degli oggetti oscurati l'uno dall'altro, ma è un inizio.
Ryan Jenkins,

@zergylord Sarebbe di aiuto se tu potessi dire con fermezza quanto vuoi rispettare i tuoi criteri di a) Giocare a Diablo 2 eb) usando i pixel disegnati sullo schermo come unica fonte di input. Se vuoi rendere le cose più facili con te stesso, penso che dovrai rilassare un po '(o entrambi) quelli - sei disposto a farlo?
Stompchicken,

1
Votare per chiudere come troppo ampio.
Ciro Santilli 8 冠状 病 六四 事件 法轮功

Risposte:


55

Vedo che sei preoccupato di come addestrare la RNA, ma questo progetto nasconde una complessità di cui potresti non essere a conoscenza. Il riconoscimento di oggetti / personaggi sui giochi per computer attraverso l' elaborazione delle immagini è un compito estremamente impegnativo (non per niente folle per i giochi FPS e RPG). Non dubito delle tue capacità e non sto nemmeno dicendo che non può essere fatto, ma puoi facilmente dedicare 10 volte più tempo a lavorare sul riconoscimento delle cose che sull'implementazione della stessa ANN (supponendo che tu abbia già esperienza con le tecniche di elaborazione delle immagini digitali ).

Penso che la tua idea sia molto interessante e anche molto ambiziosa . A questo punto potresti voler riconsiderarlo. Sento che questo progetto è qualcosa che stai pianificando per l'università, quindi se il focus del lavoro è davvero ANN, probabilmente dovresti scegliere un altro gioco, qualcosa di più semplice.

Ricordo che qualcun altro è venuto alla ricerca di consigli su un progetto diverso ma in qualche modo simile non molto tempo fa. Vale la pena dargli un'occhiata.

D'altra parte, potrebbero esserci approcci migliori / più semplici per identificare gli oggetti nel gioco se si accettano suggerimenti. Ma prima chiamiamo questo progetto per quello che vuoi che sia: uno smart-bot .

Un metodo per implementare i bot accede alla memoria del client di gioco per trovare informazioni pertinenti, come la posizione del personaggio sullo schermo e la sua salute. Leggere la memoria del computer è banale, ma capire esattamente dove cercare la memoria non lo è. Gli scanner di memoria come Cheat Engine possono essere molto utili per questo.

Un altro metodo , che funziona sotto il gioco, prevede la manipolazione delle informazioni di rendering. Tutti gli oggetti del gioco devono essere renderizzati sullo schermo. Ciò significa che le posizioni di tutti gli oggetti 3D verranno infine inviate alla scheda video per l'elaborazione. Preparati per un serio debug.

In questa risposta ho brevemente descritto 2 metodi per ottenere ciò che si desidera attraverso l'elaborazione delle immagini. Se sei interessato a loro puoi trovare maggiori informazioni su Exploiting Online Games (capitolo 6), un eccellente libro sull'argomento.


43

AGGIORNAMENTO 2018-07-26: Questo è tutto! Ci stiamo avvicinando al punto in cui questo tipo di gioco sarà risolvibile! Utilizzando OpenAI e basato sul gioco DotA 2, una squadra potrebbe creare un'intelligenza artificiale che può battere i giocatori semi-professionisti in una partita 5v5 . Se conosci DotA 2, sai che questo gioco è abbastanza simile ai giochi simili a Diablo in termini di meccanica, ma si potrebbe sostenere che è ancora più complicato a causa del gioco di squadra.

Come previsto, ciò è stato ottenuto grazie agli ultimi progressi nell'apprendimento di rinforzo con l'apprendimento profondo e nell'utilizzo di framework di gioco aperti come OpenAI che facilitano lo sviluppo di un'intelligenza artificiale poiché si ottiene un'API ordinata e anche perché è possibile accelerare il gioco (l'IA ha giocato l'equivalente di 180 anni di gioco contro se stesso ogni giorno!).

Il 5 agosto 2018 (tra 10 giorni!) , Si prevede di mettere questa IA contro i migliori giocatori DotA 2. Se questo funziona, aspettati una grande rivoluzione, forse non mediatizzata come la risoluzione del gioco Go, ma sarà comunque un'enorme pietra miliare per i giochi AI!

AGGIORNAMENTO 2017-01: Il campo si sta muovendo molto velocemente dal successo di AlphaGo e ci sono nuovi framework per facilitare lo sviluppo di algoritmi di machine learning sui giochi quasi ogni mese. Ecco un elenco degli ultimi che ho trovato:

  • OpenAI's Universe : una piattaforma per giocare praticamente a qualsiasi gioco usando l'apprendimento automatico . L'API è in Python ed esegue i giochi dietro un ambiente desktop remoto VNC, quindi può catturare le immagini di qualsiasi gioco! Probabilmente puoi usare Universo per giocare a Diablo II attraverso un algoritmo di apprendimento automatico!
  • Palestra di OpenAI : simile all'universo ma mirata specificamente agli algoritmi di apprendimento del rinforzo (quindi è una specie di generalizzazione del framework utilizzato da AlphaGo ma per molti più giochi). C'è un corso su Udemy che copre l'applicazione dell'apprendimento automatico a giochi come breakout o Doom usando OpenAI Gym.
  • TorchCraft : un ponte tra Torch (framework di apprendimento automatico) e StarCraft: Brood War.
  • pyGTA5 : un progetto per costruire auto a guida autonoma in GTA5 usando solo schermate (con molti video online ).

Tempi molto eccitanti!

AGGIORNAMENTO IMPORTANTE (2016-06): Come notato da OP, questo problema di formazione di reti artificiali per giocare utilizzando solo input visivi è ora affrontato da diverse istituzioni serie, con risultati abbastanza promettenti, come DeepMind Deep-Qlearning-Network (DQN ) .

E ora, se vuoi affrontare la sfida di livello successivo, puoi utilizzare una delle varie piattaforme di sviluppo di giochi di visione AI come ViZDoom , una piattaforma altamente ottimizzata (7000 fps) per addestrare le reti a giocare a Doom usando solo input visivi :

ViZDoom consente di sviluppare bot AI che riproducono Doom utilizzando solo le informazioni visive (il buffer dello schermo). È principalmente destinato alla ricerca nell'apprendimento visivo automatico e in particolare all'apprendimento approfondito del rinforzo. ViZDoom si basa su ZDoom per fornire le meccaniche di gioco.

E i risultati sono piuttosto sorprendenti, guarda i video sulla loro pagina web e il bel tutorial (in Python) qui!

Esiste anche un progetto simile per Quake 3 Arena, chiamato Quagents , che fornisce anche un facile accesso API ai dati di gioco sottostanti, ma è possibile eliminarli e utilizzare solo schermate e API solo per controllare il proprio agente.

Perché una tale piattaforma è utile se utilizziamo solo schermate? Anche se non accedi ai dati di gioco sottostanti, tale piattaforma fornisce:

  • alte prestazioniimplementazione di giochi (puoi generare più dati / giochi / generazioni di apprendimento con meno tempo in modo che i tuoi algoritmi di apprendimento possano convergere più velocemente!).
  • un'API semplice e reattiva per controllare i tuoi agenti (ad esempio, se provi a utilizzare input umani per controllare un gioco, alcuni dei tuoi comandi potrebbero andare persi, quindi ti occuperesti anche dell'affidabilità dei tuoi output ...).
  • facile configurazione di scenari personalizzati .
  • rendering personalizzabile (può essere utile per "semplificare" le immagini ottenute per facilitare l'elaborazione)
  • riproduzione sincronizzata ("turn-by-turn") (quindi all'inizio non è necessario che l'algoritmo funzioni in tempo reale, il che è una riduzione enorme della complessità).
  • funzionalità aggiuntive come compatibilità con la piattaforma incrociata, retrocompatibilità (non rischi più che il tuo bot non funzioni più con il gioco in caso di un nuovo aggiornamento del gioco), ecc.

Riassumendo, la cosa grandiosa di queste piattaforme è che alleggeriscono gran parte dei precedenti problemi tecnici che dovevi affrontare (come manipolare gli input di gioco, come impostare scenari, ecc.) In modo che tu abbia solo a che fare con l'algoritmo di apprendimento si.

Quindi, mettiti al lavoro e rendici il miglior bot visivo AI di sempre;)


Vecchio post che descrive i problemi tecnici dello sviluppo di un'IA che si basa solo su input visivi:

Contrariamente ad alcuni dei miei colleghi di cui sopra, non penso che questo problema sia intrattabile. Ma è sicuramente difficile!

Il primo problema come indicato sopra è quello della rappresentazione dello stato del gioco : non è possibile rappresentare lo stato completo con una sola immagine, è necessario mantenere un qualche tipo di memorizzazione(salute ma anche oggetti equipaggiati e oggetti disponibili da usare, missioni e obiettivi, ecc.). Per recuperare tali informazioni hai due modi: o accedendo direttamente ai dati di gioco, che è il più affidabile e facile; oppure puoi creare una rappresentazione astratta di queste informazioni implementando alcune semplici procedure (apri l'inventario, fai uno screenshot, estrai i dati). Ovviamente, l'estrazione di dati da uno screenshot ti costringerà a mettere in una procedura supervisionata (che definisci completamente) o senza supervisione (tramite un algoritmo di apprendimento automatico, ma poi aumenterà notevolmente la complessità ...). Per l'apprendimento automatico senza supervisione, dovrai utilizzare un tipo di algoritmi abbastanza recente chiamato algoritmi di apprendimento strutturale (che apprendono la struttura dei dati piuttosto che come classificarli o prevedere un valore).http://techtalks.tv/talks/54422/

Quindi, un altro problema è che anche quando hai recuperato tutti i dati di cui hai bisogno, il gioco è solo parzialmente osservabile . Quindi devi iniettare un modello astratto del mondo e dargli da mangiare informazioni elaborate dal gioco, ad esempio la posizione del tuo avatar, ma anche la posizione di oggetti missione, obiettivi e nemici fuori dallo schermo. Per questo, potresti forse esaminare i filtri per particelle di miscela di Vermaak 2003.

Inoltre, devi avere un agente autonomo , con obiettivi generati dinamicamente. Un'architettura ben nota che puoi provare è l'agente BDI, ma probabilmente dovrai modificarla affinché questa architettura funzioni nel tuo caso pratico. In alternativa, c'è anche la rete di Petri ricorsiva, che probabilmente è possibile combinare con tutti i tipi di variazioni delle reti di Petri per ottenere ciò che si desidera in quanto è un quadro molto ben studiato e flessibile, con ottime procedure di formalizzazione e prove.

E alla fine, anche se fai tutto quanto sopra, dovrai trovare un modo per emulare il gioco velocità accelerata (usare un video può essere bello, ma il problema è che il tuo algoritmo sarà in grado di guardare solo senza controllo e di essere in grado provare per se stesso è molto importante per l'apprendimento). In effetti, è noto che l'attuale algoritmo all'avanguardia richiede molto più tempo per apprendere la stessa cosa che un essere umano può imparare (anche di più con l'apprendimento per rinforzo), quindi se non può accelerare il processo ( cioè, se non riesci ad accelerare il tempo di gioco), il tuo algoritmo non converge nemmeno in una sola vita ...

Per concludere, quello che vuoi ottenere qui è al limite (e forse un po 'oltre) degli attuali algoritmi all'avanguardia . Penso che possa essere possibile, ma anche se lo è, passerai molto tempo , perché questo non è un problema teorico ma un problema pratico che stai affrontando qui, e quindi devi implementare e combinare molto di diversi approcci AI per risolverlo.

Diversi decenni di ricerca con un intero team che ci sta lavorando potrebbero non essere sufficienti, quindi se sei solo e ci lavori a tempo parziale (dato che probabilmente hai un lavoro da vivere) potresti trascorrere un'intera vita senza raggiungere alcun luogo vicino una soluzione funzionante.

Quindi il mio consiglio più importante qui sarebbe di abbassare le tue aspettative e provare a ridurre la complessitàdel tuo problema utilizzando tutte le informazioni che puoi ed evita il più possibile affidandoti a schermate (ad esempio, prova a collegarti direttamente al gioco, cerca l'iniezione di DLL) e semplifica alcuni problemi implementando procedure supervisionate, non lasciare che il tuo l'algoritmo impara tutto (ad esempio, elimina il più possibile l'elaborazione delle immagini per ora e fa affidamento sulle informazioni di gioco interne, in seguito se l'algoritmo funziona bene, puoi sostituire alcune parti del tuo programma di intelligenza artificiale con l'elaborazione delle immagini, raggiungendo così il tuo obiettivo, ad esempio, se riesci a far funzionare qualcosa piuttosto bene, puoi provare a complicare il problema e sostituire le procedure supervisionate e i dati dei giochi di memoria con algoritmi di apprendimento automatico non controllati su schermate).

Buona fortuna e, se funziona, assicurati di pubblicare un articolo, puoi sicuramente diventare famoso per aver risolto un problema così difficile e pratico!


27

Il problema che stai perseguendo è intrattabile nel modo in cui l'hai definito. Di solito è un errore pensare che una rete neurale apprenda "magicamente" una ricca rappresentazione di un problema. Un buon fatto da tenere presente quando si decide se ANN è lo strumento giusto per un'attività è che si tratta di un metodo di interpolazione. Pensa se puoi inquadrare il tuo problema come trovare un'approssimazione di una funzione, dove hai molti punti da questa funzione e un sacco di tempo per progettare la rete e addestrarla.

Il problema che proponi non supera questo test. Il controllo del gioco non è una funzione dell'immagine sullo schermo. Ci sono molte informazioni che il giocatore deve tenere in memoria. Per un semplice esempio, è spesso vero che ogni volta che entri in un negozio in un gioco, lo schermo ha lo stesso aspetto. Tuttavia, ciò che acquisti dipende dalle circostanze. Non importa quanto sia complicata la rete, se i pixel dello schermo sono il suo input, eseguirà sempre la stessa azione entrando nel negozio.

Inoltre, c'è il problema della scala. Il compito che proponi è semplicemente troppo complicato per imparare in un ragionevole lasso di tempo. Dovresti vedere aigamedev.com per come funziona l'IA di gioco. Le reti neurali artigianali sono state utilizzate con successo in alcuni giochi, ma in modo molto limitato. L'IA di gioco è difficile e spesso costosa da sviluppare. Se ci fosse un approccio generale alla costruzione di reti neurali funzionali, l'industria avrebbe probabilmente preso confidenza con esso. Ti consiglio di iniziare con esempi molto, molto più semplici, come il tic-tac-toe.


Giusto. Si potrebbe chiamare quasi tutto ciò che assomiglia a una rete come ANN, ma difficilmente potrebbe condurre a una discussione sostanziale. :)
Don Reba,

Eh sì ... avrei dovuto spiegare la mia motivazione in modo più approfondito. So che ci sono modi migliori per creare II di gioco, ma lo sto facendo per spingere i limiti del simulatore ANN che ho aggiornato. Vedi: stanford.edu/group/pdplab/pdphandbook
zergylord

1
In ogni caso, Don Reba ha ragione, anche io non penso che sarà possibile apprendere una strategia per qualcosa come Diablo senza incorporare molte conoscenze precedenti ed estrarre caratteristiche utili su cui potrebbe basarsi un approccio di apprendimento di rinforzo. Imparare dall'ingresso video sarà estremamente difficile se non impossibile usando i computer di oggi.
ahans

18

Sembra che il cuore di questo progetto sia esplorare ciò che è possibile con un ANN, quindi suggerirei di scegliere un gioco in cui non devi occuparti dell'elaborazione delle immagini (che dalle risposte di altri qui, sembra un compito davvero difficile in un gioco in tempo reale). Puoi usare l'API di Starcraft per costruire il tuo bot, ti danno accesso a tutti gli stati di gioco rilevanti.

http://code.google.com/p/bwapi/


2

Come primo passo potresti guardare la differenza dei frame consecutivi. Devi distinguere tra sfondo e sprite di mostri reali. Immagino che il mondo possa contenere anche animazioni. Per trovarli vorrei che il personaggio si muovesse e raccolgasse tutto ciò che si muove con il mondo in una grande immagine di sfondo / animazione.

È possibile rilevare e identificare i nemici con correlazione (utilizzando FFT). Tuttavia, se le animazioni ripetono esattamente i pixel, sarà più veloce guardare solo alcuni valori di pixel. Il tuo compito principale sarà quello di scrivere un sistema robusto che identificherà quando un nuovo oggetto appare sullo schermo e gradualmente tutti i frame del frame sprite in un database. Probabilmente devi costruire modelli anche per gli effetti delle armi. Questi possono essere sottratti in modo da non ingombrare il database degli avversari.


2
Avendo familiarità con il gioco Diablo II, posso dire che utilizza 256 colori (a meno che alcune modalità non utilizzino colori alti o reali). Fa anche un forte uso di sprite per visualizzare oggetti diversi. Se sei in grado di estrarre alcuni sprite (anche dallo screenshot) potresti addestrare il tuo strumento a riconoscere gli oggetti in base allo sprite (ad esempio una "Pozione di Guarigione Minore" rilasciata avrà sempre lo stesso aspetto). Se approfondirò le cose specifiche di Diablo II, sorgeranno anche altre domande. Buona fortuna
Ivaylo Slavov il

1

Supponendo che in qualsiasi momento potresti generare una serie di "esiti" (che potrebbero comportare probabilità) da una serie di tutte le possibili "mosse" e che esiste una certa nozione di coerenza nel gioco (ad esempio puoi giocare ripetutamente al livello X di nuovo), potresti iniziare con N reti neurali con pesi casuali e far giocare ognuna di esse nel modo seguente:

1) Per ogni possibile "mossa", genera un elenco di possibili "risultati" (con le probabilità associate) 2) Per ogni risultato, usa la tua rete neurale per determinare un "valore" (punteggio) associato del "risultato" (ad es. numero compreso tra -1 e 1, 1 è il miglior risultato possibile, -1 è il peggiore) 3) Scegli la 'mossa' che porta al punteggio più alto * punteggio 4) Se la mossa ha portato a una 'vittoria' o 'perdita', interrompere, altrimenti tornare al passaggio 1.

Dopo un certo periodo di tempo (o una "vittoria" / "perdita"), valuta quanto la rete neurale era vicina all'obiettivo (ciò probabilmente implicherà una certa conoscenza del dominio). Quindi buttare via il 50% (o qualche altra percentuale) di NN più lontani dall'obiettivo, eseguire crossover / mutazione del 50% superiore ed eseguire nuovamente il nuovo set di NN. Continua a correre fino a quando non esce un NN soddisfacente.


Ah, aggiungendo un GA nel mix, interessante. Sfortunatamente, dal momento che la rete invia effettivamente i tasti / movimenti del mouse come azioni, avrei bisogno di un computer fisico per rete>. <Un altro problema è che lo spazio degli stati dell'ambiente non è discreto (bene tecnicamente lo è, ma a un grano molto fine). Ad esempio, immagina il possibile risultato associato a un clic del mouse: un personaggio sotto il controllo della rete potrebbe muovere o attaccare, ma anche i nemici potrebbero muoversi, e ci sarebbero differenze nell'ambiente pixel-saggia da cose come ombre ed effetti meteorologici .
zergylord,

Bene dal mio punto di vista c'è solo così tanto che puoi fare con una rete neurale. Sembra nella migliore delle ipotesi che potrebbe essere usato come una funzione euristica apprendibile di qualche nozione di spazio di stato discreto. Per incorporare la variabilità del nemico, probabilmente dovresti usare qualche altro euristico, quindi potresti usarlo per creare un insieme di possibili stati di esito per mossa con le probabilità associate. Inoltre, fintanto che esiste una nozione statica di configurazione iniziale e finale, è possibile eseguire ciascuna rete neurale una alla volta.
tstramer,

1

Penso che la tua scommessa migliore sarebbe un'architettura complessa che coinvolga poche reti / maggio: cioè una che riconosce e risponde agli oggetti, una per il negozio, una per il combattimento (forse qui avresti bisogno di una per il riconoscimento nemico, una per gli attacchi), ecc. .

Quindi prova a pensare al gameplay di Diablo II più semplice possibile, probabilmente un barbaro. Quindi, per prima cosa, diventa semplice, come l'Atto I, solo nella prima area.

Quindi immagino che "obiettivi" preziosi sarebbero la scomparsa di oggetti nemici e la riduzione della barra della salute (segnata inversamente).

Dopo aver svolto questi compiti separati, "più semplici", puoi utilizzare un ANN "master" per decidere quale sotto-ANN attivare.

Per quanto riguarda l'allenamento, vedo solo tre opzioni: potresti usare il metodo evolutivo sopra descritto, ma poi devi selezionare manualmente i "vincitori", a meno che non codifichi un programma completamente separato per quello. Puoi far sì che le reti "guardino" qualcuno giocare. Qui impareranno a emulare un giocatore o un gruppo di stile del giocatore. La rete cerca di prevedere la prossima azione del giocatore, viene rafforzata per un'ipotesi corretta, ecc. Se effettivamente ottieni l'ANN che desideri, questo potrebbe essere fatto con il gameplay video, senza bisogno di un gameplay reale dal vivo. Alla fine puoi lasciare che la rete giochi, con morti nemiche, aumenti di livello, riguadagnato salute, ecc. Come rinforzo positivo e morti dei giocatori, perdita di salute, ecc. Come rinforzo negativo. Ma visto che anche una semplice rete richiede migliaia di passaggi concreti di formazione per apprendere anche compiti semplici,

Tutto sommato il tuo progetto è molto ambizioso. Ma io per primo penso che potrebbe "in teoria essere fatto", dato abbastanza tempo.

Spero che sia d'aiuto e buona fortuna!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.