Sukella syvemmälle vahvistusoppimiseen Q-oppimisen avulla

Tämä artikkeli on osa Deep Reinforcement Learning Course with Tensorflow? ️. Tarkista opetussuunnitelma täältä.

Tänään opimme Q-oppimisesta. Q-Learning on arvopohjainen Reinforcement Learning -algoritmi.

Tämä artikkeli on toinen osa ilmaista blogikirjoitussarjaa Deep Reinforcement Learning -palvelusta. Saat lisätietoja ja lisää resursseja tutustumalla kurssin opintosuunnitelmaan. Katso ensimmäinen artikkeli täältä.

Tässä artikkelissa opit:

  • Mitä Q-oppiminen on
  • Kuinka toteuttaa se Numpyn kanssa

Suuri kuva: ritari ja prinsessa

Oletetaan, että olet ritari ja sinun on pelastettava prinsessa, joka on loukussa linnassa, joka näkyy yllä olevalla kartalla.

Voit siirtää yhtä ruutua kerrallaan. Vihollinen ei voi, mutta laskeutuu samalla laatalla kuin vihollinen, ja kuolet.Tavoitteenasi on mennä linnaan nopeimmalla mahdollisella reitillä. Tämä voidaan arvioida "pisteytys" -järjestelmällä.

  • Sinämenettää -1 jokaisessa vaiheessa (menettää pisteitä jokaisessa vaiheessaauttaa agenttimme olemaan nopea).
  • Jos kosketat vihollista, menetät -100 pistettä ja jakso päättyy.
  • Jos olet linnassa voitat, saat +100 pistettä.

Kysymys kuuluu: miten luot agentin, joka pystyy tekemään sen?

Tässä on ensimmäinen strategia. Sanotaan, että agenttimme yrittää mennä jokaiseen ruutuun ja sitten värittää jokaisen laatan. Vihreä tarkoittaa "turvallista" ja punainen, jos ei.

Sitten voimme kertoa agentillemme ottamaan vain vihreät laatat.

Mutta ongelmana on, että se ei ole todella hyödyllistä. Emme tiedä parasta laattaa, kun vihreät laatat ovat vierekkäin.Agenttimme voi siis pudota loputtomaan silmukkaan yrittämällä löytää linnan!

Esittelyssä Q-taulukko

Tässä on toinen strategia: luo taulukko, jossa lasketaan suurin odotettu tuleva palkkio jokaiselle toiminnolle kussakin osavaltiossa.

Tämän ansiosta tiedämme, mikä on paras toimenpide kussakin osavaltiossa.

Jokainen tila (ruutu) sallii neljä mahdollista toimintoa. Nämä liikkuvat vasemmalle, oikealle, ylös tai alas.

Laskennan osalta voimme muuntaa tämän ruudukon taulukoksi.

Tätä kutsutaan Q-taulukoksi ("Q" toiminnan "laadulle"). Sarakkeet ovat neljä toimintoa (vasen, oikea, ylös, alas). Rivit ovat tiloja. Kunkin solun arvo on suurin odotettu tuleva palkkio kyseiselle tilalle ja toiminnalle.

Kukin Q-taulukon pisteet ovat suurin odotettu tuleva palkkio, jonka saan, jos ryhdyn kyseiseen toimintaan siinä osavaltiossa parhaan käytännön mukaisesti.

Miksi sanomme "annetulla politiikalla?" Se johtuu siitä, että emme toteuta politiikkaa. Sen sijaan parannamme vain Q-taulukkoamme valitaksesi aina parhaan toiminnan.

Ajattele tätä Q-pöytää pelin "huijausarkkina". Tämän ansiosta tiedämme jokaisesta osavaltiosta (jokaisesta Q-taulukon rivistä), mikä on paras toimenpide, etsimällä korkein pisteet tältä riviltä.

Joo! Ratkaisimme linnan ongelman! Mutta odota ... Kuinka laskemme Q-taulukon kunkin elementin arvot?

Tämän Q-taulukon kunkin arvon oppimiseksi käytämme Q-oppimisalgoritmia.

Q-oppimisalgoritmi: Action Value -toiminnon oppiminen

Action Value -toiminto (tai Q-toiminto) vie kaksi tuloa: "tila" ja "toiminta". Se palauttaa kyseisen toiminnan odotetun tulevan palkkion kyseisessä tilassa.

Voimme nähdä tämän Q-funktion lukijana, joka selaa Q-taulukkoa etsimään tilaan liittyvän rivin ja toimintaan liittyvän sarakkeen. Se palauttaa Q-arvon vastaavasta solusta. Tämä on "odotettu tuleva palkkio".

Mutta ennen kuin tutkimme ympäristöä, Q-taulukko antaa saman mielivaltaisen kiinteän arvon (suurimman osan ajasta 0). Kun tutkimme ympäristöä , Q-taulukko antaa meille paremman ja paremman approksimaation päivittämällä iteratiivisesti Q (s, a) Bellman-yhtälön avulla (katso alla!).

Q-oppimisalgoritmiprosessi

Vaihe 1: Alusta Q-arvot

Rakennamme Q-taulukon, jossa on m cols (m = toimintojen määrä) ja n riviä (n = tilojen määrä). Alustamme arvot nollalla.

Vaihe 2: Elämän ajan (tai kunnes oppiminen lopetetaan)

Vaiheet 3 - 5 toistetaan, kunnes saavutamme enimmäismäärän jaksoja (käyttäjän määrittelemät) tai kunnes lopetamme harjoittelun manuaalisesti.

Vaihe 3: Valitse toiminto

Valitse toiminto a nykyisessä tilassa s nykyisten Q-arvo-arvioiden perusteella.

Mutta… mitä voimme tehdä alussa, jos jokainen Q-arvo on nolla?

Siellä on tärkeä etsintä- / hyödyntämisvaihto, josta puhuimme viimeisessä artikkelissa.

Ajatuksena on, että alussakäytämme epsilonin ahne strategiaa:

  • We specify an exploration rate “epsilon,” which we set to 1 in the beginning. This is the rate of steps that we’ll do randomly. In the beginning, this rate must be at its highest value, because we don’t know anything about the values in Q-table. This means we need to do a lot of exploration, by randomly choosing our actions.
  • We generate a random number. If this number > epsilon, then we will do “exploitation” (this means we use what we already know to select the best action at each step). Else, we’ll do exploration.
  • The idea is that we must have a big epsilon at the beginning of the training of the Q-function. Then, reduce it progressively as the agent becomes more confident at estimating Q-values.

Steps 4–5: Evaluate!

Take the action a and observe the outcome state s’ and reward r. Now update the function Q(s,a).

We take the action a that we chose in step 3, and then performing this action returns us a new state s’ and a reward r (as we saw in the Reinforcement Learning process in the first article).

Then, to update Q(s,a) we use the Bellman equation:

The idea here is to update our Q(state, action) like this:

New Q value = Current Q value + lr * [Reward + discount_rate * (highest Q value between possible actions from the new state s’ ) — Current Q value ]

Let’s take an example:

  • One cheese = +1
  • Two cheese = +2
  • Big pile of cheese = +10 (end of the episode)
  • If you eat rat poison =-10 (end of the episode)

Step 1: We init our Q-table

Step 2: Choose an action

From the starting position, you can choose between going right or down. Because we have a big epsilon rate (since we don’t know anything about the environment yet), we choose randomly. For example… move right.

We found a piece of cheese (+1), and we can now update the Q-value of being at start and going right. We do this by using the Bellman equation.

Steps 4–5: Update the Q-function

  • First, we calculate the change in Q value ΔQ(start, right)
  • Then we add the initial Q value to the ΔQ(start, right) multiplied by a learning rate.

Think of the learning rate as a way of how quickly a network abandons the former value for the new. If the learning rate is 1, the new estimate will be the new Q-value.

Good! We’ve just updated our first Q value. Now we need to do that again and again until the learning is stopped.

Implement a Q-learning algorithm

Teimme videon, jossa toteutamme Q-oppimisagentin, joka oppii soittamaan Taxi-v2: ta Numpyn kanssa.

Nyt kun tiedämme kuinka se toimii, toteutamme Q-oppimisalgoritmin vaihe vaiheelta. Koodin jokainen osa selitetään suoraan alla olevassa Jupyter-muistikirjassa.

Pääset siihen Deep Reinforcement Learning Course -julkaisussa.

Tai voit käyttää sitä suoraan Google Colaboratory -palvelussa:

Q * Oppiminen jäätyneen järven kanssa

colab.research.google.com

Yhteenveto…

  • Q-oppiminen on arvopohjainen Reinforcement Learning -algoritmi, jota käytetään optimaalisen toimintavalinnan käytännön löytämiseen aq-funktiolla.
  • Se arvioi suoritettavan toiminnan perustuen toiminto-arvo-funktioon, joka määrittää arvon olla tietyssä tilassa ja suorittaa tietyn toiminnan kyseisessä tilassa.
  • Tavoite: maksimoi arvofunktio Q (odotettu tuleva palkkio tilalle ja toiminnalle).
  • Q table helps us to find the best action for each state.
  • To maximize the expected reward by selecting the best of all possible actions.
  • The Q come from qualityof a certain action in a certain state.
  • Function Q(state, action) → returns expected future reward of that action at that state.
  • This function can be estimated using Q-learning, which iteratively updates Q(s,a) using the Bellman Equation
  • Before we explore the environment: Q table gives the same arbitrary fixed value → but as we explore the environment → Q gives us a better and better approximation.

That’s all! Don’t forget to implement each part of the code by yourself — it’s really important to try to modify the code I gave you.

Try to add epochs, change the learning rate, and use a harder environment (such as Frozen-lake with 8x8 tiles). Have fun!

Next time we’ll work on Deep Q-learning, one of the biggest breakthroughs in Deep Reinforcement Learning in 2015. And we’ll train an agent that that plays Doom and kills enemies!

If you liked my article, please click the ? below as many time as you liked the article so other people will see this here on Medium. And don’t forget to follow me!

If you have any thoughts, comments, questions, feel free to comment below or send me an email: [email protected], or tweet me @ThomasSimonini.

Keep learning, stay awesome!

Deep Reinforcement Learning Course with Tensorflow ?️

? Syllabus

? Video version

Part 1: An introduction to Reinforcement Learning

Part 2: Diving deeper into Reinforcement Learning with Q-Learning

Part 3: An introduction to Deep Q-Learning: let’s play Doom

Osa 3+: Parannukset syvälle Q-oppimiseen: kaksinkertaisen DQN-taistelun, priorisoidun kokemuksen uusinta ja kiinteät Q-tavoitteet

Osa 4: Johdanto politiikan kaltevuuksiin, joissa on Doom ja Cartpole

Osa 5: Johdanto Advantage Actor Critic -menetelmiin: soitetaan Sonic the Hedgehog!

Osa 6: Proximal Policy Optimization (PPO) Sonic the Hedgehog 2: n ja 3: n kanssa

Osa 7: Uteliaisuuteen perustuva oppiminen helpotti osaa I