de Harini Janakiraman

Ziua 22: Cum să construiești un AI Game Bot folosind OpenAI Gym și Universe

Ziua 22 Cum sa construiesti un AI Game Bot folosind
Neon Race Flash Game Environment of Universe

Să recunoaștem, AI este peste tot. A luptă confruntată se desfășoară între Elon Musk și Mark Zuckerberg despre viitorul AI. Există unii care o demonizează. Și unii ale căror puncte de vedere utopice susțin că AI ar putea fi aproape ca Dumnezeu în ajutorul umanității. Indiferent de partea în care se înclină viziunile dvs., AI este aici pentru a rămâne.

„Cu inteligența artificială, chemăm demonul.” – Elon Musk

„Frica de o creștere a roboților ucigași este ca și cum ai fi îngrijorat de suprapopularea pe Marte.” – Andrew Ng

Dacă sunteți entuziasmați să vă scufundați direct și să jucați cu AI, atunci jocurile sunt un loc minunat pentru a începe. Ei au fost locul de testare pentru AI. Dar, înainte de a intra, iată un pic de istorie despre cum a evoluat programarea jocurilor de-a lungul timpului.

Istoria programării jocurilor

Programatorii de jocuri obișnuiau să folosească decizii euristice de tipul „atunci altfel” pentru a face presupuneri educate. Am văzut acest lucru în primele jocuri video arcade precum Pong și PacMan. Această tendință a fost norma pentru o perioadă foarte lungă de timp. Dar dezvoltatorii de jocuri pot prevedea atât de multe scenarii și cazuri marginale, astfel încât botul dvs. să nu ruleze în cercuri!

Dezvoltatorii de jocuri au încercat apoi să imite modul în care oamenii ar juca un joc și au modelat inteligența umană într-un bot de joc.

Echipa de la DeepMind a făcut acest lucru generalizând și modelând inteligența pentru a rezolva orice joc Atari aruncat asupra sa. Robotul de joc a folosit rețele neuronale de învățare profundă care nu ar avea cunoștințe specifice jocului. Au bătut jocul pe baza pixelilor pe care i-au văzut pe ecran și a cunoștințelor lor despre comenzile jocului. Cu toate acestea, părți din DeepMind încă nu sunt open-source, deoarece Google îl folosește pentru a învinge concurența.

Democratizarea AI

Pentru a evita concentrarea puterii incredibile a AI în mâinile câtorva, Elon Musk a fondat OpenAI. Încearcă să democratizeze AI, făcându-l accesibil tuturor. Astăzi vom explora OpenAI Gym și Universul recent lansat, care este construit deasupra Gym.

OpenAI Gym oferă o interfață simplă pentru interacțiunea și gestionarea oricărui mediu dinamic arbitrar. OpenAI Univers este o platformă care vă permite să construiți un bot și să-l testați.

Există mii de medii. Acestea variază de la jocuri clasice Atari, Minecraft și Grand Theft Auto, până la simulări de pliuri proteice care poate vindeca cancerul. Puteți crea un bot și îl puteți rula în orice mediu folosind doar câteva linii de cod Python. Este prea minunat ca să nu încerc!

Proiect (1 oră)

Vom construi un robot de joc AI care utilizează tehnica „Învățarea prin întărire”. O să explic asta mai târziu. Acesta va juca în mod autonom împotriva și va bate jocul Atari Neon Race Car (puteți selecta orice joc doriți). Vom construi acest joc de joc folosind bibliotecile OpenAI Gym și Universe.

Pasul 1: Instalare

Asigurați-vă că aveți instalat Python sau instalați-l folosind Homebrew. Puteți descărca un IDE Python dedicat, cum ar fi PyCharm sau notebook-ul iPython. Îmi place să-l păstrez simplu și să folosesc Sublime. În cele din urmă, instalați Gym, Universe și alte biblioteci necesare folosind pip.

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

Totul din Univers (mediile) rulează ca containere în interiorul Docker. În cazul în care nu îl aveți deja, instalați și rulați Docker de la aici.

Pasul 2: Codificați robotul de joc

Game Bot-ul este codat în Python, așa că începem prin a importa singurele două dependențe necesare: Gym și Univers.

import gymimport universe

Pentru acest Game Bot, să folosim jocul meu preferat din copilărie, Neon Race Cars, ca mediu de testare. Puteți găsi o listă completă a altor medii / jocuri din care puteți alege aici.

Universul vă permite să rulați câte medii doriți în paralel. Dar pentru acest proiect, vom folosi doar unul.

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

Consolidarea învățării

Acum adăugăm logica robotului de joc care folosește tehnica de învățare a întăririi. Această tehnică observă starea și recompensa anterioară a jocului (cum ar fi pixelii văzuți pe ecran sau scorul jocului). Apoi vine cu o acțiune de efectuat asupra mediului.

Scopul este de a îmbunătăți următoarea observație (în cazul nostru – de a maximiza scorul jocului). Această acțiune este aleasă și efectuată de un agent (Game Bot) cu intenția de a maximiza scorul. Se aplică apoi asupra mediului. Mediul înregistrează starea rezultată și recompensa pe baza faptului că acțiunea a fost benefică sau nu (a câștigat jocul?).

1611596046 606 Ziua 22 Cum sa construiesti un AI Game Bot folosind

Acum putem prelua lista de observații pentru fiecare mediu inițializat folosind metoda env.reset ().

observation_n = env.reset()

Observația de aici este un obiect specific mediului. Reprezintă ceea ce a fost observat, cum ar fi datele brute ale pixelilor pe ecran sau starea / scorul jocului.

Următorul pas este crearea unui agent de joc folosind o buclă infinită, care efectuează continuu o acțiune bazată pe observare. În botul nostru, să definim o singură acțiune de a apăsa în mod repetat săgeata sus (Bot prost! Simțiți-vă liber să-l evoluați la unul complex …). Acțiunea aici este definită de tipul de eveniment (KeyEvent), tasta de control (Săgeată sus) și setarea ei la adevărat pentru toate observațiile pe care agentul le vede.

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

Apoi folosim env.step() metoda de a folosi acțiunea pentru a merge mai departe cu o singură etapă. Aceasta este o implementare foarte de bază a învățării consolidate.

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

Metoda pasului aici returnează patru variabile:

  1. observation_n: Observații ale mediului
  2. reward_n: Dacă acțiunea dvs. a fost sau nu benefică: + 1 / -1
  3. done_n: Indică dacă jocul s-a terminat sau nu: Da / Nu
  4. info: Informații suplimentare, cum ar fi performanța și latența în scopuri de depanare

Puteți rula această acțiune simultan pentru toate mediile în care vă instruiți botul. Utilizați metoda env.render () pentru a porni botul.

env.render()

Acum aveți Game Bot-ul gata să concureze cu mediul. Codul complet pentru acest bot de bază, precum și o versiune avansată sunt disponibile în repo-ul meu Github aici.

Pasul 3: Rulați jocul Bot

Acum, pentru partea amuzantă: asigurați-vă că Docker rulează și rulați botul. Vedeți-l în acțiune bătând alte mașini sau nereușind să facă acest lucru. Dacă nu reușește, continuă să-ți modifici botul pentru a-l face să bată inteligența!

python gamebot.py
1611596046 840 Ziua 22 Cum sa construiesti un AI Game Bot folosind
Ziua 22 Cum sa construiesti un AI Game Bot folosind
Crash and burrrn! #De bază

Continuă să joci cu AI și, în cele din urmă, poți debloca Mode God! # 100DaysOfCode

1611596047 699 Ziua 22 Cum sa construiesti un AI Game Bot folosind

Dacă ți-a plăcut acest lucru, te rog bate din palme ? so pot vedea și alții! Urmăriți-mă pe Twitter @HariniLabs sau Medium pentru a obține cele mai recente actualizări despre alte povești sau doar pentru a spune Bună 🙂

PS: Înscrieți-vă la newsletter-ul meu aici să fii primul care primește conținut nou și este plin de o doză de inspirație din lumea #WomenInTech și da, și bărbații se pot înscrie!