DarkrAI: a Pareto ε-greedy policy
Informazioni generali
Questo progetto esplora l’uso di tecniche di ottimizzazione derivate dalla biologia per migliorare le prestazioni di un agente di reinforcement learning (RL) e accelerare il processo di apprendimento. In particolare, ci concentriamo sull’addestramento di RL agents per le battaglie Pokémon, un dominio complesso con numerosi esiti possibili in ogni turno.
Approccio
Abbiamo ideato un approccio che combina diversi elementi:
-
Calcolatore i danni: Per valutare con precisione l’impatto delle mosse dei Pokémon, abbiamo creato un server NodeJS che si interfaccia con un server per il calcolo dei danni mediante apposite API. Questa infrastruttura fornisce dati precisi sugli effetti delle mosse.
-
Ottimizzazione mediante NSGA-II: Utilizziamo l’algoritmo genetico NSGA-II per risolvere un problema di ottimizzazione multi-obiettivo. NSGA-II identifica le mosse Pareto ottimali che i Pokémon possono fare in un determinato turno, migliorando il processo decisionale.
-
Artificial Neural Network (ANN): Abbiamo progettato una ANN, i cui pesi vengono appresi tramite RL. Questa rete aiuta a ottimizzare le azioni dei Pokémon.
-
Ambiente di allenamento: Utilizziamo Pokémon Showdown, un simulatore di battaglie online, come ambiente di allenamento. La libreria Python
poke-env
facilita la comunicazione con il simulatore e consente lo sviluppo di agenti addestrabili personalizzati. -
Dati di Pikalytics: Per risolvere le incertezze sui Pokémon dell’avversario, incorporiamo i dati di Pikalytics, che offrono approfondimenti sulla costruzione della squadra avversaria.
Risultati
I nostri esperimenti mostrano risultati promettenti. ParetoPlayer, un agente addestrato con il nostro approccio, mostra del potenziale per migliorare l’addestramento fornendo ricompense più elevate. Tuttavia, in situazioni con uno spazio di ricerca ridotto e una singola condizione di vittoria, Player supera ParetoPlayer.
Riconosciamo che ulteriori ottimizzazioni, l’esplorazione degli iperparametri e la regolazione della topologia della rete potrebbero migliorare i risultati. Le sfide includono la natura dispendiosa in termini di tempo di NSGA-II, che attualmente si basa su CPU, e la risoluzione degli switch forzati.
Per i dettagli completi, la metodologia, le scelte di implementazione e i risultati, consultare la relazione e le slides della presentazione.
I nostri test statistici includono:
normalità.R
: Verifica la normalità delle differenze di ricompensa tra due run di RL.regression.R
(Obsoleto): Produce una retta di regressione a partire dalle ricompense medie degli episodi.10_runs_agg.R
: Genera una retta di regressione ed esegue un test di Kolmogorov-Smirnov sulle ricompense medie degli episodi.significance_if_not_normal.R
: Esegue un test Wilcoxon rank-sum sui dati delle ricompense degli episodi.significance_if_normal.R
: Esegue un test t di Student sui dati di ricompensa degli episodi.
Per ulteriori informazioni sui nostri test statistici, consultare il README dell’analisi dati.
Collaboratori
- Samuele Bortolotti
- Simone Alghisi
- Massimo Rizzoli
- Erich Robbi