Iedziļināties dziļāk mācībās par pastiprināšanu, izmantojot Q mācības

Šis raksts ir daļa no Deep Reinforcement Learning Course with Tensorflow? ️. Pārbaudiet mācību programmu šeit.

Šodien mēs uzzināsim par Q-Learning. Q-Learning ir uz vērtību balstīts pastiprināšanas mācīšanās algoritms.

Šis raksts ir otrā daļa no bezmaksas emuāra ziņu sērijas par dziļu nostiprināšanas mācīšanos. Lai iegūtu vairāk informācijas un vairāk resursu, skatiet kursa programmu. Pirmo rakstu skatiet šeit.

Šajā rakstā jūs uzzināsiet:

  • Kas ir Q-Learning
  • Kā to ieviest ar Numpy

Kopējā aina: bruņinieks un princese

Pieņemsim, ka jūs esat bruņinieks, un jums ir jāizglābj princese, kas iesprostota pilī, kas parādīta iepriekš redzamajā kartē.

Vienlaicīgi var pārvietot vienu flīzi. Ienaidnieks nevar, bet nolaisties uz tās pašas flīzes kā ienaidnieks, un jūs nomirsiet.Jūsu mērķis ir doties pilī pa ātrāko iespējamo maršrutu. To var novērtēt, izmantojot “punktu vērtēšanas” sistēmu.

  • Jūszaudēt -1 katrā solī (zaudējot punktus katrā solīpalīdz mūsu aģentam būt ātram).
  • Pieskaroties ienaidniekam, jūs zaudējat -100 punktus, un epizode beidzas.
  • Ja esat pilī, jūs uzvarējat, jūs saņemat +100 punktus.

Jautājums ir: kā jūs izveidojat aģentu, kas to spēs?

Lūk, pirmā stratēģija. Pieņemsim, ka mūsu aģents mēģina iet uz katru elementu un pēc tam katru flīžu nokrāso. Zaļš - “drošs”, un sarkans, ja nē.

Tad mēs varam pateikt savam aģentam, ka viņš ņem tikai zaļas flīzes.

Bet problēma ir tā, ka tas nav īsti noderīgs. Mēs nezinām labāko flīžu izvēli, ja zaļas flīzes atrodas blakus viena otrai.Tātad mūsu aģents var nonākt bezgalīgā lokā, mēģinot atrast pili!

Iepazīstinām ar Q tabulu

Lūk, otrā stratēģija: izveidojiet tabulu, kurā mēs aprēķināsim maksimālo paredzamo atlīdzību nākotnē par katru darbību katrā štatā.

Pateicoties tam, mēs zināsim, kā labāk rīkoties katrā valstī.

Katrs stāvoklis (elements) ļauj veikt četras iespējamās darbības. Tie pārvietojas pa kreisi, pa labi, uz augšu vai uz leju.

Aprēķina ziņā mēs varam pārveidot šo režģi tabulā.

To sauc par Q tabulu (“Q” darbības “kvalitātei”). Kolonnas būs četras darbības (pa kreisi, pa labi, uz augšu, uz leju). Rindas būs valstis. Katras šūnas vērtība būs maksimālā paredzamā atlīdzība par konkrēto stāvokli un darbību.

Katrs Q tabulas rezultāts būs maksimālā paredzamā atlīdzība nākotnē, ko es saņemšu, ja es rīkosies šajā valstī ar labāko sniegto politiku.

Kāpēc mēs sakām “ar piešķirto politiku?” Tas ir tāpēc, ka mēs neīstenojam politiku. Tā vietā mēs vienkārši uzlabojam savu Q tabulu, lai vienmēr izvēlētos labāko darbību.

Padomājiet par šo Q tabulu kā par spēles “apkrāptu lapu”. Pateicoties tam, mēs zinām par katru stāvokli (katrai Q tabulas rindai), kāda ir labākā rīcība, atrodot augstāko punktu šajā rindā.

Jā! Mēs atrisinājām pils problēmu! Bet pagaidiet ... Kā mēs aprēķinām vērtības katram Q tabulas elementam?

Lai uzzinātu katru šīs Q tabulas vērtību, mēs izmantosim Q mācīšanās algoritmu.

Q-mācību algoritms: darbības vērtības funkcijas apgūšana

Funkcijas Darbības vērtība (vai “Q funkcija”) ir divas ievades: “stāvoklis” un “darbība”. Tas atgriež paredzamo šīs darbības atlīdzību šajā valstī.

Mēs varam redzēt šo Q funkciju kā lasītāju, kas ritina Q tabulu, lai atrastu līniju, kas saistīta ar mūsu stāvokli, un kolonnu, kas saistīta ar mūsu darbību. Tas atgriež Q vērtību no atbilstošās šūnas. Šī ir “paredzamā atlīdzība nākotnē”.

Bet pirms mēs izpētām vidi, Q tabula dod tādu pašu patvaļīgu fiksēto vērtību (lielāko daļu laika 0). Izpētot vidi , Q tabula sniegs mums arvien labāku tuvinājumu, iteratīvi atjauninot Q (s, a), izmantojot Bellman vienādojumu (skat. Zemāk!)

Q-mācību algoritma process

1. darbība: inicializējiet Q vērtības

Mēs izveidojam Q tabulu ar m kolonām (m = darbību skaits) un n rindām (n = stāvokļu skaits). Mēs inicializējam vērtības 0.

2. solis: visu mūžu (vai līdz brīdim, kad mācīšanās tiek pārtraukta)

3. līdz 5. darbība tiks atkārtota, līdz būsim sasnieguši maksimālo epizožu skaitu (norādījis lietotājs) vai līdz manuāli pārtrauksim apmācību.

3. darbība: izvēlieties darbību

Izvēlieties darbību a pašreizējā stāvoklī s, pamatojoties uz pašreizējiem Q vērtības aprēķiniem.

Bet ... kādas darbības mēs varam veikt sākumā, ja katra Q vērtība ir vienāda ar nulli?

Tieši šeit būs svarīga izpētes / izmantošanas kompromiss, par kuru mēs runājām pēdējā rakstā.

Ideja ir tāda, ka sākumāmēs izmantosim epsilon mantkārīgo stratēģiju:

  • 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

Mēs izveidojām videoklipu, kurā mēs ieviešam Q-mācību aģentu, kurš iemācās spēlēt Taxi-v2 kopā ar Numpy.

Tagad, kad mēs zinām, kā tas darbojas, mēs soli pa solim ieviesīsim Q-mācību algoritmu. Katra koda daļa ir tieši izskaidrota zemāk esošajā Jupyter piezīmju grāmatiņā.

Tam varat piekļūt repo vietnē Deep Reinforcement Learning Course.

Vai arī varat tai piekļūt tieši Google kolaboratorijā:

J * Mācīšanās ar sasalušo ezeru

colab.research.google.com

Atkārtojums ...

  • Q-mācīšanās ir uz vērtību balstīts pastiprināšanas mācīšanās algoritms, ko izmanto, lai atrastu optimālu darbību izvēles politiku, izmantojot funkciju aq.
  • Tas novērtē, kura darbība jāveic, pamatojoties uz darbības vērtības funkciju, kas nosaka vērtību būt konkrētā stāvoklī un veikt noteiktu darbību šajā stāvoklī.
  • Mērķis: maksimizēt vērtības funkciju Q (paredzamā nākotnes atlīdzība, ņemot vērā stāvokli un darbību).
  • 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

3+ daļa: uzlabojumi dziļā Q mācīšanās procesā: dubultā DQN divcīņa, prioritātes noteiktas pieredzes atkārtojums un fiksēti Q mērķi

4. daļa: Ievads politikas gradientos ar Doom un Cartpole

5. daļa: Iepazīšanās ar Advantage Actor Critic metodēm: spēlēsim Sonicu ezīti!

6. daļa: Tuvākā politikas optimizācija (PPO) ar Sonic the Hedgehog 2 un 3

7. daļa: Uz ziņkārību balstīta mācīšanās atvieglo I daļu