Skip to content

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:

  1. všechna trefená políčka
  2. pouze trefené políčka s lodí
  3. ukazuje zničené celé lodě
  4. 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

output 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

Edited by Milan Kureš