22. dan: Kako izraditi AI Game Bot koristeći OpenAI Gym i Universe

Priznajmo, AI je posvuda. Između Elona Muska i Marka Zuckerberga odvija se sučeljena bitka oko budućnosti AI. Postoje neki koji to demoniziraju. A neki čiji utopijski stavovi tvrde da bi AI gotovo mogao biti poput boga u pomaganju čovječanstvu. Koju god stranu da se vaši pogledi naginju, AI je tu da ostane.

"S umjetnom inteligencijom prizivamo demona." - Elon Musk "Bojati se porasta robota ubojica je poput brige zbog prenaseljenosti na Marsu." - Andrew Ng

Ako ste uzbuđeni što možete zaroniti i poigrati se s AI-jem, tada su igre izvrsno mjesto za početak. Oni su bili mjesto za testiranje AI. No, prije nego što uskočite, evo malo povijesti o tome kako se programiranje igara razvijalo kroz vrijeme.

Povijest programiranja igara

Programeri igara koristili su se heurističkim odlukama tipa "tada", da bi obrazovali nagađanja. To smo vidjeli u najranijim arkadnim video igrama kao što su Pong i PacMan. Taj je trend vrlo dugo bio norma. No, programeri igara mogu predvidjeti samo toliko scenarija i rubnih slučajeva kako vaš bot ne bi kružio!

Programeri igara zatim su pokušali oponašati kako će ljudi igrati igru ​​i modelirali su ljudsku inteligenciju u botu za igru.

Tim iz DeepMinda to je učinio generalizirajući i modelirajući inteligenciju kako bi riješio bilo koju Atari igru ​​koja joj se baci. Igrački bot koristio je neuronske mreže dubokog učenja koje ne bi imale znanje specifično za igru. Pobijedili su igru ​​na temelju piksela koje su vidjeli na ekranu i njihovog znanja o kontrolama igre. Međutim, dijelovi DeepMinda još uvijek nisu otvoreni, jer ga Google koristi za pobjedu nad konkurencijom.

Demokratizacija AI

Kako bi izbjegao koncentriranje nevjerojatne snage AI u rukama nekolicine, Elon Musk osnovao je OpenAI. Nastoji demokratizirati AI čineći ga dostupnim svima. Danas ćemo istražiti OpenAI teretanu i nedavno objavljeni Svemir koji je izgrađen na vrhu teretane.

OpenAI Gym pruža jednostavno sučelje za interakciju i upravljanje bilo kojim proizvoljnim dinamičkim okruženjem. OpenAI Universe platforma je koja vam omogućuje izradu bota i njegovo testiranje.

Postoje tisuće okruženja. Oni se kreću od klasičnih Atari igara, Minecrafta i Grand Theft Autoa, do simulacija nabora proteina koji mogu izliječiti rak. Možete stvoriti bota i pokrenuti ga u bilo kojem okruženju koristeći samo nekoliko redaka Python koda. Ovo je previše strašno da ne biste pokušali!

Projekt (1 sat)

Izgradit ćemo AI Game Bot koji koristi tehniku ​​"Pojačanje učenja". Objasnit ću to kasnije. Autonomno će igrati i pobijediti Atari igru ​​Neon Race Car (možete odabrati bilo koju igru ​​koju želite). Izgradit ćemo ovog bota za igru ​​koristeći OpenAI-jeve Gym i Universe knjižnice.

Korak 1: Instalacija

Provjerite je li instaliran Python ili ga instalirajte pomoću Homebrew-a. Možete preuzeti namjenski Python IDE poput PyCharma ili iPython prijenosnika. Volim biti jednostavan i koristiti Sublime. Napokon, instalirajte Gym, Universe i ostale potrebne biblioteke pomoću pipa.

// Install python using brewbrew install python3// Install the required OpenAI librariespip3 install gympip3 install numpy incrementalbrew install golang libjpeg-turbo pip install universe

Sve u Svemiru (okruženja) radi kao spremnici unutar Dockera. U slučaju da ga već nemate, instalirajte i pokrenite Docker odavde.

Korak 2: kodirajte game bota

Game Bot je kodiran na Pythonu, pa započinjemo uvozom jedine dvije potrebne ovisnosti: Gym i Universe.

import gymimport universe

Za ovaj Game Bot, upotrijebimo moju omiljenu igru ​​iz djetinjstva, Neon Race Cars, kao testno okruženje. Potpuni popis drugih okruženja / igara koje možete odabrati možete pronaći ovdje.

Universe vam omogućuje paralelno pokretanje onoliko okruženja koliko želite. Ali za ovaj ćemo projekt upotrijebiti samo jedan.

env = gym.make(‘flashgames.NeonRace-v0’)env.configure(remotes=1) # creates a local docker container

Učenje s pojačanjem

Sada dodajemo logiku bota za igru ​​koja koristi tehniku ​​učenja pojačanja. Ova tehnika promatra prethodno stanje i nagradu igre (poput piksela vidljivih na ekranu ili rezultata igre). Zatim dolazi do akcije koja se izvodi na okoliš.

Cilj je poboljšati svoje sljedeće promatranje (u našem slučaju - maksimalizirati rezultat igre). Ovu radnju odabire i izvodi agent (Game Bot) s namjerom da maksimalizira rezultat. Zatim se primjenjuje na okoliš. Okoliš bilježi rezultirajuće stanje i nagradu na temelju toga je li akcija bila korisna ili nije (je li pobijedila u igri?).

Sada možemo dohvatiti popis opažanja za svako okruženje inicijalizirano metodom env.reset ().

observation_n = env.reset()

Ovdje je promatranje objekt specifičan za okoliš. Predstavlja ono što je uočeno, kao što su neobrađeni podaci o pikselima na zaslonu ili status / rezultat igre.

Sljedeći je korak stvaranje agenta za igru ​​pomoću beskonačne petlje, koji kontinuirano izvodi neke radnje na temelju promatranja. U našem botu, definirajmo jednu radnju ponovljenog pritiskanja strelice prema gore (Glupi bot! Slobodno je evoluirajte u složenu ...). Akcija je ovdje definirana vrstom događaja (KeyEvent), kontrolnom tipkom (strelica prema gore) i postavljanjem na true za sva opažanja koja agent vidi.

while True:action_n = [[('KeyEvent', 'ArrowUp', True)] for ob in observation_n]

Zatim env.step()metodom koristimo akciju za pomicanje naprijed za jedan vremenski korak. Ovo je vrlo osnovna primjena pojačanog učenja.

 observation_n, reward_n, done_n, info = env.step(action_n)

Koračna metoda ovdje vraća četiri varijable:

  1. observation_n: Promatranja okoliša
  2. reward_n: Ako je vaše djelovanje bilo korisno ili ne: + 1 / -1
  3. done_n: Označava je li igra završena ili ne: Da / Ne
  4. info: Dodatne informacije poput izvedbe i kašnjenja u svrhu uklanjanja pogrešaka

Ovu akciju možete istodobno pokrenuti za sva okruženja u kojima trenirate svog bota. Upotrijebite metodu env.render () za pokretanje bota.

env.render()

Sada ste Game Bot spremni za nadmetanje s okolinom. Kompletni kôd za ovaj osnovni bot, kao i naprednu verziju dostupan je u mom Github repo ovdje.

Korak 3: Pokrenite Game Bot

Sada zabavni dio: osigurajte da Docker radi i pokrenite bota. Pogledajte to na djelu kako tuče druge automobile ili to ne čini. Ako ne uspije, nastavite dotjerivati ​​svog bota kako bi pobijedio inteligenciju!

python gamebot.py

Nastavite petljati s AI-jem i na kraju možete otključati način Boga! # 100DaysOfCode

Ako ste uživali u ovome, molim vas pljeskajte ? s o to mogu vidjeti i drugi! Slijedite me na Twitteru @H ariniLabs ili M edium da biste dobili najnovija ažuriranja o drugim pričama ili samo da pozdravite :)

PS: Prijavite se za moj bilten ovdje da biste prvi dobili novi novi sadržaj, a ispunjen je dozom inspiracije iz svijeta # WomenInTech, a da se i muškarci mogu prijaviti!