Reinforcement Learning
Reinforcement Learning, odnosno učenje potkrepljivanjem, predstavlja oblast računarske inteligencije u kojoj agent uči kroz interakciju sa okruženjem. Umesto da dobija gotove tačne odgovore, agent pokušava, greši, dobija nagrade ili kazne i postepeno razvija bolju strategiju ponašanja.
Osnovna ideja je veoma bliska načinu na koji učimo iz iskustva. Kada neka odluka donese dobar ishod, veća je verovatnoća da ćemo je ponoviti. Kada odluka dovede do lošeg ishoda, sistem treba da nauči da je izbegava ili da je koristi samo u drugačijim okolnostima.
U Reinforcement Learning sistemu imamo agenta i okruženje. Agent je onaj koji donosi odluke. Okruženje je svet u kome agent deluje. Agent posmatra stanje okruženja, bira akciju, dobija novu situaciju i prima nagradu kao povratnu informaciju.
Stanje opisuje ono što je agentu poznato u određenom trenutku. U jednostavnoj igri to može biti položaj na tabli. U robotici to mogu biti senzorski podaci. U sistemu preporuka to može biti trenutno ponašanje korisnika. U infrastrukturi to može biti opterećenje sistema, status servisa ili raspoloživi resursi.
Akcija je izbor koji agent pravi u datom stanju. Akcija može biti pomeranje levo ili desno, promena brzine, izbor rute, podešavanje parametra, preporuka sledećeg sadržaja ili donošenje neke operativne odluke u sistemu.
Nagrada je signal koji agentu govori da li je njegova akcija bila korisna. Nagrada može biti pozitivna, negativna ili neutralna. Ona ne mora uvek odmah da otkrije da li je odluka bila dobra na duži rok, zbog čega Reinforcement Learning često mora da razmišlja kroz nizove odluka.
Upravo to razlikuje Reinforcement Learning od mnogih drugih pristupa mašinskog učenja. Kod nadgledanog učenja model najčešće dobija ulaze i tačne oznake. Kod učenja potkrepljivanjem agent ne dobija uvek tačan odgovor, već uči iz posledica svojih akcija.
Agent mora da razvije politiku. Politika je pravilo ponašanja koje određuje koju akciju agent bira u određenom stanju. Politika može biti jednostavna tabela, skup pravila, verovatnosna raspodela ili neuralna mreža koja predlaže akcije.
Cilj agenta nije samo da dobije najveću trenutnu nagradu, već da maksimizuje ukupnu očekivanu nagradu kroz vreme. To znači da agent mora da razume razliku između kratkoročno privlačne odluke i dugoročno korisne strategije.
Na primer, u igri agent može odmah osvojiti mali broj poena, ali time izgubiti bolju priliku kasnije. U robotici robot može izabrati brzu akciju koja kratkoročno deluje dobro, ali povećava rizik od sudara. Zato Reinforcement Learning stalno povezuje sadašnje odluke sa budućim posledicama.
Jedan od ključnih pojmova je vrednosna funkcija. Vrednosna funkcija procenjuje koliko je neko stanje dobro za agenta. Ako agent zna da je određeno stanje povezano sa dobrim budućim ishodima, može ga smatrati vrednijim od stanja koje vodi ka lošim posledicama.
Pored vrednosti stanja, često koristimo i akcionu vrednost. Akciona vrednost procenjuje koliko je dobra određena akcija u određenom stanju. Ovaj pojam je posebno važan za Q-learning, gde agent uči Q-vrednosti za parove stanje-akcija.
Još jedan važan pojam je diskontovana nagrada. Buduće nagrade često računamo sa manjom težinom od trenutnih nagrada. Diskontni faktor određuje koliko agent obraća pažnju na budućnost. Ako je faktor visok, agent više razmišlja dugoročno. Ako je nizak, agent je kratkoročniji.
Reinforcement Learning se formalno često opisuje kroz Markovljev proces odlučivanja, poznat kao MDP. U tom okviru imamo skup stanja, skup akcija, pravila prelaza između stanja i funkciju nagrade. Markovljevo svojstvo znači da je za odluku dovoljno znati trenutno stanje, a ne celu istoriju.
Bellmanova jednačina je jedan od centralnih matematičkih temelja Reinforcement Learninga. Ona povezuje vrednost trenutnog stanja sa nagradom koju agent dobija sada i vrednošću budućih stanja. Na taj način sadašnjost i budućnost postaju deo iste procene.
Učenje potkrepljivanjem stalno se suočava sa ravnotežom između istraživanja i eksploatacije. Istraživanje znači da agent pokušava nove akcije kako bi otkrio možda bolja rešenja. Eksploatacija znači da koristi ono što već zna kao dobro.
Ako agent samo istražuje, može dugo lutati bez stabilnog napretka. Ako samo eksploatiše rano naučeno ponašanje, može se zaglaviti u slaboj strategiji. Zato dobar RL sistem mora imati način da ponekad proba novo, ali i da koristi stečeno iskustvo.
Jedan jednostavan način za tu ravnotežu je epsilon-greedy strategija. Agent najčešće bira akciju za koju trenutno misli da je najbolja, ali povremeno nasumično izabere neku drugu akciju. Tako zadržava mogućnost otkrivanja boljih puteva.
Temporal Difference Learning omogućava agentu da uči iz razlike između onoga što je očekivao i onoga što se zaista dogodilo. Agent ne mora da čeka kraj cele epizode, već može da ažurira svoje procene korak po korak.
Monte Carlo metode, sa druge strane, uče iz završenih epizoda. Agent posmatra ukupan ishod jednog toka iskustva i zatim koristi taj ishod za poboljšanje procena. Ove metode su intuitivne, ali mogu zahtevati mnogo epizoda da bi procene postale stabilne.
Dynamic Programming se koristi kada poznajemo model okruženja, odnosno kada znamo kako akcije menjaju stanja i kakve nagrade možemo očekivati. U praksi model često ne poznajemo potpuno, pa su posebno važni algoritmi koji mogu učiti iz iskustva.
Q-learning je jedan od najpoznatijih model-free algoritama. On omogućava agentu da uči optimalnu akcionu vrednost bez potpunog modela okruženja. Agent postepeno popunjava znanje o tome koje akcije su dobre u kojim stanjima.
SARSA je sličan pristup, ali uči vrednost akcija na osnovu stvarnog ponašanja politike koju agent trenutno prati. Razlika između SARSA i Q-learninga je važna jer utiče na to kako agent procenjuje rizik, istraživanje i realno ponašanje tokom učenja.
Kada su prostori stanja i akcija mali, vrednosti se mogu čuvati u tabelama. Međutim, realni problemi često imaju ogroman broj mogućih stanja. Tada tabelarni pristup više nije dovoljan i potrebne su funkcijske aproksimacije.
Deep Reinforcement Learning povezuje Reinforcement Learning sa dubokim neuralnim mrežama. Neuralna mreža može aproksimirati vrednosnu funkciju, akcionu vrednost ili samu politiku. Tako agent može raditi u mnogo složenijim okruženjima.
Deep Q-Network, odnosno DQN, koristi neuralnu mrežu za procenu Q-vrednosti. Umesto tabele sa vrednostima za svako stanje i akciju, mreža uči da na osnovu ulaza proceni koje akcije imaju najveću vrednost.
DQN uvodi važne tehnike za stabilnije učenje. Jedna od njih je Experience Replay. Agent čuva ranija iskustva u memoriji i tokom treninga nasumično uzima uzorke iz te memorije. Time se smanjuje zavisnost između uzastopnih iskustava i učenje postaje stabilnije.
Druga važna tehnika je Target Network. Umesto da se ista mreža neprestano koristi i za procenu i za ciljeve učenja, uvodi se odvojena mreža koja se povremeno ažurira. To pomaže da se smanje oscilacije i nestabilnost.
Policy Gradient metode uče politiku direktno. Umesto da prvo procenjuju vrednosti svih akcija, one podešavaju parametre politike tako da akcije koje vode ka boljim ishodima postanu verovatnije.
Actor-Critic pristupi kombinuju dve ideje. Actor bira akcije, odnosno predstavlja politiku. Critic procenjuje koliko su te akcije dobre, odnosno uči vrednosnu funkciju. Zajedno omogućavaju fleksibilnije i često stabilnije učenje.
Oblikovanje nagrade je jedna od najosetljivijih oblasti u Reinforcement Learningu. Ako nagradu definišemo pogrešno, agent može naučiti ponašanje koje formalno povećava nagradu, ali ne rešava stvarni problem na način koji smo želeli.
To je poznat rizik kod RL sistema. Agent ne razume nameru autora sistema kao čovek, već optimizuje signal koji mu je dat. Zato je dizajn nagrade etički, tehnički i praktično veoma važan.
Evaluacija RL agenta nije uvek jednostavna. Potrebno je pratiti prosečnu nagradu, stabilnost ponašanja, broj epizoda do uspeha, otpornost na promene okruženja i sposobnost generalizacije na nove situacije.
Reinforcement Learning se koristi u igrama, robotici, autonomnim sistemima, planiranju, upravljanju resursima, optimizaciji, finansijskim simulacijama, preporukama, kontroli procesa i različitim oblicima automatizovanog odlučivanja.
U robotici agent može učiti kako da se kreće, hvata predmete ili balansira. U igrama može učiti strategije. U infrastrukturi može pomagati u raspodeli resursa, skaliranju, rutiranju ili optimizaciji performansi.
Ipak, RL nije univerzalno rešenje. Često zahteva mnogo pokušaja, dobro simulaciono okruženje, pažljivo podešene nagrade, stabilne algoritme i ozbiljnu evaluaciju. U stvarnom svetu pogrešne akcije mogu biti skupe, opasne ili neprihvatljive.
Zato se Reinforcement Learning često prvo razvija i testira u simulacijama. Simulacija omogućava agentu da uči kroz veliki broj pokušaja bez rizika za realni sistem. Tek kada ponašanje postane dovoljno stabilno, može se razmatrati oprezna primena.
Python je veoma pogodan za učenje i eksperimente u ovoj oblasti. Jednostavni primeri kao što su Grid World, CartPole ili mali simulacioni problemi omogućavaju da se jasno vidi kako agent uči iz stanja, akcija i nagrada.
Biblioteke i okruženja kao što su simulacioni alati, RL biblioteke i deep learning framework-i mogu mnogo pomoći, ali najvažnije je razumeti osnovni tok: agent posmatra stanje, bira akciju, dobija nagradu, ažurira znanje i ponavlja proces.
Ovaj tutorijal je zamišljen kao postepen i praktičan ulazak u Reinforcement Learning. Ne polazimo od pretpostavke da čitalac već poznaje teoriju odlučivanja, već gradimo razumevanje od osnovnih pojmova ka konkretnim algoritmima i primerima.
Prvi deo praktikuma uvodi agenta, okruženje, stanje, akciju, nagradu, epizodu, politiku, vrednosne funkcije, diskontovanje, istraživanje, eksploataciju, Markovljeve procese odlučivanja, Bellmanovu jednačinu i osnovne metode učenja.
Drugi deo praktikuma uvodi SARSA, Q-learning, model-based i model-free pristupe, Deep Reinforcement Learning, DQN, Experience Replay, Target Network, Policy Gradient metode, Actor-Critic pristupe, podešavanje hiperparametara i evaluaciju agenta.
Nakon toga prelazimo na praktičan rad u Pythonu. Kroz jednostavne simulacije i mini projekat povezujemo teoriju sa kodom: definišemo okruženje, stanja, akcije, nagrade, politiku, trening petlju, metrike i interpretaciju ponašanja agenta.
Mini projekat na kraju povezuje sve oblasti u jedan praktičan tok rada: izbor problema, definisanje okruženja, implementaciju agenta, izbor algoritma, treniranje, praćenje nagrade, evaluaciju politike i razumevanje naučenog ponašanja.
Reinforcement Learning je put od pokušaja i grešaka do inteligentnog odlučivanja. Kada razumemo taj put, možemo graditi sisteme koji ne samo da prepoznaju obrasce, već uče kako da deluju, planiraju i prilagođavaju se promenljivom okruženju.