Den 22: Jak postavit herní botku AI pomocí OpenAI Gym and Universe

Neon Race Flash Game Environment of Universe

Přiznejme si to, AI je všude. Odehrává se bitva vhazování mezi Elon Musk a Mark Zuckerberg o budoucnosti AI. Někteří to démonizují. A někteří, jejichž utopické názory tvrdí, že umělá inteligence může být téměř jako boží v pomoci lidstvu. Ať už jsou vaše názory odkloněné, AI je tu, aby zůstala.

"S umělou inteligencí přivoláme démona." - Elon Musk
"Obavy z nárůstu zabijáckých robotů jsou jako obavy z přelidnění na Marsu." - Andrew Ng

Pokud jste nadšeni, že se můžete přímo potápět a pohrávat si s umělou inteligencí, pak jsou hry skvělým místem pro zahájení. Byli testovacím zařízením pro AI. Ale před skokem, tady je trochu historie o tom, jak se programování her postupem času vyvíjelo.

Dějiny programování her

Herní programátoři používali heuristická rozhodnutí typu if-then-else pro vzdělané odhady. Viděli jsme to v nejranějších arkádových videohrách, jako jsou Pong a PacMan. Tento trend byl normou velmi dlouhou dobu. Vývojáři her však mohou předvídat pouze tolik scénářů a případů hran, aby váš robot neběžel v kruzích!

Vývojáři her se pak pokusili napodobit, jak by lidé hráli hru, a modelovali lidskou inteligenci v herním botu.

Tým společnosti DeepMind to provedl zobecněním a modelováním inteligence, aby vyřešil jakoukoli hru Atari, která na ni byla hozena. Herní robot používal hluboké učení neuronových sítí, které by neměly žádné znalosti specifické pro hru. Porazili hru na základě pixelů, které viděli na obrazovce, a jejich znalosti ovládacích prvků hry. Části DeepMindu však stále nemají zdroje s otevřeným zdrojem, protože Google je používá k překonání konkurence.

Demokratizace AI

Aby nedošlo k soustředění neuvěřitelné síly AI do rukou několika, založil Elon Musk OpenAI. Snaží se demokratizovat AI tím, že je zpřístupní všem. Dnes prozkoumáme OpenAI Gym a nedávno vydané Vesmír, který je postaven na vrcholu Gym.

OpenAI Gym poskytuje jednoduché rozhraní pro interakci a správu libovolného dynamického prostředí. OpenAI Universe je platforma, která vám umožní postavit robota a vyzkoušet ho.

Existuje tisíc prostředí. Od klasických her Atari, Minecraft a Grand Theft Auto až po simulace proteinových skladeb, které mohou vyléčit rakovinu. Můžete vytvořit bota a spustit ho v jakémkoli prostředí pomocí několika řádků kódu Python. To je příliš úžasné nezkoušet!

Projekt (1 hodina)

Chystáme se postavit herní botku AI, která bude používat techniku ​​„Výztužného učení“. Vysvětlím to později. Bude autonomně hrát proti a porazit hru Atari Neon Race Car (můžete vybrat libovolnou hru, kterou chcete). Postavíme tuto herní botu pomocí knihoven OpenAI's Gym a Universe.

Krok 1: Instalace

Ujistěte se, že máte nainstalovaný Python, nebo jej nainstalujte pomocí Homebrew. Můžete si stáhnout vyhrazený Python IDE, jako je PyCharm nebo notebook iPython. Líbí se mi to jednoduché a používám Sublime. Nakonec instalujte Gym, Universe a další požadované knihovny pomocí pip.

// Nainstalujte python pomocí vařiče
vařit instalaci python3
// Nainstalujte požadované knihovny OpenAI
pip3 nainstalovat tělocvičnu
pip3 nainstalovat numpy inkremental
vařit instalaci golang libjpeg-turbo
pip instalujte vesmír

Všechno ve vesmíru (prostředí) běží jako kontejnery uvnitř Dockeru. Pokud ji ještě nemáte, nainstalujte a spusťte Docker odtud.

Krok 2: Kód herní bot

Game Bot je kódován v Pythonu, takže začneme importováním pouze dvou potřebných závislostí: Gym a Universe.

importovat tělocvičnu
importovat vesmír

Pro tuto herní botu použijeme jako testovací prostředí mou oblíbenou dětskou hru Neon Race Cars. Kompletní seznam dalších prostředí / her si můžete vybrat zde.

Vesmír umožňuje paralelní provoz tolik prostředí, kolik chcete. Ale pro tento projekt použijeme pouze jeden.

env = gym.make („flashgames.NeonRace-v0“)
env.configure (remotes = 1) # vytvoří místní přístavní kontejner

Posílení učení

Nyní přidáváme logiku hry, která používá techniku ​​posilování učení. Tato technika sleduje předchozí stav a odměnu hry (například pixely viděné na obrazovce nebo skóre hry). Pak přijde s akcí, která se bude zabývat životním prostředím.

Cílem je zlepšit jeho další pozorování (v našem případě - maximalizovat skóre hry). Tuto akci vybírá a provádí agent (Game Bot) s cílem maximalizovat skóre. Poté se aplikuje na životní prostředí. Prostředí zaznamenává výsledný stav a odměnu na základě toho, zda byla akce prospěšná nebo ne (vyhrála hru?).

Nyní můžeme načíst seznam pozorování pro každé prostředí inicializované pomocí metody env.reset ().

observ_n = env.reset ()

Pozorování je objektem specifickým pro životní prostředí. Představuje to, co bylo pozorováno, jako jsou surová obrazová data na obrazovce nebo stav / skóre hry.

Dalším krokem je vytvoření herního agenta pomocí nekonečné smyčky, která průběžně provádí nějakou akci na základě pozorování. V našem botu definujme jednorázovou akci opakovaného stisknutí šipky nahoru (Silly bot! Neváhejte ji vyvinout do složité…). Akce je zde definována typem události (KeyEvent), ovládacím klíčem (šipka nahoru) a nastavena na true pro všechny pozorování, které agent vidí.

zatímco True:
action_n = [[('KeyEvent', 'ArrowUp', True)] pro ob in observ_n]

Potom pomocí metody env.step () použijeme akci k posunu o jeden krok vpřed. Toto je velmi základní implementace posíleného učení.

 pozorování, odměna, hotovo, info = env.step (action_n)

Kroková metoda zde vrací čtyři proměnné:

  1. observ_n: Pozorování životního prostředí
  2. odměna_n: Pokud byla vaše akce prospěšná nebo ne: + 1 / -1
  3. done_n: Označuje, zda je hra u konce nebo ne: Ano / Ne
  4. info: Další informace, jako je výkon a latence pro účely ladění

Tuto akci můžete spustit současně pro všechna prostředí, ve kterých trénujete svého robota. Pro spuštění robota použijte metodu env.render ().

env.render ()

Nyní máte Game Bot připraveno konkurovat životnímu prostředí. Kompletní kód pro tuto základní botu a pokročilá verze je k dispozici v mém repozitáři Github zde.

Krok 3: Spusťte herní botu

Nyní pro zábavu: ujistěte se, že Docker běží a spusťte robota. Podívejte se na to v akci, když porazíte jiná auta nebo pokud tak neučiníte. Pokud se to nepodaří, pokračujte ve vylepšení vašeho robota, aby to porazilo inteligenci!

python gamebot.py
Crash and burrrn! #Základní

Pokračujte v hraní s AI a nakonec můžete odemknout Boží režim! # 100DaysOfCode

Pokud se vám to líbilo, tleskejte , aby to mohli vidět i ostatní! Sledujte mě na Twitteru @ HariniLabs nebo Medium a získejte nejnovější aktualizace o jiných příbězích nebo jen řekněte Ahoj :)

PS: Přihlaste se k odběru novinek zde jako první, kteří získají nový nový obsah, a je plná dávky inspirace ze světa #WomenInTech a ano, muži se mohou přihlásit také!