Lucrarea nr. 4
Reinforcement Learning




Procesul de invatare, in general, este un proces in urma caruia agentul in cauza (cel care invata) isi imbunatateste capacitatea de actiune astfel incat, in timpul unor solicitari ulterioare, agentul intreprinde actiuni cu eficienta crescuta. Actiunile agentului au loc in cadrul unui mediu, iar in functie de interactiunea dintre agent si mediu se disting urmatoarele tipuri de invatare:

Agentul care se bazeaza pe reinforcement learning invata ce sa faca (ce actiuni sa efectueze in anumite situatii) astfel incat sa maximizeze un semnal numeric numit
recompensa (reward). Spre deosebire de majoritatea formelor de invatare in care agentului i se spune dinainte ce actiuni sa intreprinda, in cazul invatarii prin reinforcement agentul trebuie sa descopere singur care actiuni duc la obtinerea unei recompense mai mari. Cel mai interesant este faptul ca actiunile intreprinse pot afecta nu numai recompensa obtinuta imediat la pasul urmator, dar si situatia urmatoare, si in consecinta toate recompensele viitoare.

Un sistem bazat pe reinforcement learning este format din urmatoarele elemente:

In general, orice problema de invatare prin interactiune si orientata spre un anumit scop(tinta) se poate reduce la trei semnale care se transmit intre agent si mediul inconjurator: actiunile (alegerile facute de agent/deciziile luate de agent), starile (pe care se bazeaza agentul in luarea deciziilor), recompensele (definesc scopul urmarit de agent).

Reinforcement Learning Framework

Pentru a exemplifica abordarea unei probleme utilizand reinforcement learning si estimarea unei functii de evaluare, vom contrui un tabel de numere, cate unul pentru fiecare stare posibila. Fiecare numar va estima probabilitatea de atingere a tintei pornind din acea stare. Intreg tabelul reprezinta functia de evaluare invatata. Pe baza acestei functii se defineste calitatea unei stari in urmatorul mod: o stare A este mai buna decat o stare B daca estimarea curenta a probabilitatii de atingere a tintei din starea A este mai mare decat cea din starea B. In general, valorile initiale din tabel se seteaza arbitrar (desi in functie de natura aplicatiei se pot utiliza si initilizari bazate pe anumite informatii specifice).

Pentru procesul de invatare, agentul va fi lasat sa execute o serie de actiuni conforme cu politica sa. Fiecare selectie a actiunii curente se va baza pe starea curenta si pe valoarea asociata din tabel. In general, actiunile se selecteaza pe baza unei strategii greedy, adica se va selecta acea actiune care ne duce in starea cu valoarea maxima a estimatorului (acest fapt face insa posibila uneori blocarea functiei de evaluare intr-un punct de maxim local, lucru care se poate contracara prin alegerea din cand in cand a unor actiuni de explorare, care se aleg in mod arbitrar dintre actiunile posibile la momentul respectiv).

Dupa fiecare actiune, agentul va ajusta valorile din tabel, astfel incat ele sa tinda spre valorile starilor sale urmatoare cele mai probabile, pe baza formulei:

V(s) <- V(s) + alfa *[V(s') - V(s)]

unde V este functia de evaluare, s reprezinta starea curenta, s' este starea urmatoare iar alfa este rata de invatare. Aceasta formula pentru ajustarea functiei de evaluare este un exemplu de invatare prin diferenta temporala (temporal difference).

Aceasta formula suporta usoare variatii in functie de metoda de abordare utilizata: programare dinamica, metode Monte-Carlo si Temporal Difference. In lucrarea de fata se va studia cazul cel mai general, TD(lambda). Pentru cazul TD(0), formula va fi:

V(s) <- V(s) + alfa *[r' + gama * V(s') - V(s)]

unde r' este recompensa primita in starea urmatoare, iar gama este rata de descrestere (aceasta face ca transmiterea informatiei de la starea tinta inspre o stare anterioara sa se degradeze pe masura ce distanta - exprimata in numar de stari - dintre cele doua stari este mai mare).

In cazul TD(lambda), se foloseste pentru ajustare nu numai valoarea starii urmatoare, ci a unei serii intregi de stari urmatoare. Se memoreaza in acest sens intr-un alt tabel niste valori numite eligibility traces, care se noteaza e(s) si se bazeaza pe urmatoarea functie:

gama * lambda * e(s), daca s <> s(t) e'(s) = gama * lambda * e(s) + 1, daca s == s(t)
unde e(s) este valoarea asociata starii s la momentul de timp t, e'(s) este valoarea asociata starii s la momentul de timp t+1, iar lambda este rata de degradare a valorilor din acest tabel.
 
 
 
 

In continuare se prezinta varainta online a algoritmului TD(lambda):

Tema: 1