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.

Î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.

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

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

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:
Ceea ce este echivalent cu:

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.

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:

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.

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.

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.

Să luăm un exemplu:

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).

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ă.

Î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ă.
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.

Î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.
Î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.

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).

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.

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: [email protected], sau trimiteți-mi un tweet @ThomasSimonini.



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