22. päev: kuidas luua AI mängubott OpenAI jõusaali ja universumi abil

Olgem ausad, tehisintellekti on kõikjal. Elon Muski ja Mark Zuckerbergi vahel toimub tehisintellekti tuleviku teemal lahing. On mõned, kes seda demoniseerivad. Ja mõned, kelle utoopilised vaated väidavad, et tehisintellekt võib inimkonda aidata peaaegu jumala moodi. Kummal pool teie vaated kalduvad, on AI siin selleks, et jääda.

"Tehisintellektiga kutsume me deemonit välja." - Elon Musk "Tapjarobotite kasvu kartmine on nagu muretsemine Marsi ülerahvastatuse pärast." - Andrew Ng

Kui olete põnevil otse sisse sukelduma ja tehisintellekti kallal nokitsema, on mängud suurepärane koht alustamiseks. Nad on olnud tehisintellekti proovikiviks. Kuid enne hüppamist on siin natuke ajalugu, kuidas mängude programmeerimine on aja jooksul arenenud.

Mängude programmeerimise ajalugu

Mänguprogrammeerijad kasutasid haritud oletuste tegemiseks heuristilisi kui-siis-muud tüüpi otsuseid. Nägime seda kõige varasemates arcade videomängudes nagu Pong ja PacMan. See trend oli väga pikka aega norm. Kuid mänguarendajad saavad ennustada ainult nii palju stsenaariume ja servajuhtumeid, et teie bot ei töötaks ringides!

Seejärel püüdsid mänguarendajad matkida seda, kuidas inimesed mängu mängivad, ja modelleerisid inimese intelligentsust mängu botis.

DeepMindi meeskond tegi seda luure üldistamise ja modelleerimisega, et lahendada kõik sellele visatud Atari mängud. Mängubott kasutas sügavaid õppivaid närvivõrke, millel puuduksid mänguspetsiifilised teadmised. Nad peksid mängu ekraanil nähtud pikslite ja teadmiste põhjal mängu juhtnuppude põhjal. Kuid osa DeepMindist pole endiselt avatud, kuna Google kasutab seda konkurentsi võitmiseks.

Tehisintellekti demokratiseerimine

Vältimaks tehisintellekti uskumatu jõu koondumist väheste kätte, asutas Elon Musk OpenAI. See püüab tehisintellekti demokratiseerida, tehes selle kõigile kättesaadavaks. Täna uurime OpenAI jõusaali ja hiljuti välja antud Universumit, mis on ehitatud jõusaali peale.

OpenAI Gym pakub lihtsat liidest suvalise dünaamilise keskkonnaga suhtlemiseks ja haldamiseks. OpenAI Universe on platvorm, mis võimaldab teil roboti üles ehitada ja seda katsetada.

Keskkondi on tuhandeid. Need hõlmavad klassikalisi Atari mänge, Minecrafti ja Grand Theft Auto kuni valguvoltide simulatsioonideni, mis suudavad vähki ravida. Saate luua roboti ja käitada seda igas keskkonnas, kasutades ainult mõnda rida Pythoni koodi. See on liiga vinge, et mitte proovida!

Projekt (1 tund)

Kavatseme ehitada AI Game Bot'i, mis kasutab tehnikat “Reinforcement Learning”. Seletan seda hiljem. See mängib autonoomselt Atari mängu Neon Race Car vastu ja võidab selle (saate valida mis tahes mängu, mida soovite). Ehitame selle mänguboti, kasutades OpenAI jõusaali ja universumi raamatukogusid.

1. samm: installimine

Veenduge, et teil oleks Python installitud, või installige see Homebrew'i abil. Võite alla laadida spetsiaalse Pythoni IDE, näiteks PyCharm või iPythoni märkmik. Mulle meeldib hoida see lihtsana ja kasutada Sublime'i. Lõpuks installige pipi abil Gym, Universe ja muud vajalikud teegid.

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

Kõik Universumis (keskkondades) kulgeb Dockeri sees konteineritena. Kui teil seda veel pole, installige ja käivitage Docker siit.

2. samm: kodeerige mängu bot

Game Bot on Pythonis kodeeritud, seega alustame ainukeste vajalike sõltuvuste importimisest: jõusaal ja universum.

import gymimport universe

Selle mänguboti jaoks kasutame testimiskeskkonnana minu lemmik lapsepõlvemängu Neon Race Cars. Siit leiate täieliku loendi muudest keskkondadest / mängudest, mille saate valida.

Universum võimaldab teil paralleelselt käivitada nii palju keskkondi, kui soovite. Kuid selle projekti jaoks kasutame ainult ühte.

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

Tugevdusõpe

Nüüd lisame mänguboti loogika, mis kasutab tugevdamise õppimise tehnikat. See tehnika jälgib mängu eelmist olekut ja tasu (näiteks ekraanil nähtud piksleid või mängu skoori). Seejärel tuleb välja tegevus, mida keskkonnale teha.

Eesmärk on oma järgmine tähelepanek paremaks muuta (meie puhul - mängu skoori maksimeerimine). Selle toimingu valib ja sooritab agent (Game Bot) eesmärgiga skoor maksimeerida. Seejärel rakendatakse seda keskkonnale. Keskkond registreerib saadud oleku ja tasu selle põhjal, kas tegevus oli kasulik või mitte (kas see võitis mängu?)

Nüüd saame leida env.reset () meetodil iga initsialiseeritud keskkonna vaatluste loendi.

observation_n = env.reset()

Vaatlus on siin keskkonnaspetsiifiline objekt. See tähistab vaadeldut, nagu ekraanil olevad toorpiksli andmed või mängu olek / skoor.

Järgmine samm on lõpmatu silmuse abil mänguagendi loomine, mis vaatlusel pidevalt mingi toimingu sooritab. Määratleme oma robotis ühe toimingu, kui vajutate korduvalt ülesnoolt (Rumal bot! Arendage see julgelt keeruliseks ...). Siin määratletakse toiming sündmuse tüübi (KeyEvent), juhtnupu (nool üles) abil ja selle tõeseks seadmiseks kõigi vaatluste puhul, mida agent näeb.

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

Seejärel kasutame env.step()meetodit, et kasutada toimingut ühe sammu võrra edasi liikumiseks. See on tugevdatud õppimise väga elementaarne rakendamine.

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

Sammumeetod tagastab siin neli muutujat:

  1. observation_n: Keskkonna vaatlused
  2. reward_n: Kui teie tegevus oli kasulik või mitte: + 1 / -1
  3. done_n: Näitab, kas mäng on läbi või mitte: jah / ei
  4. info: Lisateave, näiteks jõudlus ja latentsus silumise eesmärgil

Saate selle toimingu samaaegselt käivitada kõigis keskkondades, kus oma robotit treenite. Boti käivitamiseks kasutage meetodit env.render ().

env.render()

Nüüd on Game Bot valmis keskkonnaga konkureerima. Selle põhiboti täielik kood ja ka täiustatud versioon on saadaval minu Githubi repos siin.

3. samm: käivitage Game Bot

Nüüd lõbusast osast: veenduge, et Docker töötab ja käivitage bot. Vaadake seda tegudes teiste autode peksmisel või tegemata jätmisel. Kui see ebaõnnestub, jätkake oma roboti kohandamist, et see intelligentsust ületaks!

python gamebot.py

Jätkake tehisintellektiga nokitsemist ja lõpuks saate avada Jumala režiimi! # 100DaysOfCode

Kui teile see meeldis, palun plaksutage ? s o seda näevad ka teised! Järgi mind vidistama @H ariniLabs või M edium saada uusimaid värskendusi teiste lugusid või lihtsalt tere öelda :)

PS: Registreeruge siin oma uudiskirja saamiseks, et saada värske uus sisu esimesena ja see on täis annust inspiratsiooni # WomenInTechi maailmast ja jah, ka mehed saavad registreeruda!