Questa guida ha lo scopo di illustrare i passi necessari per permettere ad un agente di Reinforcement Learning di imparare a giocare a diversi giochi dell'Atari 2600.
L'argomento sarà parte del talk, curato dal professore Fabio Stella, intitolato "Come lavorare sui dati: i linguaggi per la machine intelligence" che si terrà in data 21 dicembre 2018 presso l'Università degli Studi di Milano-Bicocca.
Scaricare e installare Anaconda (Python 3.7 version).
Scaricare e scompattare il contenuto della repository attuale, come mostrato in figura.
Aprire Anaconda Navigator e creare un nuovo ambiente che ospiterà Tensorflow.
Questo può essere fatto:
Environments > Create
Impostare "tensorflow" come nome e scegliere Python 3.6 come Packages
Selezionare, da Environments, tensorflow e aprire il terminale come mostrato nella seguente figura.
Se tutto è andato a buon fine avrete (tensorflow) seguito da un percorso (ad esempio C:\Users\ponti) all'inizio del vostro terminale.
Creare una nuova cartella nel percorso indicato di fianco a (tensorflow) nel terminale e rinominarla "Gym".
Copiare i file "Gym.py" e "Load_Model.py", scaricati in precedenza dalla repository, all'interno della cartella Gym.
Da terminale, spostarsi all'interno della cartella Gym con il seguente comando:
cd gym
A questo punto dare il seguente comando al terminale:
pip install tensorflow
Prima di poter procedere al training è necessario installare dei packages specifici.
Procedere quindi con i seguenti comandi:
pip install gym
pip install gym[atari]
In caso questo comando restituisca un errore, provare il comando seguente:
pip install --no-index -f https://github.com/Kojoley/atari-py/releases atari_py
e procedere con:
pip install matplotlib
pip install scikit-image
Ora è possibile allenare il nostro agente di Reinforcement Learning in modo che impari a giocare a Pacman.
Rimandendo nel terminale relativo all'ambiente "tensorflow" dare il seguente comando:
python Gym.py
L'agente procederà ora al training. Dopo aver raggiunto un determinato numero di iterazioni sarà mostrato a video il nostro agente di Reinforcement Learning mentre proverà a giocare.
Con l'aumentare delle iterazioni si potrà notare un incremento delle prestazioni.
Una volta finito il training si può procedere a testare il modello relativo al precedente training. Sempre da terminale dare il seguente comando:
python Load_Model.py
Verrà mostrato a video il nostro agente mentre giocherà a 100 partite di Pacman, al termine del quale si avrà lo score medio finale.
-
Per ottenere delle perfomance migliori è consigliabile installare Tensorflow con il supporto alla GPU
-
Per aver un tempo di training inferiore si può ridurre il valore della variabile n_steps, nel file Gym.py (magari passando da 1000000 a 250000)
-
Per evitare l'attesa, dovuta ai tempi di training, è possibile provare il modello già allenato. Copiare la cartella "MsPacman", disponibile nella repository scaricata in precedenza, all'interno della cartella "Gym" e passare direttamente alla fase di testing
-
Possono essere provati altri giochi dell'Atari, la lista completa è disponibile sulla documentazione ufficiale Gym. Per esempio, nel file "Gym.py", provare a modificare il valore della variabile game = "SpaceInvaders"
- Il professor Fabio Stella
- I miei compagni di corso, Andrea Ponti, Simone Rizza e Edoardo Silva.
In caso di consigli, dubbi o problemi è possibile contattarmi via email all'indirizzo frenkowski@gmail.com.