Errefortzu bidezko ikaskuntzari sarrera. 4. zatia: Double DQN eta Dueling DQN.
3. zatian DQN algoritmoak nola funtzionatzen duen ikusi dugu, eta nola ikas dezakeen problema konplexuak ebazten. Zati honetan DQN baino hobeak diren bi algoritmo berri ikusiko ditugu: Double DQN eta Dueling DQN. Baina, aurretik, aipatu ez ditugun hainbat hitz deskribatuko ditugu.
Errefortzu bidezko ikaskuntza algoritmoak hainbat familiatan sailka daitezke. Familia horietako lehena algoritmoak esplizituki inguruneak nola funtzionatzen duen edo ez ikastearen araberakoa da. Erabakiak hartzerakoan algoritmoak ingurunearen dinamika (modelo bezala ere ezagutzen dena) erabiltzen badu, orduan algoritmoa modeloan oinarritutakoa da (model based), eta egiten ez badu modelo gabea (model free) dela esango dugu. Modeloan oinarritutako algoritmo batek estatu batetik bestera igarotzeko probabilitate guztiak ikasi behar ditu. Ingurune asko estokastikoak (probabilistikoak) direnez, algoritmoak trantsizio probabilistiko horien atzean dagoen eredua ikasi behar du (edo dinamika eskuragarri izatea hasieratik). Behin ikasita, informazio hori erabiliko du erabaki hobeak hartzeko. Adibidez, lehenengo ekintza hartzeak 0.9 probabilitatearekin A estatura eramango bazaitu eta -10 saria jasoko baduzu, edo B egoerara 0.1 probabilitatearekin eramango bazaitu eta +10 saria jasoko baduzu; baina bigarren ekintza hartzeak C egoerara eramango bazaitu 1.0 probabilitatearekin eta +5eko saria lortuko duzu, erabakirik onena bigarren ekintza hartzea izango da. Nahiz eta B egoeran amaitzeak sari handiena ekarriko duen, egoera hartan amaitzea ez da oso probablea. Beraz, oso garrantzitsua da batzuetan bai sariak eta baita modeloa (probabilitateak) erabiltzea zein ekintza jarraituko den erabakitzeko. Modeloan oinarritutako algoritmoei buruz gehiago arituko gara etorkizunean.
Algoritmoak sailkatzeko bigarren kategoria, algoritmoa politika-kanpokoa (off-policy) ala politika-barnekoa (on-policy) den bereiztean datza. Politika-kanpoko algoritmoek balio-funtzioa ikasten dute (value function) agenteak zein ekintza aukeratzen ari den axola gabe. Hau da, portaera politika (behavior policy) eta helburu politika (target policy) ezberdinak izan daitezke. Lehena, agenteak ingurunea esploratzeko eta datuak biltzeko erabiltzen duena da; bigarrena, berriz, agenteak ikasten eta hobetzen saiatzen dena. Horrek esan nahi du agenteak ingurunea ausaz esploratu dezakeela portaera politikarekin, eta datu horiek erabili ditzakeela etorkizunean sari oso handia lortzeko gai izango den helburu politika bat ikasteko. Politika barneko algoritmoetan, portaera politikak eta helburuak berberak izan behar dute. Hau da, helburu politika bat ikasteko, politika bera jarraituz jasotako datuetatik ikasi beharko du agenteak, ezin du beste politika desberdin bat izan.
Hemendik aurrera, algoritmoak bi familia hauetan sailkatuko ditugu. Adibidez, bai Q-learning eta baita DQN algoritmoa ere modelo gabeko eta politika kanpoko algoritmoak dira. Zati honetan ikusiko ditugun algoritmoak, Double DQN eta Dueling DQN, modelo gabeko eta politika kanpoko algoritmoak dira baita ere.
Double DQN [1]
DQN algoritmoak duen arazo nagusia benetako sariak gainestimatzen dituela da; hau da, ikasten ari diren Q-baloreek pentsatzen dute benetan lortuko dutena baino sari handiagoa lortuko dutela. Hori konpontzeko, Double DQN algoritmoaren [1] sortzaileek aldaketa txiki bat proposatzen dute: ekintzaren hautaketa eta ebaluazioa bi urrats desberdinetan bereiztea. DQN algoritmoaren Bellmanen ekuazioa erabili beharrean, algoritmo honek ekuazioa aldatzen du, eta hau bihurtzen da:
Lehenik eta behin, sare neuronal nagusiak θ erabakitzen du zein den ekintzarik onena aukerako ekintza guztien artean, eta, gero, sare helburuak θ’ ekintza hori ebaluatuko du, Q-balorea ezagutzeko. Aldaketa txiki horrek erakutsi du gainestimazioak murrizten dituela eta politika hobeak sortzen dituela.
Dueling DQN [2]
Algoritmo honek Q baloreak bi zatitan banatzen ditu: V(s) balio-funtzioa (value function) eta A(s, a) abantaila-funtzioa (advantage function).
V(s) balio-funtzioak esango digu s egoeratik zenbat sari lortuko dugun. Abantaila-funtzioak A(s, a) esango digu ekintza bakoitza beste ekintzak baina hobea edo okerragoa izango den, eta diferentzia zenbatekoa den. Ekintza bakoitzaren V balioa eta A abantaila konbinatuta, Q-balioak lortuko ditugu:
Dueling DQN algoritmoak proposatzen duena da sare neuronal berak bere azken geruza bi zatitan banatzea, bata s estatuaren balioa V(s) estimatzeko eta bestea ekintza bakoitzaren abantaila A(s, a) estimatzeko, eta azkenean bi zatiak bakar batean batuz elkartzea, honek Q-balioak itzul ditzan. Aldaketa honek kasu batzuetan laguntzen du, batzuetan ez delako beharrezkoa jakitea zehazki ekintza bakoitzak zenbateko balioa duen. Beraz, egoeraren balioa jakitea nahikoa izan daiteke askotan.
Hala ere, sare neuronala modu sinple horretan entrenatzea, azken geruzan balioa eta abantaila batuz, ez da posible. Q=V+A badugu, Q funtzioa emanda, ezin ditugu V eta A ezagutu; hau da, problema “identifikaezina” da. Hau argi eta garbi ikusteko, esate baterako, Q=20 dela esaten badizut, eta zuk asmatu behar baduzu zein bi zenbakiren batura den 20 (20 = V + A), aukera amaigabeak daudela ikusiko duzu. Hori konpontzeko, artikuluak honako hau proposatzen du: Q-balio handiena V balioarekin berdintzea, beraz abantaila funtzioaren baliorik altuena zero izatea derrigortuz, eta abantailaren beste balio guztiek balio negatiboa izatea horrenbestez. Aldaketa honek V-k zenbateko balioa duen esango digu, eta hori erabili ahalko dugu abantaila funtzioaren gainontzeko balioak asmatzeko. Honela entrenatuko dugu beraz algoritmoa:
Artikuluak beste aldaketa bat proposatzen du ekuazio honetan: abantailen maximoa erabili ordez, batazbestekoa erabiltzea (artikulua ikusi xehetasun guztiak ikusteko). Honela entrenatuko dugu beraz algoritmoa:
Kodea
TensorFlow erabiltzen duen kodea ikusi eta exekutatzeko egin klik esteka honetan (edo esteka honetan PyTorch erabiltzen duen kodea ikusteko).
Atari 2600 jokoetako bat ebatziko dugu OpenAI Gym erabiliz. Hautatutako jokoa Pong izan da, bistaratzeko eta ulertzeko oso sinplea, eta errefortzu bidezko ikaskuntza sakona erabiliz ebazteko joko errazenetariko bat delako. 3. zatiko kodea erabiliko dugu erreferentzi modura. Baina atal honetan sare neuronalaren arkitektura aldatuko dugu azken geruza bitan banatzeko, balio eta abantaila funtzioak (V eta A kodean) sortuz, eta gero biak elkartuko ditugu. Sarearen geruza motak ere aldatuko ditugu. Agenteak pixeletatik zuzenean ikasiko duenez, geruza dentsoak (dense edo fully connected) ez dira aukera onena. Hauen ordez geruza konboluzionalak (convolutional) erabiliko ditugu. Geruza bakoitzaren unitate kopurua eta parametroak Dueling DQN [2] artikuluaren berberak izango dira.
Ondoren, gradiente jaitsiera erabiliz entrenamendu urrats bat exekutatzen duen funtzioa aldatuko dugu. Entrenamendu urratsak Double DQN algoritmoa jarraituko du DQN arruntaren ordez. Honek esan nahi du Bellmanen ekuazioa zati honetan aipatutakoa izango dela. Ekuazio hau 3. zatian aipatutakoaren antzekoa da, baina zertxobait desberdina.
Entrenamendu begizta nagusia exekutatuko dugu aurreko zatien modu berean, datuak jasoz eta bufferrean gordez, gero erabiltzeko. Algoritmoa 1000 ibilbidetan entrenatu eta gero, ondorengo irudiko testua idatziko du. Itzulera (return) balioak jokalari bakoitzak zenbat gol sartu dituen adierazten du.
Episode: 0/1000, Epsilon: 0.999, Loss: 0.0296, Return: -21.00 Episode: 100/1000, Epsilon: 0.897, Loss: 0.0008, Return: -20.21 Episode: 200/1000, Epsilon: 0.787, Loss: 0.0031, Return: -19.93 Episode: 300/1000, Epsilon: 0.655, Loss: 0.0025, Return: -18.96 Episode: 400/1000, Epsilon: 0.496, Loss: 0.0031, Return: -17.66 Episode: 500/1000, Epsilon: 0.297, Loss: 0.0026, Return: -15.86 Episode: 600/1000, Epsilon: 0.010, Loss: 0.0088, Return: -9.10 Episode: 700/1000, Epsilon: 0.010, Loss: 0.0057, Return: 5.80 Episode: 800/1000, Epsilon: 0.010, Loss: 0.0011, Return: 12.86 Episode: 900/1000, Epsilon: 0.010, Loss: 0.0008, Return: 15.87 Episode: 1000/1000, Epsilon: 0.010, Loss: 0.0011, Return: 18.98
TensorFlow erabiltzen duen kodea ikusi eta exekutatzeko egin klik esteka honetan (edo esteka honetan PyTorch erabiltze duen kodea ikusteko).
Erreferentziak:
Sutton, R. S., & Barto, A. G. (2018). Reinforcement learning: An introduction. MIT press.
Errefortzu bidezko ikaskuntzari sarrera, serie osoa:
- zatia: beso anitzeko bidelapurraren problema
- zatia: Q-Learning
- zatia: Q-learning sare neuronalekin, DQN algoritmoa
- zatia: Double DQN eta Dueling DQN
Nire GitHub biltegia, ohiko errefortzu bidezko ikaskuntza sakoneko algoritmoekin (garatze prozesuan): https://github.com/markelsanz14/independent-rl-agents