|
|
||
|---|---|---|
| .. | ||
| lab | ||
| CartPole-RL-PyTorch.ipynb | ||
| CartPole-RL-TF.ipynb | ||
| README.md | ||
| notebook.ipynb | ||
| tmp.ipynb | ||
README.md
SyvÀvahvistusoppiminen
Vahvistusoppiminen (RL) nÀhdÀÀn yhtenÀ koneoppimisen perusparadigmoista, yhdessÀ ohjatun oppimisen ja ohjaamattoman oppimisen kanssa. SiinÀ missÀ ohjatussa oppimisessa tukeudumme tunnettuja tuloksia sisÀltÀvÀÀn aineistoon, RL perustuu oppimiseen tekemÀllÀ. Esimerkiksi, kun nÀemme ensimmÀistÀ kertaa tietokonepelin, alamme pelata sitÀ, vaikka emme tiedÀ sÀÀntöjÀ, ja pian pystymme parantamaan taitojamme pelkÀstÀÀn pelaamalla ja mukauttamalla kÀyttÀytymistÀmme.
Esiluentovisa
RL:n suorittamiseen tarvitsemme:
- YmpÀristön tai simulaattorin, joka mÀÀrittÀÀ pelin sÀÀnnöt. MeidÀn tulisi pystyÀ suorittamaan kokeita simulaattorissa ja tarkkailemaan tuloksia.
- Palkkiofunktion, joka osoittaa, kuinka onnistunut kokeemme oli. Esimerkiksi tietokonepelin pelaamisen oppimisessa palkkio olisi lopullinen pistemÀÀrÀmme.
Palkkiofunktion perusteella meidĂ€n tulisi pystyĂ€ mukauttamaan kĂ€yttĂ€ytymistĂ€mme ja parantamaan taitojamme, jotta seuraavalla kerralla pelaamme paremmin. Suurin ero RL:n ja muiden koneoppimisen tyyppien vĂ€lillĂ€ on se, ettĂ€ RL:ssĂ€ emme yleensĂ€ tiedĂ€, voitammeko vai hĂ€viĂ€mme, ennen kuin peli on ohi. NĂ€in ollen emme voi sanoa, onko tietty siirto yksinÀÀn hyvĂ€ vai ei â saamme palkkion vasta pelin lopussa.
RL:n aikana suoritamme tyypillisesti monia kokeita. Jokaisen kokeen aikana meidÀn on tasapainotettava tÀhÀn mennessÀ oppimamme optimaalisen strategian noudattaminen (hyödyntÀminen) ja uusien mahdollisten tilojen tutkiminen (tutkiminen).
OpenAI Gym
Erinomainen työkalu RL:ÀÀn on OpenAI Gym - simulaatioympÀristö, joka voi simuloida monia erilaisia ympÀristöjÀ, alkaen Atari-peleistÀ aina fysiikkaan, kuten tangon tasapainottamiseen. Se on yksi suosituimmista simulaatioympÀristöistÀ vahvistusoppimisalgoritmien kouluttamiseen, ja sitÀ yllÀpitÀÀ OpenAI.
Note: Voit nÀhdÀ kaikki OpenAI Gymin tarjoamat ympÀristöt tÀÀltÀ.
CartPole-tasapainotus
Olette varmasti nĂ€hneet moderneja tasapainolaitteita, kuten Segway tai Gyroscooters. Ne pystyvĂ€t automaattisesti tasapainottamaan itsensĂ€ sÀÀtĂ€mĂ€llĂ€ pyöriÀÀn kiihtyvyysmittarin tai gyroskoopin signaalin perusteella. TĂ€ssĂ€ osiossa opimme ratkaisemaan vastaavan ongelman â tangon tasapainottamisen. Se muistuttaa tilannetta, jossa sirkustaiteilija tasapainottaa tankoa kĂ€dellÀÀn â mutta tĂ€ssĂ€ tapauksessa tasapainotus tapahtuu vain yhdessĂ€ ulottuvuudessa.
Yksinkertaistettu versio tasapainottamisesta tunnetaan nimellÀ CartPole-ongelma. CartPole-maailmassa meillÀ on vaakasuuntainen liukusÀÀdin, joka voi liikkua vasemmalle tai oikealle, ja tavoitteena on tasapainottaa pystysuora tanko liukusÀÀtimen pÀÀllÀ sen liikkuessa.
TÀmÀn ympÀristön luomiseen ja kÀyttÀmiseen tarvitsemme muutaman rivin Python-koodia:
import gym
env = gym.make("CartPole-v1")
env.reset()
done = False
total_reward = 0
while not done:
env.render()
action = env.action_space.sample()
observaton, reward, done, info = env.step(action)
total_reward += reward
print(f"Total reward: {total_reward}")
Jokaiseen ympÀristöön pÀÀsee kÀsiksi samalla tavalla:
env.resetaloittaa uuden kokeenenv.stepsuorittaa simulaatioaskeleen. Se vastaanottaa toiminnon toimintatilasta ja palauttaa havainnon (havaintotilasta), sekÀ palkkion ja lopetuslipun.
YllÀ olevassa esimerkissÀ suoritamme satunnaisen toiminnon jokaisessa askeleessa, minkÀ vuoksi kokeen kesto on hyvin lyhyt:
RL-algoritmin tavoitteena on kouluttaa malli â niin kutsuttu politiikka Ï â joka palauttaa toiminnon tiettyyn tilaan vastauksena. Voimme myös pitÀÀ politiikkaa todennĂ€köisyyspohjaisena, eli mille tahansa tilalle s ja toiminnolle a se palauttaa todennĂ€köisyyden Ï(a|s), ettĂ€ meidĂ€n tulisi valita a tilassa s.
Politiikkagradienttialgoritmi
Ilmeisin tapa mallintaa politiikka on luoda neuroverkko, joka ottaa syötteenÀ tilat ja palauttaa vastaavat toiminnot (tai pikemminkin kaikkien toimintojen todennÀköisyydet). TietyssÀ mielessÀ se olisi samanlainen kuin tavallinen luokittelutehtÀvÀ, mutta merkittÀvÀ ero on siinÀ, ettÀ emme tiedÀ etukÀteen, mitÀ toimintoja meidÀn tulisi suorittaa kussakin vaiheessa.
Ajatuksena on arvioida nÀitÀ todennÀköisyyksiÀ. Rakennamme kumulatiivisten palkkioiden vektorin, joka osoittaa kokonaispalkkiomme kussakin kokeen vaiheessa. Sovellamme myös palkkioiden diskonttausta kertomalla aikaisemmat palkkiot kertoimella γ=0.99, jotta aikaisempien palkkioiden merkitys vÀhenee. Sitten vahvistamme niitÀ kokeen vaiheita, jotka tuottavat suurempia palkkioita.
Lue lisÀÀ Politiikkagradienttialgoritmista ja katso se toiminnassa esimerkkivihkossa.
Actor-Critic-algoritmi
Parannettu versio PolitiikkagradienttimenetelmÀstÀ tunnetaan nimellÀ Actor-Critic. Sen perusidea on, ettÀ neuroverkko koulutetaan palauttamaan kaksi asiaa:
- Politiikka, joka mÀÀrittÀÀ, mikÀ toiminto suoritetaan. TÀtÀ osaa kutsutaan actoriksi.
- Arvio siitĂ€, kuinka suuren kokonaispalkkion voimme odottaa saavuttavamme tĂ€ssĂ€ tilassa â tĂ€tĂ€ osaa kutsutaan criticiksi.
TietyssÀ mielessÀ tÀmÀ arkkitehtuuri muistuttaa GAN:ia, jossa meillÀ on kaksi verkkoa, jotka koulutetaan toisiaan vastaan. Actor-Critic-mallissa actor ehdottaa toimintoa, joka meidÀn tulisi suorittaa, ja critic yrittÀÀ olla kriittinen ja arvioida tuloksen. Tavoitteenamme on kuitenkin kouluttaa nÀmÀ verkot yhdessÀ.
Koska tiedÀmme sekÀ todelliset kumulatiiviset palkkiot ettÀ criticin kokeen aikana palauttamat tulokset, on suhteellisen helppoa rakentaa hÀviöfunktio, joka minimoi niiden vÀlisen eron. TÀmÀ antaa meille critic-hÀviön. Voimme laskea actor-hÀviön kÀyttÀmÀllÀ samaa lÀhestymistapaa kuin politiikkagradienttialgoritmissa.
Kun olemme suorittaneet jonkin nÀistÀ algoritmeista, voimme odottaa CartPolen kÀyttÀytyvÀn nÀin:
âïž Harjoitukset: Politiikkagradientit ja Actor-Critic RL
Jatka oppimista seuraavissa vihkoissa:
Muut RL-tehtÀvÀt
Vahvistusoppiminen on nykyÀÀn nopeasti kasvava tutkimusalue. Joitakin mielenkiintoisia vahvistusoppimisen sovelluksia ovat:
- Tietokoneen opettaminen pelaamaan Atari-pelejĂ€. TĂ€mĂ€n ongelman haastava osa on, ettĂ€ meillĂ€ ei ole yksinkertaista tilaa, joka olisi esitetty vektorina, vaan pikemminkin kuvakaappaus â ja meidĂ€n on kĂ€ytettĂ€vĂ€ CNN:ÀÀ muuntamaan tĂ€mĂ€ kuvaruutu ominaisuusvektoriksi tai palkkiotiedon poimimiseen. Atari-pelit ovat saatavilla GymissĂ€.
- Tietokoneen opettaminen pelaamaan lautapelejÀ, kuten shakkia ja Go:ta. Viime aikoina huipputason ohjelmat, kuten Alpha Zero, on koulutettu alusta alkaen kahden agentin pelatessa toisiaan vastaan ja parantaessa joka askeleella.
- Teollisuudessa RL:ÀÀ kÀytetÀÀn ohjausjÀrjestelmien luomiseen simulaatiosta. Palvelu nimeltÀ Bonsai on suunniteltu erityisesti tÀhÀn tarkoitukseen.
Yhteenveto
Olemme nyt oppineet kouluttamaan agentteja saavuttamaan hyviÀ tuloksia pelkÀstÀÀn tarjoamalla heille palkkiofunktion, joka mÀÀrittÀÀ pelin toivotun tilan, ja antamalla heille mahdollisuuden tutkia ÀlykkÀÀsti hakutilaa. Olemme kokeilleet kahta algoritmia ja saavuttaneet hyviÀ tuloksia suhteellisen lyhyessÀ ajassa. TÀmÀ on kuitenkin vasta alkua matkallesi RL:n parissa, ja sinun kannattaa ehdottomasti harkita erillisen kurssin suorittamista, jos haluat syventyÀ aiheeseen.
đ Haaste
Tutustu "Muut RL-tehtÀvÀt" -osiossa lueteltuihin sovelluksiin ja yritÀ toteuttaa yksi niistÀ!
JĂ€lkiluentovisa
Kertaus ja itseopiskelu
Lue lisÀÀ klassisesta vahvistusoppimisesta Koneoppiminen aloittelijoille -opetussuunnitelmastamme.
Katso tÀmÀ loistava video, jossa kerrotaan, kuinka tietokone voi oppia pelaamaan Super Mariota.
TehtÀvÀ: Kouluta Mountain Car
Tavoitteenasi tĂ€ssĂ€ tehtĂ€vĂ€ssĂ€ on kouluttaa toinen Gym-ympĂ€ristö â Mountain Car.

