Milestone
Artificial Intelligence agent for the Battleship game
V práci se zabývám tvorbou agenta, který bude hrát původní verzi hry Battleships od Hasbro na decentní úrovni. Tedy plocha o velikosti 10x10 s loděmi [2, 3, 3, 4, 5], kde číslo je velikost lodě.
S tím, že vyzkouším různé přístupy a porovnám jejich efektivitu a kvalitu. S přístupy se hlavně zaměřím na ty, které spadají do Reinforced learning.
Články a zdroje
Playing Atari with Deep Reinforcement Learning - https://arxiv.org/pdf/1312.5602
Rainbow DQN - https://arxiv.org/pdf/1710.02298
Prioritized Experience Replay - https://arxiv.org/pdf/1511.05952
Double Q-learning - https://arxiv.org/pdf/1509.06461
Dueling Networks - https://arxiv.org/pdf/1511.06581
Distributional learning - https://arxiv.org/pdf/1707.06887
Noisy network - https://arxiv.org/pdf/1706.10295
Inspirace pro DQN kód - https://docs.pytorch.org/tutorials/intermediate/reinforcement_q_learning.html
Inspirace pro Rainbow DQN - https://github.com/Curt-Park/rainbow-is-all-you-need
Aktuální postup
Momentálně je implementovaný playground ve kterém trénuji a testuji modely (v adresáři battleship_playground).
Pomocí něho jsem implementoval a natrénoval tři modely/algoritmy:
-
DQN - Vychází z článku
Playing Atari with Deep Reinforcement Learning, Q learning s využitím NN -
Rainbow DQN - Vychází z článku o
Rainbow DQN, které zkombinovalo řadu vylepšení pro DQN; obsahuje menší změny oproti článku, jako využití jak priority Replay tak i normalní Replay najednou... - Random Play - náhodné akce; slouží spíše jako baseline
DQN a Rainbow DQN používají odměnu, která je:
- Trefa lodě == +1
- Trefa a zničení lodě == +2
- Minutí == -0.75
- Zničení všech lodí == + velikost_plochy / (minutí + trefy)
Všechny modely dostávají na vstup pole o dimenzích (4, počet řádků, počet sloupců). První čtyři dimenze jsou:
- všechna trefená políčka
- pouze trefené políčka s lodí
- ukazuje zničené celé lodě
- pouze kde byla minulá střela
V plánu je ještě přidat model založený na PPO a hráče Target and hunt. Navíc pro všechny modely ve finální verzi provedu důkladnější hledání optimálních parametrů.
Momentálně pro DQN a Rainbow DQN jsem hledal hyperparametry zkoušením.
Dosavadní výsledky
Aktuálně jsou natrénované tři modely: DQN, Rainbow DQN a Random. Každý z nich běžel pro 200 000 epizod. S tím, že implementace modelů + použité hyperparametry lze vidět ve složce custom_players/, kde pro každý model další podsložka. Tedy custom_players/dqn/, custom_players/rainbow_dqn/, custom_players/random/.
Aktuální výsledky modelů lze vidět níže.
| Model | Turns mean | Turns median | Turns std |
|---|---|---|---|
| Random | 95.38 | 97 | 4.82 |
| DQN | 55.26 | 54 | 13.24 |
| Rainbow DQN | 53.78 | 52 | 13.64 |
Z aktuálních modelů dosahuje nejlepších výsledků Rainbow DQN, s tím že DQN dosahuje podobných výsledků jako Rainbow DQN.
Odkaz na repozitář
https://gitlab.fit.cvut.cz/kuresmil/mvi-sp
V repozitáři je případně mírně rozsáhlejší verze milestonu, lze ji nálezt v souboru milestone.ipynb