de Thomas Simonini

Scufundându-vă mai profund în învățarea prin întărire cu Q-Learning

Scufundandu va mai profund in invatarea prin intarire cu Q Learning

Acest articol face parte din cursul de învățare cu întărire profundă cu Tensorflow? ️. Verificați programa here.

Astăzi vom afla despre Q-Learning. Q-Learning este un algoritm de învățare a întăririi bazat pe valori.

Acest articol este a doua parte a unei serii gratuite de postări pe blog despre Învățarea profundă a armăturii. Pentru mai multe informații și mai multe resurse, consultați programa cursului. Vedea primul articol aici.

În acest articol veți afla:

  • Ce este Q-Learning
  • Cum să-l implementați cu Numpy

Imaginea de ansamblu: Cavalerul și Prințesa

1612004948 286 Scufundandu va mai profund in invatarea prin intarire cu Q Learning

Să presupunem că ești cavaler și că trebuie să o salvezi pe prințesa prinsă în castelul prezentat pe harta de mai sus.

Puteți muta câte o țiglă odată. Inamicul nu poate, dar aterizează pe aceeași țiglă cu inamicul și vei muri. Scopul tău este să mergi la castel pe calea cea mai rapidă posibilă. Acest lucru poate fi evaluat folosind un sistem de „punctare a punctelor”.

  • Tu pierde -1 la fiecare pas (pierde puncte la fiecare pas ajută agentul nostru să fie rapid).
  • Dacă atingi un inamic, pierzi -100 de puncte, iar episodul se termină.
  • Dacă ești în castel câștigi, obții +100 de puncte.

Întrebarea este: cum creezi un agent care să poată face asta?

Iată o primă strategie. Să presupunem că agentul nostru încearcă să meargă la fiecare țiglă și apoi să coloreze fiecare țiglă. Verde pentru „sigur” și roșu dacă nu.

1612004949 483 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
Aceeași hartă, dar colorată pentru a arăta ce plăci sunt vizibile în siguranță.

Apoi, putem spune agentului nostru să ia doar plăci verzi.

Dar problema este că nu este foarte util. Nu știm cea mai bună placă de luat când plăcile verzi sunt adiacente una cu alta. Deci agentul nostru poate cădea într-o buclă infinită încercând să găsească castelul!

Vă prezentăm tabelul Q

Iată o a doua strategie: creați un tabel în care vom calcula recompensa maximă viitoare așteptată, pentru fiecare acțiune din fiecare stare.

Datorită acestui fapt, vom ști care este cea mai bună acțiune de întreprins pentru fiecare stat.

Fiecare stare (țiglă) permite patru acțiuni posibile. Acestea se mișcă la stânga, la dreapta, în sus sau în jos.

1612004949 559 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
0 sunt mișcări imposibile (dacă vă aflați în colțul din stânga sus nu puteți merge la stânga sau în sus!)

În ceea ce privește calculul, putem transforma această grilă într-un tabel.

Aceasta se numește a Q-table („Q” pentru „calitatea” acțiunii). Coloanele vor fi cele patru acțiuni (stânga, dreapta, sus, jos). Rândurile vor fi stările. Valoarea fiecărei celule va fi recompensa maximă viitoare așteptată pentru acea stare și acțiune date.

1612004949 617 Scufundandu va mai profund in invatarea prin intarire cu Q Learning

Fiecare scor al tabelului Q va fi recompensa maximă viitoare așteptată pe care o voi obține dacă iau acea acțiune în acel stat cu cea mai bună politică dată.

De ce spunem „cu politica dată?” Este pentru că nu implementăm o politică. În schimb, ne îmbunătățim tabelul Q pentru a alege întotdeauna cea mai bună acțiune.

Gândiți-vă la această masă Q ca la o „foaie de înșelăciune” a jocului. Datorită acestui fapt, știm pentru fiecare stare (fiecare linie din tabelul Q) care este cea mai bună acțiune de făcut, găsind cel mai mare scor în acea linie.

Da! Am rezolvat problema castelului! Dar așteptați … Cum calculăm valorile pentru fiecare element al tabelului Q?

Pentru a afla fiecare valoare a acestui tabel Q, vom folosi algoritmul de învățare Q.

Algoritm Q-learning: învățarea funcției de valoare a acțiunii

Funcția Valoare acțiune (sau „funcția Q”) are două intrări: „stare” și „acțiune”. Returnează recompensa viitoare așteptată a acțiunii în starea respectivă.

1612004949 218 Scufundandu va mai profund in invatarea prin intarire cu Q Learning

Putem vedea această funcție Q ca un cititor care parcurge tabelul Q pentru a găsi linia asociată stării noastre și coloana asociată acțiunii noastre. Returnează valoarea Q din celula potrivită. Aceasta este „recompensa viitoare așteptată”.

1612004950 353 Scufundandu va mai profund in invatarea prin intarire cu Q Learning

Dar, înainte de a explora mediul, tabelul Q oferă aceeași valoare fixă ​​arbitrară (de cele mai multe ori 0). Pe măsură ce explorăm mediul înconjurător, tabelul Q ne va oferi o aproximare din ce în ce mai bună actualizând iterativ Q (s, a) folosind ecuația Bellman (vezi mai jos!).

Procesul algoritmului Q-learning

1612004950 311 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
0*voKUaGu68 cDuncy
Pseudo-codul algoritmului de învățare Q

Pasul 1: inițializați valorile Q
Construim un tabel Q, cu m cols (m = numărul de acțiuni) și n rânduri (n = numărul de stări). Inițializăm valorile la 0.

1612004950 998 Scufundandu va mai profund in invatarea prin intarire cu Q Learning

Pasul 2: pentru viață (sau până când învățarea este oprită)
Pașii de la 3 la 5 se vor repeta până când vom ajunge la un număr maxim de episoade (specificat de utilizator) sau până când oprim manual antrenamentul.

Pasul 3: alegeți o acțiune
Alegeți o acțiune A în starea actuală s pe baza estimărilor curente ale valorii Q.

Dar … ce acțiune putem face la început, dacă fiecare valoare Q este egală cu zero?

Acolo a fost schimbul de explorare / exploatare despre care am vorbit ultimul articol va fi important.

Ideea este că la început, vom folosi strategia lacomă epsilon:

  • Specificăm o rată de explorare „epsilon”, pe care am stabilit-o la 1 la început. Aceasta este rata pașilor pe care îi vom face la întâmplare. La început, această rată trebuie să fie la cea mai mare valoare, deoarece nu știm nimic despre valorile din tabelul Q. Aceasta înseamnă că trebuie să facem o mulțime de explorări, alegându-ne în mod aleatoriu acțiunile.
  • Generăm un număr aleatoriu. Dacă acest număr> epsilon, atunci vom face „exploatare” (asta înseamnă că folosim ceea ce știm deja pentru a selecta cea mai bună acțiune la fiecare pas). Altfel, vom face explorare.
  • Ideea este că trebuie să avem un epsilon mare la începutul antrenamentului funcției Q. Apoi, reduceți-l progresiv pe măsură ce agentul devine mai încrezător în estimarea valorilor Q.
1612004951 959 Scufundandu va mai profund in invatarea prin intarire cu Q Learning

Pașii 4–5: Evaluează!
Faceți acțiunea A și observați starea de rezultat e și recompensă r. Acum actualizați funcția Q (s, a).

Luăm măsura A pe care l-am ales la pasul 3, iar apoi efectuarea acestei acțiuni ne returnează o nouă stare e și o recompensă r (așa cum am văzut în procesul de învățare a întăririi în primul articol).

Apoi, pentru a actualiza Q (s, a) folosim ecuația Bellman:

1612004951 844 Scufundandu va mai profund in invatarea prin intarire cu Q Learning

Ideea aici este să ne actualizăm Q-ul (starea, acțiunea) astfel:

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

Să luăm un exemplu:

1612004951 119 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
  • O brânză = +1
  • Două brânză = +2
  • Grămadă mare de brânză = +10 (sfârșitul episodului)
  • Dacă mănânci otravă pentru șobolani = -10 (sfârșitul episodului)

Pasul 1: Începem tabelul nostru Q

1612004951 75 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
Tabelul Q inițializat

Pasul 2: alegeți o acțiune
Din poziția inițială, puteți alege între a merge la dreapta sau în jos. Deoarece avem o rată mare de epsilon (deoarece nu știm încă nimic despre mediu), alegem aleatoriu. De exemplu … deplasați-vă la dreapta.

1612004952 599 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
1612004952 666 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
Ne deplasăm la întâmplare (de exemplu, dreapta)

Am găsit o bucată de brânză (+1) și acum putem actualiza valoarea Q de a fi la început și a merge corect. Facem acest lucru folosind ecuația Bellman.

Pașii 4-5: Actualizați funcția Q

1612004951 844 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
1612004952 943 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
  • Mai întâi, calculăm modificarea valorii Q ΔQ (start, dreapta)
  • Apoi adăugăm valoarea inițială Q la ΔQ (start, dreapta) înmulțit cu o rată de învățare.

Gândiți-vă la rata de învățare ca la o modalitate a cât de repede o rețea abandonează valoarea anterioară pentru nou. Dacă rata de învățare este 1, noua estimare va fi noua valoare Q.

1612004952 795 Scufundandu va mai profund in invatarea prin intarire cu Q Learning
Tabelul Q actualizat

Bun! Tocmai am actualizat prima noastră valoare Q. Acum trebuie să facem asta din nou și din nou până când învățarea este oprită.

Implementați un algoritm Q-learning

Am realizat un videoclip în care implementăm un agent Q-learning care învață să joace Taxi-v2 cu Numpy.

Acum, că știm cum funcționează, vom implementa algoritmul Q-learning pas cu pas. Fiecare parte a codului este explicată direct în caietul Jupyter de mai jos.

Îl puteți accesa în Repoare cursuri de învățare cu întărire profundă.

Sau îl puteți accesa direct din Google Colaboratory:

Î * Învățarea cu Lacul înghețat
colab.research.google.com

O recapitulare …

  • Q-learning este un algoritm de învățare a întăririi bazat pe valori care este utilizat pentru a găsi politica optimă de selecție a acțiunilor folosind funcția aq.
  • Acesta evaluează acțiunea pe care trebuie să o ia pe baza unei funcții acțiune-valoare care determină valoarea de a fi într-o anumită stare și de a lua o anumită acțiune în acea stare.
  • Scop: maximizați funcția de valoare Q (recompensa viitoare așteptată, dată fiind o stare și o acțiune).
  • Tabelul Q ne ajută să găsim cea mai bună acțiune pentru fiecare stat.
  • Pentru a maximiza recompensa așteptată, selectând cea mai bună dintre toate acțiunile posibile.
  • Q provin din calitate a unei anumite acțiuni într-o anumită stare.
  • Funcția Q (stare, acțiune) → returnează recompensa viitoare așteptată a acțiunii în acea stare.
  • Această funcție poate fi estimată folosind Q-learning, care actualizează iterativ Q (s, a) folosind ecuația Bellman
  • Înainte de a explora mediul: tabelul Q oferă aceeași valoare fixă ​​arbitrară → dar pe măsură ce explorăm mediul → Q ne oferă o aproximare din ce în ce mai bună.

Asta e tot! Nu uitați să implementați fiecare parte a codului de unul singur – este foarte important să încercați să modificați codul pe care vi l-am dat.

Încercați să adăugați epoci, să modificați rata de învățare și să utilizați un mediu mai dur (cum ar fi Frozen-lake cu plăci de 8×8). A se distra!

Data viitoare vom lucra la Deep Q-learning, una dintre cele mai mari descoperiri în Deep Reinforcement Learning în 2015. Și vom instrui un agent care joacă Doom și ucide dușmanii!

Scufundandu va mai profund in invatarea prin intarire cu Q Learning
Doom!

Dacă ți-a plăcut articolul meu, vă rugăm să faceți clic pe? mai jos de câte ori ți-a plăcut articolul deci alte persoane vor vedea asta aici pe Medium. Și nu uitați să mă urmați!

Dacă aveți gânduri, comentarii, întrebări, nu ezitați să comentați mai jos sau trimiteți-mi un e-mail: hello@simoninithomas.com, sau trimiteți-mi un tweet @ThomasSimonini.

1611508876 708 O introducere in invatarea prin intarire
1611508876 483 O introducere in invatarea prin intarire
1611508876 50 O introducere in invatarea prin intarire

Continuați să învățați, rămâneți minunat!

Curs de învățare cu întărire profundă cu Tensorflow? ️

? Silabus

? Vversiune ideo

Partea 1: O introducere în învățarea prin întărire

Partea 2: Scufundându-vă mai profund în învățarea prin întărire cu Q-Learning

Partea 3: O introducere în Deep Q-Learning: să jucăm Doom

Partea 3+: Îmbunătățiri în învățarea profundă Q: dublare DQN dublă, reluare a experienței prioritare și obiective Q fixe

Partea 4: O introducere la Gradienții de politici cu Doom și Cartpole

Partea 5: O introducere în metodele critice ale actorului avantaj: să jucăm Sonic the Hedgehog!

Partea 6: Optimizarea politicii proximale (PPO) cu Sonic the Hedgehog 2 și 3

Partea 7: Învățarea bazată pe curiozitate a ușurat partea I