de Thomas Simonini

Învățarea prin întărire este un tip important de învățare automată în care un agent învață cum să se comporte într-un mediu efectuând acțiuni și văzând rezultatele.

În ultimii ani, am văzut multe îmbunătățiri în acest domeniu fascinant de cercetare. Exemplele includ DeepMind și arhitectura de învățare Deep Q în 2014, învingându-l pe campionul jocului Go cu AlphaGo în 2016, OpenAI și PPO în 2017, printre altele.

În această serie de articole, ne vom concentra pe învățarea diferitelor arhitecturi utilizate astăzi pentru rezolvarea problemelor de învățare cu întărire. Acestea vor include Q-learning, Deep Q-learning, Gradients de politici, actor critic și PPO.

În acest prim articol, veți afla:

  • Ce este învățarea prin întărire și cum sunt recompensele ideea centrală
  • Cele trei abordări ale învățării prin întărire
  • Ce înseamnă „Adânc” în Învățarea de întărire profundă

Este cu adevărat important să stăpânești aceste elemente înainte de a te scufunda în implementarea agenților de învățare profundă.

Ideea din spatele învățării prin întărire este că un agent va învăța din mediu interacționând cu acesta și primind recompense pentru efectuarea acțiunilor.

O introducere in invatarea prin intarire

Învățarea din interacțiunea cu mediul provine din experiențele noastre naturale. Imaginați-vă că sunteți un copil într-o cameră de zi. Vezi un șemineu și te apropii de el.

1611508872 461 O introducere in invatarea prin intarire

E cald, e pozitiv, te simți bine (Recompensă pozitivă +1). Înțelegi că focul este un lucru pozitiv.

1611508872 840 O introducere in invatarea prin intarire

Dar apoi încerci să atingi focul. Vai! Îți arde mâna (Recompensă negativă -1). Tocmai ați înțeles că focul este pozitiv când sunteți la o distanță suficientă, deoarece produce căldură. Dar apropie-te prea mult de el și vei fi ars.

Așa învață oamenii, prin interacțiune. Învățarea prin întărire este doar o abordare computațională a învățării din acțiune.

Procesul de învățare a întăririi

1611508872 361 O introducere in invatarea prin intarire

Să ne imaginăm un agent care învață să joace Super Mario Bros ca un exemplu de lucru. Procesul Reinforcement Learning (RL) poate fi modelat ca o buclă care funcționează astfel:

  • Agentul nostru primește starea S0 de la Mediu inconjurator (În cazul nostru primim primul cadru al jocului nostru (stare) de la Super Mario Bros (mediu))
  • Pe baza asta starea S0, agentul ia o acțiunea A0 (agentul nostru se va deplasa la dreapta)
  • Tranzițiile mediului în a nou starea S1 (cadru nou)
  • Mediul dă ceva recompensă R1 către agent (nu este mort: +1)

Această buclă RL produce o secvență de stare, acțiune și recompensă.

Scopul agentului este de a maximiza recompensa cumulată așteptată.

Ideea centrală a ipotezei recompenselor

De ce este obiectivul agentului de a maximiza recompensa cumulată așteptată?

Ei bine, Învățarea prin întărire se bazează pe ideea ipotezei recompensei. Toate obiectivele pot fi descrise prin maximizarea recompensei cumulate așteptate.

De aceea, în Reinforcement Learning, pentru a avea cel mai bun comportament, trebuie să maximizăm recompensa cumulativă așteptată.

Recompensa cumulativă la fiecare pas t poate fi scrisă ca:

0*ylz4lplMffGQR g3

Ceea ce este echivalent cu:

1611508873 731 O introducere in invatarea prin intarire
Mulțumită Pierre-Luc Bacon pentru corectare

Cu toate acestea, în realitate, nu putem adăuga doar recompensele așa. Recompensele care vin mai devreme (la începutul jocului) sunt mai probabil să se întâmple, deoarece sunt mai previzibile decât recompensa viitoare pe termen lung.

1611508873 456 O introducere in invatarea prin intarire

Să presupunem că agentul tău este acest șoarece mic și că adversarul tău este pisica. Scopul tău este să mănânci cantitatea maximă de brânză înainte de a fi mâncată de pisică.

După cum putem vedea în diagramă, este mai probabil să mâncăm brânza lângă noi decât brânza aproape de pisică (cu cât suntem mai aproape de pisică, cu atât este mai periculoasă).

În consecință, recompensa de lângă pisică, chiar dacă este mai mare (mai multă brânză), va fi redusă. Nu suntem foarte siguri că vom putea să-l mâncăm.

Pentru a reduce recompensele, procedăm astfel:

Definim o rată de actualizare numită gamma. Trebuie să fie între 0 și 1.

  • Cu cât gama este mai mare, cu atât reducerea este mai mică. Aceasta înseamnă că agentului de învățare îi pasă mai mult de recompensa pe termen lung.
  • Pe de altă parte, cu cât gama este mai mică, cu atât reducerea este mai mare. Aceasta înseamnă că agentului nostru îi pasă mai mult de recompensa pe termen scurt (cea mai apropiată brânză).

Recompensele noastre cumulate cumulate așteptate sunt:

1611508873 772 O introducere in invatarea prin intarire
Mulțumită Pierre-Luc Bacon pentru corectare

Pentru a fi simplu, fiecare recompensă va fi redusă cu gamma la exponentul pasului de timp. Pe măsură ce pasul de timp crește, pisica se apropie de noi, astfel încât recompensa viitoare este din ce în ce mai puțin probabil să se întâmple.

Sarcini episodice sau continue

O sarcină este o instanță a unei probleme de învățare prin întărire. Putem avea două tipuri de sarcini: episodice și continue.

Sarcină episodică

În acest caz, avem un punct de plecare și un punct final (o stare terminală). Aceasta creează un episod: o listă de state, acțiuni, recompense și state noi.

De exemplu, gândiți-vă la Super Mario Bros, un episod care începe la lansarea unui nou Mario și se termină: când sunteți ucis sau ajungeți la sfârșitul nivelului.

1611508874 573 O introducere in invatarea prin intarire
Începutul unui nou episod

Sarcini continue

Acestea sunt sarcini care continuă pentru totdeauna (fără stare terminală). În acest caz, agentul trebuie să învețe cum să aleagă cele mai bune acțiuni și să interacționeze simultan cu mediul.

De exemplu, un agent care face tranzacționare automată a acțiunilor. Pentru această sarcină, nu există un punct de plecare și o stare terminală. Agentul continuă să alerge până când decidem să-l oprim.

O introducere in invatarea prin intarire

Monte Carlo vs TD Metode de învățare

Avem două moduri de învățare:

  • Colectarea recompenselor la sfârșitul episodului și apoi calculând recompensă viitoare maximă așteptată: Abordarea Monte Carlo
  • Estima recompensele la fiecare pas: Învățarea diferenței temporale

Monte Carlo

Când episodul se încheie (agentul ajunge la o „stare terminală”), agentul se uită la recompensa cumulativă totală pentru a vedea cât de bine s-a descurcat. În abordarea Monte Carlo, recompensele sunt doar primit la finalul jocului.

Apoi, începem un nou joc cu cunoștințe suplimentare. Agentul ia decizii mai bune cu fiecare iterație.

1611508874 475 O introducere in invatarea prin intarire

Să luăm un exemplu:

1611508873 456 O introducere in invatarea prin intarire

Dacă luăm mediul labirint:

  • Începem întotdeauna de la același punct de plecare.
  • Încheiem episodul dacă pisica ne mănâncă sau dacă ne mișcăm> 20 de pași.
  • La sfârșitul episodului, avem o listă de state, acțiuni, recompense și state noi.
  • Agentul va însuma recompensele totale Gt (pentru a vedea cât de bine a făcut-o).
  • Apoi va actualiza V (st) pe baza formulei de mai sus.
  • Apoi începeți un nou joc cu aceste noi cunoștințe.

Rulând din ce în ce mai multe episoade, agentul va învăța să joace din ce în ce mai bine.

Învățarea diferenței temporale: învățare la fiecare pas

Învățarea TD, pe de altă parte, nu va aștepta până la sfârșitul episodului pentru actualizare estimarea maximă a recompensei viitoare așteptate: își va actualiza estimarea valorii V pentru stările non-terminale St care apar la acea experiență.

Această metodă se numește TD (0) sau un pas TD (actualizați funcția de valoare după orice pas individual).

1611508874 11 O introducere in invatarea prin intarire

Metode TD așteptați doar până la următoarea etapă pentru a actualiza estimările valorii. La ora t + 1 ei imediat formează o țintă TD folosind recompensa observată Rt + 1 și estimarea actuală V (St + 1).

Ținta TD este o estimare: de fapt actualizați estimarea anterioară V (St) actualizându-l către o țintă cu un singur pas.

Explorarea / exploatarea se schimbă

Înainte de a analiza diferitele strategii de rezolvare a problemelor de învățare prin întărire, trebuie să abordăm încă un subiect foarte important: compromisul de explorare / exploatare.

  • Explorarea este găsirea mai multor informații despre mediu.
  • Exploatarea este exploatarea informațiilor cunoscute pentru a maximiza recompensa.

Amintiți-vă, obiectivul agentului nostru RL este de a maximiza recompensa cumulativă așteptată. Cu toate acestea, putem cădea într-o capcană comună.

1611508875 760 O introducere in invatarea prin intarire

În acest joc, mouse-ul nostru poate avea o cantitate infinită de brânză mică (+1 fiecare). Dar în partea de sus a labirintului există o sumă gigantică de brânză (+1000).

Cu toate acestea, dacă ne concentrăm doar pe recompensă, agentul nostru nu va atinge niciodată suma gigantică de brânză. În schimb, va exploata doar cea mai apropiată sursă de recompense, chiar dacă această sursă este mică (exploatare).

Dar dacă agentul nostru face un pic de explorare, poate găsi marea recompensă.

Aceasta este ceea ce numim compensarea explorării / exploatării. Trebuie să definim o regulă care să ajute la gestionarea acestui compromis. Vom vedea în viitoarele articole diferite moduri de abordare.

Trei abordări ale învățării prin întărire

Acum că am definit principalele elemente ale învățării prin întărire, să trecem la cele trei abordări pentru rezolvarea unei probleme de învățare prin întărire. Acestea sunt bazate pe valori, politici și model.

Bazat pe valoare

În RL bazat pe valoare, obiectivul este optimizarea funcției de valoare V (s).

Funcția de valoare este o funcție care ne spune recompensa maximă viitoare așteptată de agent pe fiecare stat.

Valoarea fiecărei stări este suma totală a recompensei pe care un agent se poate aștepta să o acumuleze în viitor, începând cu starea respectivă.

0*kvtRAhBZO h77Iw1

Agentul va utiliza această funcție de valoare pentru a selecta ce stare să aleagă la fiecare pas. Agentul ia statul cu cea mai mare valoare.

1611508875 823 O introducere in invatarea prin intarire

În exemplul de labirint, la fiecare pas vom lua cea mai mare valoare: -7, apoi -6, apoi -5 (și așa mai departe) pentru a atinge obiectivul.

Bazat pe politici

În RL bazat pe politici, dorim să optimizăm direct funcția de politică π (s) fără a utiliza o funcție de valoare.

Politica este cea care definește comportamentul agentului la un moment dat.

0*8B4cAhvM K4y9a5U
actiune = politica (stat)

Învățăm o funcție de politică. Aceasta ne permite să mapăm fiecare stare la cea mai bună acțiune corespunzătoare.

Avem două tipuri de politici:

  • Determinist: o politică într-un stat dat va returna întotdeauna aceeași acțiune.
  • Stochastic: generează o probabilitate de distribuție peste acțiuni.
0*DNiQGeUl1FKunRbb
1611508876 589 O introducere in invatarea prin intarire

După cum putem vedea aici, politica indică în mod direct cea mai bună acțiune de întreprins pentru fiecare etapă.

Bazat pe model

În modelul RL, modelăm mediul. Aceasta înseamnă că creăm un model al comportamentului mediului.

Problema este că fiecare mediu va avea nevoie de un model diferit de reprezentare. De aceea, nu vom vorbi despre acest tip de învățare prin întărire în articolele viitoare.

Vă prezentăm Deep Reinforcement Learning

Deep Reinforcement Learning introduce rețele neuronale profunde pentru a rezolva problemele de Învățare cu întărire – de unde și denumirea de „deep”.

De exemplu, în articolul următor vom lucra la Q-Learning (clasic Reinforcement Learning) și Deep Q-Learning.

Veți vedea că diferența este că, în prima abordare, folosim un algoritm tradițional pentru a crea un tabel Q care ne ajută să găsim ce acțiune să luăm pentru fiecare stare.

În cea de-a doua abordare, vom folosi o rețea neuronală (pentru a aproxima recompensa pe baza stării: valoarea q).

1611508876 297 O introducere in invatarea prin intarire
Schema inspirată de caietul de învățare Q de la Udacity

Felicitări! În acest articol erau multe informații. Asigurați-vă că înțelegeți cu adevărat materialul înainte de a continua. Este important să stăpânești aceste elemente înainte de a intra în partea distractivă: crearea AI care joacă jocuri video.

Important: acest articol este prima 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, verificați programa.

Data viitoare vom lucra la un agent Q-learning care învață să joace jocul Frozen Lake.

O introducere in invatarea prin intarire
Lac inghetat

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 acest lucru 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

Noroc!

Curs de învățare cu întărire profundă:

Facem un versiunea video a Cursului de învățare Deep Reinforcement cu Tensorflow ? unde ne concentrăm pe partea de implementare cu tensorflow here.

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

Partea 2: Scufundarea mai profundă în învățarea prin întărire cu Q-Learning

Partea 3: 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: Introducere în 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