Päivä 22: Kuinka tekoälypottirakennus rakennetaan OpenAI-kuntosalin ja Universumin avulla

Tunnustetaan, tekoäly on kaikkialla. Elon Muskin ja Mark Zuckerbergin välinen taistelu on käynnissä tekoälyn tulevaisuudesta. On joitain, jotka demonisoivat sen. Ja jotkut, joiden utopistiset näkemykset väittävät, että tekoäly voisi melkein olla Jumalan kaltainen auttaessaan ihmiskuntaa. Kummallakin puolella näkemyksesi kallistuvat, tekoäly on täällä jäädäkseen.

"Keinoälyn avulla kutsumme demonin." - Elon Musk "Tappajarobottien lisääntymisen pelko on kuin huolta Marsin ylikansoituksesta." - Andrew Ng

Jos olet innoissasi sukeltaa sisään ja lyödä tekoälyä, pelit ovat hyvä paikka aloittaa. Ne ovat olleet tekoälyn testikenttä. Mutta ennen hyppäämistä, tässä on pieni historia siitä, kuinka pelien ohjelmointi on kehittynyt ajan myötä.

Peliohjelmoinnin historia

Peliohjelmoijat käyttivät heuristisia if-then-else -tyyppisiä päätöksiä tekemään koulutettuja arvauksia. Näimme tämän aikaisimmissa arcade-videopeleissä, kuten Pong ja PacMan. Tämä suuntaus oli normi hyvin pitkään. Mutta pelinkehittäjät voivat ennustaa vain niin monta skenaariota ja reunatapausta, jotta botti ei käy piireissä!

Pelin kehittäjät yrittivät sitten jäljitellä, kuinka ihmiset pelaavat peliä, ja mallinnivat ihmisen älykkyyden pelibotissa.

DeepMindin joukkue teki tämän yleistämällä ja mallintamalla älykkyyttä ratkaistakseen kaikki siihen heitetyt Atari-pelit. Pelin botti käytti syvällisiä oppimishermoverkkoja, joilla ei olisi pelikohtaista tietoa. He voittivat pelin näytöllä näkemiensä pikselien ja tietämyksensä perusteella pelin ohjaimista. Osa DeepMindistä ei kuitenkaan vieläkään ole avointa, koska Google käyttää sitä kilpailun voittamiseen.

Tekoälyn demokratisoituminen

Välttääkseen tekoälyn uskomattoman voiman keskittymisen muutamien käsiin, Elon Musk perusti OpenAI: n. Se pyrkii demokratisoimaan tekoälyn tekemällä sen kaikkien saataville. Tänään tutkimme OpenAI-kuntosalia ja äskettäin julkaistua Universumia, joka on rakennettu kuntosalin päälle.

OpenAI Gym tarjoaa yksinkertaisen käyttöliittymän vuorovaikutukseen minkä tahansa mielivaltaisen dynaamisen ympäristön kanssa ja hallitsemiseksi. OpenAI Universe on alusta, jonka avulla voit rakentaa botin ja testata sitä.

Ympäristöjä on tuhansia. Ne vaihtelevat klassisista Atari-peleistä, Minecraftista ja Grand Theft Autosta proteiinitaittosimulaatioihin, jotka voivat parantaa syöpää. Voit luoda botin ja käyttää sitä missä tahansa ympäristössä vain muutamalla rivillä Python-koodia. Tämä on liian mahtavaa olla kokeilematta!

Projekti (1 tunti)

Aiomme rakentaa tekoälypelibotin, joka käyttää ”vahvistusoppimisen” tekniikkaa. Selitän sen myöhemmin. Se pelaa itsenäisesti Atari-peliä Neon Race Car vastaan ​​ja voittaa sen (voit valita minkä tahansa haluamasi pelin). Rakennamme tämän pelibotin käyttämällä OpenAI: n Gym- ja Universe-kirjastoja.

Vaihe 1: Asennus

Varmista, että sinulla on Python asennettuna, tai asenna se Homebrew-ohjelmalla. Voit ladata erillisen Python IDE: n, kuten PyCharm tai iPython-muistikirja. Haluan pitää sen yksinkertaisena ja käyttää Sublimeä. Asenna lopuksi Gym, Universe ja muut vaaditut kirjastot pipillä.

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

Kaikki maailmankaikkeudessa (ympäristöt) kulkee kontteina Dockerin sisällä. Jos sinulla ei vielä ole sitä, asenna ja suorita Docker täältä.

Vaihe 2: Koodaa Game Bot

Game Bot on koodattu Pythonissa, joten aloitamme tuomalla vain kaksi tarvittavaa riippuvuutta: kuntosali ja universumi.

import gymimport universe

Tässä Game Botissa käytetään testiympäristönä lapseni suosikkipeliä, Neon Race Cars. Täältä löydät täydellisen luettelon muista ympäristöistä / peleistä, joista voit valita.

Universumin avulla voit ajaa yhtä monta ympäristöä kuin haluat. Mutta tähän projektiin käytämme vain yhtä.

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

Vahvistusoppiminen

Nyt lisätään pelibottilogiikka, joka käyttää vahvistuksen oppimistekniikkaa. Tämä tekniikka huomioi pelin edellisen tilan ja palkkion (kuten näytöllä näkyvät pikselit tai pelin pisteet). Sitten se keksii toiminnan, joka suoritetaan ympäristölle.

Tavoitteena on parantaa seuraavaa havaintoa (tapauksessamme - maksimoida pelitulokset). Tämän toiminnan valitsee ja suorittaa agentti (Game Bot) tarkoituksena maksimoida pisteet. Sitten sitä käytetään ympäristössä. Ympäristö tallentaa saadun tilan ja palkkion sen perusteella, onko toiminta ollut hyödyllistä vai ei (voittiko se pelin?).

Nyt voimme hakea luettelon havainnoista jokaiselle ympäristölle, joka on alustettu env.reset () -menetelmällä.

observation_n = env.reset()

Havainto on ympäristökohtainen kohde. Se edustaa mitä havaittiin, kuten raa'at pikselitiedot näytöllä tai pelin tila / pisteet.

Seuraava vaihe on luoda peli-agentti käyttämällä ääretöntä silmukkaa, joka suorittaa jatkuvasti joitain toimintoja havainnon perusteella. Määritellään botissamme yksi toiminto, jossa toistuvasti painetaan ylänuolta (typerä botti! Kehitä se vapaasti monimutkaiseksi…). Tämän toiminnon määrittelee tapahtuman tyyppi (KeyEvent), ohjausnäppäin (nuoli ylöspäin) ja asettamalla sen tosi kaikille havainnoille, jotka agentti näkee.

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

Sitten käytämme env.step()menetelmää toiminnon käyttämiseen eteenpäin yhden vaiheen eteenpäin. Tämä on vahvistetun oppimisen hyvin yksinkertainen toteutus.

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

Step-menetelmä palauttaa tässä neljä muuttujaa:

  1. observation_n: Ympäristön havainnot
  2. reward_n: Jos toiminnastasi oli hyötyä vai ei: + 1 / -1
  3. done_n: Ilmaisee, onko peli päättynyt vai ei: Kyllä / Ei
  4. info: Lisätietoja, kuten suorituskyky ja viive virheenkorjausta varten

Voit suorittaa tämän toiminnon samanaikaisesti kaikissa ympäristöissä, joissa harjoittelet bottia. Käynnistä botti env.render () -menetelmällä.

env.render()

Nyt sinulla on Game Bot valmis kilpailemaan ympäristön kanssa. Tämän botin täydellinen koodi ja edistynyt versio on saatavana Github-repossa täällä.

Vaihe 3: Suorita Game Bot

Nyt hauska osa: varmista, että Docker on käynnissä ja aja botti. Näe se toiminnassa pelaajan muita autoja tai jättämättä tekemättä. Jos se epäonnistuu, jatka botin muokkaamista, jotta se voittaisi älykkyyttä!

python gamebot.py

Jatka tekoälyä ja lopulta voit avata God-tilan! # 100DaysOfCode

Jos pidit tästä, taputtakaa ? s o muutkin näkevät sen! Seuraa minua Twitterissä @ H ariniLabs tai M edium saadaksesi uusimmat päivitykset muista tarinoista tai vain sanoa Hei :)

PS: Ilmoittaudu uutiskirjeeseen täällä saadaksesi ensimmäisenä uutta uutta sisältöä, ja se on täynnä annosta inspiraatiota # WomenInTech -maailmasta ja kyllä ​​myös miehet voivat ilmoittautua!