En implementasjon av Deep Q-Network på retrospillet Atari Breakout. Det ble skrevet en rapport i forbindelse med prosjektet, som er tilgjengelig her. For å teste agenten ble miljøet BreakoutDeterministic-v4
fra OpenAI Gym tatt utgangspunkt i, og også senere modifisert. Koden er skrevet i Python, med pakker som bla. PyTorch og OpenCV.
Vedlagt i kildekoden ligger det en fil breakout_test.py
som gir deg muligheten til å spille spillet selv. Dette er fra et av mine egne forsøk:
Jeg klarte kun oppnå en score på 24, det var ikke så lett som det kan se ut som!
Dette prosjektet tar i bruk pakken argh
, som gjør det mulig å definere ulike parametere i terminalkommandoen for kjøring.
Grunnleggende:
$ python agent.py
Utvidelser:
-t : Kjør i testmodus med en rendret versjon av miljøet. Trener ikke, og bør tas utgangspunkt i en trent modell.
-l : Kjør med lokal synkronisering mot wandb.ai
-n <"navn"> : Definer navnet på kjøringen (vil bli spurt om dersom ikke testmodus)
-c <"model.pth"> : Sett en tidligere modell i /Models som utgangspunkt
En kan for eksempel kjøre $ python agent.py -t -c "rmsprop_før_379.pth"
for å kjøre en modell som klarer oppnå en poengsum på 360. Ettersom systemet er deterministisk skal du få det samme ved kjøring.
Boltzmann med redusert handlingsrom. Score på 381 etter 2t trening med utgangspunkt i modellen til # 3.
Boltzmann med RMSProp oppnådde en score på 379 etter 36m steg.
Boltzmann med redusert handlingsrom. Score på 368 etter 30m steg, og mister ikke siste livet. Ble avsluttet etter den nådde maksgrensa for antall handlinger i en episode; en begrensning satt i det originale miljøet for å unngå at den kjører uendelig dersom agenten bla. ikke starter spillet selv.
Et eksempel på nevnt scenario over. Agenten starter ikke spillet, men vibrerer bare ved å gå hurtig fra høyre til venstre.
Første fungerende kjøring i miljløet Breakout-v0. Oppnådd score på 36 etter 15m steg. Som beskrevet i rapporten ble miljøet BreakoutDeterministic-v4 brukt i videre kjøringer. Dette fordi en ønsket ha mer kontroll over tilfeldighetene, mer om dette i rapporten.