Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
Učenie s časovým rozdielom, Q-learning a SARSA na chôdzi po útese, ε-pažravý prieskum, on-policy a off-policy, DQN s pamäťou zážitkov a cieľovou sieťou na kyvadle na vozíku napísané od nuly, a prečo sa učenie DQN tak ľahko rozpadne.
Séria Základy AI Diel 48 z 52
- Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
- Stručná história umelej inteligencie: od Turinga po jazykové modely
- Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
- Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
- Funkcie a zobrazenia: prečo je každý model v AI funkcia
- Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
- Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
- Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
- Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
- Gradientný zostup: ako sa model učí
- Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
- Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
- Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
- Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
- Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
- Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
- Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
- Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
- Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
- Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
- Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
- Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
- Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
- Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
- Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
- Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
- Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
- Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
- Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
- Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
- Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
- Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
- Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
- Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
- Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
- Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
- Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
- Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
- Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
- Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
- Prompty, kontext a RAG: ako modelu dať správne informácie
- Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
- Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
- Difúzne modely: ako sa z čistého šumu stane obrázok
- Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
- Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
- Policy gradient a PPO: učenie priamo stratégie
- Ako funguje AI agent: jazykový model v slučke s nástrojmi
- Programovanie s AI agentmi: zadanie, testy a kontrola
- Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť
Celá osnova série Hotovo: 52 z 83 tém
- Ako sa agent učí hodnoty akcií bez znalosti pravidiel sveta.
- Prečo Q-learning a SARSA na útese volia inú cestu.
- Čo robia pamäť zážitkov a cieľová sieť v DQN a prečo je DQN vrtkavé.
Čo sa hodí vedieť vopred: Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice, Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
V minulom diele sme najlepšiu stratégiu vypočítali presne, pretože sme poznali pravidlá sveta: kam ktorá akcia s akou pravdepodobnosťou vedie a čo za ňu agent dostane. Skutočný agent ich nepozná. Robot nevie, ako presne sa mu prešmykne koleso, program hrajúci hru nepozná vnútro hry. Musí skúšať a učiť sa z toho, čo sa stalo. V tomto diele napíšeme dva takéto algoritmy: Q-learning s tabuľkou a DQN, kde tabuľku nahradí neurónová sieť — presne tá kombinácia, s ktorou DeepMind v roku 2015 naučil počítač hrať desiatky hier na Atari z obrazovky.
Nadväzuje na diely Markovove rozhodovacie procesy a Neurónová sieť od nuly.
1. Učenie zo skúsenosti
Definícia — učenie s časovým rozdielom (TD)
Nech (S, A, P, R, γ) je MDP (značenie z minulého dielu), π stratégia, podľa ktorej agent koná, V : S → ℝ doterajší odhad hodnotovej funkcie Vπ a α ∈ (0, 1] rýchlosť učenia. Nech (s, a, r, s′) ∈ S × A × ℝ × S je jeden skutočne prežitý prechod: agent bol v stave s, zvolil akciu a, dostal odmenu r = R(s, a, s′) a dostal sa do s′. Definujeme
- TD cieľ y = r + γ V(s′) (ak je s′ koncový, V(s′) = 0, teda y = r);
- TD chybu δ = y − V(s);
- TD krok (metóda TD(0)): nový odhad V′ : S → ℝ je V′(s) = V(s) + α δ, V′(u) = V(u) pre všetky u ∈ S, u ≠ s.
Namiesto priemeru ∑s′ P(s′ | s, a) […] cez všetky možné nasledujúce stavy (ako v Bellmanovej rovnici) sa teda použije jediný prežitý prechod, P ani R nemusíme poznať. Cieľ y obsahuje vlastný odhad V(s′) — odhad sa opravuje podľa iného odhadu (bootstrapping).
Ráno odhadnete, že do práce dôjdete za 30 minút. Po desiatich minútach stojíte v zápche a navigácia tvrdí, že zostáva ešte 35. Nemusíte čakať, kým dôjdete — už teraz viete, že ranný odhad bol o 15 minút mimo, a nabudúce ho trochu zvýšite. Učíte sa z rozdielu medzi dvoma po sebe idúcimi odhadmi.
V(s) ← V(s) + α [r + γ V(s′) − V(s)]
- V(s)
- doterajší odhad hodnoty stavu, z ktorého sme vyšli — ten opravujeme; vnútri zátvorky sa odčítava, aby oprava bola úmerná chybe, nie celej hodnote
- α
- rýchlosť učenia, 0 < α ≤ 1 — aký veľký kus chyby prijmeme; jeden prechod je náhodná vzorka, takže mu neveríme úplne
- r
- skutočne získaná odmena — jediná časť cieľa, ktorá je zmeraná, nie odhadnutá
- γ
- diskont — hodnota ďalšieho stavu príde o krok neskôr, rovnako ako v Bellmanovej rovnici
- V(s′)
- odhad hodnoty stavu, kam sme skutočne došli — zastupuje celú zostávajúcu budúcnosť, ktorú sme ešte neprežili (bootstrapping); namiesto priemeru ∑ P(s′ | …) jediná vzorka
Príklad — cesta do práce v číslach
Odhad z domova V(doma) = 30 minút. Po r = 10 minútach jazdy ste v zápche a odhad odtiaľ je V(zápcha) = 35. Čas sa nediskontuje (γ = 1) a namiesto odmeny sčítavame minúty, takže TD cieľ je 10 + 1 · 35 = 45 a TD chyba 45 − 30 = 15 (farby podľa vzorca vyššie).
- s α = 0,5: nový odhad 30 + 0,5 · 15 = 37,5 minúty,
- s α = 0,1: 30 + 0,1 · 15 = 31,5 minúty,
- s α = 1: rovno 45 — posledná skúsenosť by úplne prepísala všetky skoršie.
Veta — s pevným α je odhad kĺzavý priemer cieľov
Nech α ∈ (0, 1], n ∈ ℕ, n ≥ 1, Q0 ∈ ℝ a c1, …, cn ∈ ℝ (ciele). Nech pre k = 1, …, n
Qk = Qk−1 + α (ck − Qk−1).
Potom
Qn = (1 − α)n Q0 + ∑k=1n α (1 − α)n−k ck,
a váhy sú nezáporné so súčtom (1 − α)n + ∑k=1n α (1 − α)n−k = 1 — Qn je vážený priemer Q0 a cieľov.
Dôkaz. Pravidlo sa dá prepísať na Qk = (1 − α) Qk−1 + α ck a dosadiť opakovane (indukciou podľa n). Súčet váh vyplýva zo vzorca pre geometrický rad: ∑k=1n α (1 − α)n−k = α · 1 − (1 − α)n/α = 1 − (1 − α)n. ∎
Váhy klesajú geometricky: s α = 0,5 má posledný cieľ váhu 0,5, predposledný 0,25, ďalší 0,125… Staršie skúsenosti sa teda postupne zabúdajú — to pomáha, keď sa ciele menia (a v TD učení sa menia, pretože sú počítané z odhadov, ktoré sa samy učia), ale v náhodnom svete odhad kolíše. Preto teória pre istú konvergenciu chce α postupne zmenšovať.
2. Q-learning
Definícia — Q-learning a SARSA
Nech (S, A, P, R, γ) je MDP, Q : S × A → ℝ tabuľka doterajších odhadov hodnôt akcií (na začiatku napríklad všade 0), α ∈ (0, 1] rýchlosť učenia a (s, a, r, s′) prežitý prechod ako v definícii TD. Pre koncový stav s′ kladieme Q(s′, a′) = 0 pre všetky a′ ∈ A.
- Q-learning (Christopher Watkins, 1989) po každom prechode zmení jediné políčko tabuľky: Q(s, a) ← Q(s, a) + α [r + γ · maxa′ ∈ A Q(s′, a′) − Q(s, a)]; ostatné políčka Q(u, b), (u, b) ≠ (s, a), zostanú bez zmeny.
- SARSA potrebuje navyše akciu a′ ∈ A, ktorú agent v s′ podľa svojej stratégie naozaj zvolí (odtiaľ názov: s, a, r, s′, a′), a maximum nahradí jej hodnotou: Q(s, a) ← Q(s, a) + α [r + γ · Q(s′, a′) − Q(s, a)].
Q-learning sa teda učí hodnotu najlepšieho správania Q*, SARSA hodnotu Qπ toho, ako sa agent skutočne správa, vrátane skúšania. Pre Q-learning platí (Watkins a Dayan, 1992): ak je γ < 1, odmeny ohraničené, každá dvojica (s, a) sa opravuje nekonečne veľakrát a rýchlosti učenia αk(s, a) pri k-tej oprave políčka (s, a) spĺňajú ∑k αk = ∞ a ∑k αk2 < ∞, potom Q konverguje k Q* s pravdepodobnosťou 1.
Tabuľka „aké dobré je urobiť toto tu“. Po každom kroku sa políčko opraví podľa toho, čo prišlo hneď potom: odmena plus ako dobre to vyzerá z nového miesta. Q-learning počíta, akoby odtiaľ ďalej hral dokonale; SARSA počíta s tým, že občas urobí hlúposť.
Q(s, a) ← Q(s, a) + α [r + γ · maxa′ Q(s′, a′) − Q(s, a)]
- Q(s, a)
- políčko tabuľky pre práve vyskúšanú akciu — opravuje sa len ono; ostatné akcie v s sa nezmenili, pretože o nich tento krok nič nepovedal
- α
- rýchlosť učenia — u nás 0,5: svet na útese je deterministický, takže sa nového cieľa nemusíme báť
- r
- odmena za krok: −1, alebo −100 za pád
- γ
- diskont — na útese γ = 1, pretože epizóda vždy skončí a každý krok stojí −1, takže kratšia cesta je lepšia aj bez diskontu
- maxa′ Q(s′, a′)
- hodnota najlepšej akcie v novom stave — Q-learning predpokladá, že odtiaľ ďalej bude hrať najlepšie, hoci v skutočnosti občas skúsi náhodnú akciu; v grafoch nižšie je Q-learning jantárový
# Q-learning (a SARSA) na chôdzi po útese
Q(s, a) = 0 pre všetky stavy a akcie
pre každú epizódu:
s = štart
a = ε-pažravá akcia podľa Q v s
kým s nie je cieľ:
vykonaj a, pozoruj r a s′ # pád: r = −100, s′ = štart
a′ = ε-pažravá akcia podľa Q v s′
cieľ = max cez b Q(s′, b) # Q-learning
cieľ = Q(s′, a′) # SARSA (namiesto riadku vyššie)
ak s′ je cieľ: cieľ = 0
Q(s, a) = Q(s, a) + α · (r + γ · cieľ − Q(s, a))
s = s′; a = a′
Príklad — prvé pády (α = 0,5, γ = 1, tabuľka začína na nulách)
Agent hneď na štarte skúsi krok doprava a spadne: r = −100, s′ = štart, kde sú zatiaľ všetky hodnoty 0. Nová hodnota Q(štart, →) = 0 + 0,5 · (−100 + 1 · 0 − 0) = −50 (farby podľa vzorca vyššie).
Potom skúsi krok hore: r = −1, nové pole má samé nuly, Q(štart, ↑) = 0 + 0,5 · (−1 + 1 · 0 − 0) = −0,5.
Keď na štarte spadne druhýkrát, najväčšia hodnota na štarte je stále 0 (akcie ↓ a ← ešte neskúsil), a tak Q(štart, →) = −50 + 0,5 · (−100 + 1 · 0 − (−50)) = −75. S každým ďalším pádom sa blíži k −100 a viac.
Všimnite si vedľajší účinok: všetky skutočné odmeny sú záporné, takže neskúšané akcie s nulou vyzerajú lepšie ako vyskúšané. Tabuľka začínajúca na nulách tu sama ženie agenta skúšať nové veci (tzv. optimizmus voči neznámemu) — v pažravom výbere skôr, než príde na rad náhoda ε.
Definícia — ε-pažravá stratégia
Nech S je množina stavov, A konečná neprázdna množina akcií, Q : S × A → ℝ a ε ∈ [0, 1]. Pre každé s ∈ S nech a*(s) ∈ argmaxa ∈ A Q(s, a) je pažravá akcia (pri viacerých maximách jedno z nich). ε-pažravá stratégia vzhľadom na Q je stochastická stratégia
π(a | s) = 1 − ε + ε/|A| pre a = a*(s), π(a | s) = ε/|A| pre a ≠ a*(s).
Ekvivalentne: s pravdepodobnosťou 1 − ε zvoľ a*(s), s pravdepodobnosťou ε zvoľ akciu rovnomerne náhodne z celej A (aj z pažravej). Pre ε = 0 je to pažravá stratégia. Bez náhodných akcií by agent nikdy neskúsil nič, čo sa mu zatiaľ nezdá najlepšie, a mohol by uviaznuť pri prvej slušnej ceste, ktorú nájde. Je to najjednoduchšie riešenie dilemy prieskum, alebo využitie (exploration vs. exploitation).
Do obľúbenej reštaurácie chodíte deväťkrát z desiatich. Raz za čas skúsite novú — inak sa nikdy nedozviete, že o ulicu ďalej varia lepšie.
Príklad — pravdepodobnosti akcií pri ε = 0,1
Náhodná akcia sa vyberá zo všetkých |A| = 4 akcií, teda aj z tej najlepšej. Preto
π(a | s) = 1 − ε + ε/|A| = 1 − 0,1 + 0,1/4 = 0,925 pre najlepšiu akciu a ε/|A| = 0,1/4 = 0,025 pre každú z troch ostatných.
Každá konkrétna „zlá“ akcia — napríklad krok dole do útesu — teda príde v jednom kroku zo 40.
3. Chôdza po útese: Q-learning proti SARSA
Klasický pokus z učebnice Richarda Suttona a Andrewa Barta (cliff walking). Mriežka 12 × 4, štart vľavo dole, cieľ vpravo dole a medzi nimi útes. Každý krok stojí −1, pád do útesu −100 a návrat na štart. Bez diskontu. Najkratšia cesta vedie tesne popri útese (13 krokov). Oba algoritmy sa učia 500 epizód s ε = 0,1 a α = 0,5, každý v 50 nezávislých behoch.
Q-learning sa vo všetkých 50 z 50 behov naučil najkratšiu cestu popri útese. SARSA si v 41 behoch zvolila cestu horným okrajom mriežky, čo najďalej od útesu (17 krokov), v jednom ešte o dva kroky dlhšiu a v 8 behoch pažravá stratégia po 500 epizódach do cieľa ešte nedôjde — zacyklí sa v miestach, kam sa agent pri učení skoro nedostal.
A teraz paradox: počas učenia je na tom lepšie SARSA. Za posledných sto epizód dostáva priemerne −25,1, Q-learning −51,1. Q-learning chodí po okraji útesu, a pretože každý desiaty krok je náhodný, padá v priemere 0,34-krát za epizódu; SARSA len 0,04-krát. Q-learning sa naučil, čo je najlepšie bez skúšania; SARSA, čo je najlepšie so skúšaním. Ktoré chceme, záleží na tom, či agent bude skúšať aj v ostrej prevádzke — robot, ktorý sa učí na skutočnom stroji, by mal myslieť ako SARSA.
Príklad — koľkokrát spadne Q-learning (zjednodušený odhad)
Naučená cesta Q-learningu vedie zo štartu hore a potom desať polí tesne nad útesom. Na štarte a na každom z tých desiatich polí vedie do útesu krok dole (na štarte krok doprava), teda jedna konkrétna akcia — pri ε = 0,1 s pravdepodobnosťou 0,025. Prejsť 11 takých polí bez pádu:
0,97511 = 0,757, takže pád počas jedného prechodu má pravdepodobnosť q = 1 − 0,757 = 0,243.
Po páde začína agent znova na štarte, takže počet pádov do úspešného prechodu má geometrické rozdelenie so strednou hodnotou q/1 − q = 0,243/0,757 = 0,32 pádu za epizódu. Namerané 0,34 — o niečo viac, pretože odhad zanedbáva náhodné kroky doľava, po ktorých agent strávi nad útesom ešte ďalšie kroky. SARSA chodí horným okrajom, tri riadky nad útesom: tam by ju do útesu dostalo až niekoľko náhodných krokov dole po sebe. Riskuje hlavne na štarte, a to samo dáva 0,025/0,975 = 0,026 pádu za epizódu; namerané 0,04.
Definícia — učenie podľa vlastnej a cudzej stratégie (on-policy / off-policy)
Nech metóda učenia odhaduje hodnotovú funkciu Vπ alebo Qπ nejakej stratégie π (cieľová stratégia) z prechodov, ktoré vznikajú, keď agent koná podľa stratégie b (stratégia správania).
- Metóda je on-policy práve vtedy, keď cieľová stratégia a stratégia správania sú totožné, π = b. Príklad: SARSA s ε-pažravou stratégiou — odhaduje Qπ tej ε-pažravej stratégie, podľa ktorej koná.
- Metóda je off-policy práve vtedy, keď pripúšťa π ≠ b. Príklad: Q-learning — koná ε-pažravo, ale vďaka maximu v cieli odhaduje Q* pažravej (optimálnej) stratégie.
Off-policy metódy sa preto môžu učiť aj zo zážitkov nazbieraných skôr (inou, staršou stratégiou) alebo niekým iným.
On-policy: učím sa z vlastných jázd a hodnotím ich také, aké sú. Off-policy: pozerám sa aj na cudzie jazdy (alebo svoje staré) a odvodzujem z nich, ako by jazdil ten najlepší vodič.
4. Keď sa tabuľka nezmestí: DQN
Tabuľka potrebuje riadok pre každý stav. Kyvadlo na vozíku z dielu o neuroevolúcii má stav zo štyroch reálnych čísel (poloha a rýchlosť vozíka, uhol a uhlová rýchlosť tyče); hra na Atari má stav z obrazovky 210 × 160 pixelov. Žiadna tabuľka. Namiesto nej sa Q(s, a) odhaduje neurónovou sieťou.
Definícia — Deep Q-Network (DQN)
Nech je daný MDP s konečnou množinou akcií A a so stavmi opísanými vektormi, S ⊆ ℝd (množina stavov tu nemusí byť konečná; súčty cez s′ v definíciách minulého dielu sa potom nahradia strednými hodnotami). Nech Q(·, ·; θ) : S × A → ℝ je neurónová sieť s parametrami θ ∈ ℝm, ktorá pre stav s vráti vektor (Q(s, a; θ))a ∈ A ∈ ℝ|A|. DQN (Volodymyr Mnih a kol., DeepMind, 2015) má navyše
- pamäť zážitkov (replay buffer) D — konečný zoznam najviac N posledných prechodov (s, a, r, s′, k), kde k ∈ {0, 1} udáva, či je s′ koncový;
- cieľovú sieť — parametre θ− ∈ ℝm, ktoré sa len raz za C krokov skopírujú z θ (θ− ← θ).
Pre prechod z D je cieľ y = r + (1 − k) γ maxa′ ∈ A Q(s′, a′; θ−) a DQN minimalizuje vzhľadom na θ (pri pevnom θ−) stratu
L(θ) = E(s, a, r, s′, k) ~ D [(y − Q(s, a; θ))²],
kde ~ D znamená rovnomerne náhodný výber prechodu z pamäte; v praxi sa stredná hodnota odhadne priemerom cez náhodnú dávku prechodov. Agent teda v každom kroku koná (ε-pažravo vzhľadom na Q(·, ·; θ)), uloží prechod do D, urobí jeden gradientný krok na L a každých C krokov obnoví θ−. Pamäť zážitkov zabezpečí, že sa sieť učí z náhodných dávok, nie z posledných krokov za sebou; cieľová sieť, že sa cieľ neposúva s každým krokom učenia.
Pamäť zážitkov: namiesto učenia len z posledných pár minút si agent prezerá náhodné spomienky z celej histórie, takže nezabudne, čo vedel včera. Cieľová sieť: keď sa učíte trafiť terč, nepomôže, ak sa terč posunie zakaždým, keď vystrelíte. Necháme ho chvíľu na mieste.
L(θ) = E(s, a, r, s′) ~ D [(r + γ maxa′ Q(s′, a′; θ−) − Q(s, a; θ))²]
- E… ~ D
- priemer cez náhodné prechody z pamäte zážitkov D — mieša staré a nové zážitky, takže po sebe idúce, silne podobné kroky neťahajú sieť jedným smerom
- r
- odmena — na vozíku +1 za každý krok, keď tyč stojí
- γ
- diskont 0,99 — sieť „vidí“ zhruba 1/1 − γ = 100 krokov dopredu
- max Q(s′, a′; θ−)
- cieľ z cieľovej siete so zmrazenými parametrami θ− — rovnaké maximum ako v tabuľkovom Q-learningu, len sa pri kroku učenia nehýbe; keď stav s′ znamená pád, je tento člen 0
- Q(s, a; θ)
- odhad učenej siete pre akciu, ktorá sa naozaj urobila — jediné, čo sa pri kroku učenia mení (gradient ide len cez θ)
Definícia — Huberova strata
Huberova strata (s prahom 1) je funkcia H : ℝ → ℝ,
H(d) = d2/2 pre |d| ≤ 1, H(d) = |d| − 1/2 pre |d| > 1.
Je spojito diferencovateľná s deriváciou H′(d) = d pre |d| ≤ 1 a H′(d) = sgn d = ±1 pre |d| > 1. Naše DQN dosadzuje d = Q(s, a; θ) − y a namiesto štvorca chyby minimalizuje E[H(d)] (ako pôvodný článok, ktorý orezáva chybu na ±1): malé chyby sa opravujú ako pri štvorci, veľká chyba (napríklad keď cieľ skočí po skopírovaní cieľovej siete) dá najviac jednotkový gradient a jeden divný prechod sieť nerozhádže.
# DQN na kyvadle na vozíku
sieť Q(·; θ) 4 → 64 → 64 → 2, cieľová sieť θ⁻ = θ, pamäť D prázdna
s = náhodný štart
pre t = 1 … 30 000:
ε = max(0,05; 1 − 0,95 · t / 10 000)
a = náhodná akcia s pravdepodobnosťou ε, inak argmax Q(s, ·; θ)
vykonaj a, pozoruj s′ a či tyč padla
ulož (s, a, r = 1, s′, padla) do D # najstarší vypadne nad 20 000
s = nový štart, keď tyč padla alebo vydržala 500 krokov, inak s′
z D vyber náhodnú dávku 32 prechodov, pre každý:
cieľ = r, keď padla
cieľ = r + γ · max Q(s′, ·; θ⁻), inak
jeden krok Adamu na priemernej Huberovej strate (Q(s, a; θ) − cieľ)
každých 500 krokov: θ⁻ = θ
Príklad — prieskum a veľkosť hodnôt
Prieskum klesá lineárne: ε0 = 1 (samé náhodné akcie), v kroku 5 000 je ε = 1 − 0,95 · 0,5 = 0,525 a od kroku 10 000 zostáva 0,05.
Aké veľké hodnoty sa sieť musí naučiť? Keby tyč stála večne, bola by hodnota 1 + 0,99 + 0,99² + … = 1/1 − 0,99 = 100; pre epizódu obmedzenú na 500 krokov je to 1 − 0,99500/1 − 0,99 = 99,3. Na začiatku sieť vracia čísla blízko nuly, takže ciele musia počas učenia vyrásť o dva rády — a s nimi sa stále posúvajú.
Naše DQN: sieť 4 → 64 → 64 → 2 (dve akcie: tlačiť doľava, alebo doprava), odmena +1 za každý krok, keď tyč stojí, γ = 0,99, pamäť 20 000 prechodov, dávka 32, cieľová sieť sa kopíruje po 500 krokoch, ε klesá z 1 na 0,05 počas prvých 10 000 krokov. Celkom 30 000 krokov. Každých 2 500 krokov meriame, koľko krokov vydrží pažravá stratégia (priemer zo štyroch štartov, najviac 500, teda 10 sekúnd).
| variant | najlepšie meranie | kedy | na konci |
|---|---|---|---|
| plné DQN, semienko 1 | 500 | krok 17 500 | 110 |
| plné DQN, semienko 2 | 500 | krok 12 500 | 217 |
| bez pamäte zážitkov | 192 | krok 7 500 | 124 |
| bez cieľovej siete | 9 | krok 2 500 | 9 |
Plné DQN sa naučí tyč udržať celých 500 krokov — v behu so semienkom 1 prvýkrát v kroku 17 500. Lenže hneď zase zabudne: na konci učenia drží len 110 krokov. Druhý beh kolíše podobne. Bez pamäte zážitkov (učí sa len z posledných 32 krokov) sa sieť nedostane cez 192. A bez cieľovej siete sa učenie úplne rozpadne: stratégia vydrží celý čas len 9 krokov — presne toľko, koľko vydrží vozík, ktorý tlačíte stále doprava. Sieť sa „naučila“ jedinú akciu.
5. Prečo je DQN také vrtkavé
Definícia — smrtiaca trojica (deadly triad)
Sutton a Barto tak označujú situáciu, keď metóda učenia hodnôt má súčasne všetky tri vlastnosti:
- aproximácia funkcie: odhad nie je tabuľka, ale funkcia s parametrami θ ∈ ℝm (napríklad sieť) a parametrov je menej ako stavov, takže zmena θ kvôli jednému stavu zmení odhady aj v iných stavoch;
- bootstrapping: cieľ obsahuje vlastný odhad, napr. y = r + γ maxa′ Q(s′, a′; θ);
- učenie off-policy: prechody, z ktorých sa učí, pochádzajú z inej stratégie ako cieľová (pozri definíciu vyššie).
Keď chýba ktorákoľvek z troch vlastností, dá sa nestabilite vyhnúť; keď sú prítomné všetky tri, neexistuje všeobecná záruka konvergencie a odhady môžu kmitať alebo sa rozbiehať do nekonečna (známy je Bairdov protipríklad). DQN obsahuje všetky tri — pamäť zážitkov a cieľová sieť nebezpečenstvo len zmierňujú.
Sieť sa učí podľa vlastných odhadov. Keď sa odhad v jednom stave zdvihne, zdvihne sa (pretože sieť zovšeobecňuje) aj v podobných stavoch, vrátane toho, podľa ktorého sa počíta cieľ. Ten sa zdvihne, odhad sa za ním natiahne… Pes, ktorý naháňa vlastný chvost.
V praxi sa preto pridáva rad úprav: Double DQN (Hado van Hasselt a kol., 2015) oddeľuje výber najlepšej akcie od jej ohodnotenia a tlmí systematické nadhodnocovanie, ktoré maximum v cieli prináša; ďalej prioritizovaná pamäť, rozdelenie na hodnotu a výhodu (dueling) a ďalšie — ich kombinácia sa volá Rainbow (2017). A úplne praktická rada: počas učenia si ukladajte sieť z najlepšieho merania, nie tú poslednú.
y = r + γ Q(s′, argmaxa′ Q(s′, a′; θ); θ−)
- r
- odmena, bez zmeny
- γ
- diskont, bez zmeny
- argmax Q(s′, a′; θ)
- výber akcie učenou sieťou — ktorú akciu by sme v s′ zvolili
- Q(s′, …; θ−)
- ohodnotenie tej akcie cieľovou sieťou — iný odhad s inými chybami, takže akcia, ktorú učená sieť náhodou precenila, nedostane automaticky aj precenenú hodnotu
Príklad — prečo maximum preceňuje (zjednodušene)
Dve akcie majú skutočnú hodnotu 0, ale odhad každej je zaťažený nezávislou chybou +1, alebo −1 (oboje s pravdepodobnosťou 1/2). Štyri rovnako pravdepodobné možnosti dajú maximum odhadov 1, 1, 1 a −1, takže
E[max(Q̂1, Q̂2)] = 1 + 1 + 1 − 1/4 = 0,5 > 0 = max(Q1, Q2).
Maximum cez zašumené odhady je v priemere väčšie ako maximum skutočných hodnôt, a pretože sa cieľ s maximom dosadzuje znova a znova, precenenie sa šíri. Keď akciu vyberie jeden odhad a ohodnotí druhý, nezávislý, je stredná hodnota ohodnotenia 0 — chyba druhého odhadu už s výberom nesúvisí.
Hodnotové metódy ako DQN fungujú dobre, keď je akcií málo (tlačiť doľava, alebo doprava; tlačidlá na ovládači). Pre spojité akcie — akou silou otočiť kĺbom robota — je výhodnejšie učiť priamo stratégiu. To je téma ďalšieho dielu o policy gradient a PPO.
6. Zhrnutie
- Bez znalosti pravidiel sveta sa hodnoty učia z prežitých prechodov: odhad sa posunie k cieľu r + γ · odhad ďalšieho stavu.
- Q-learning sa učí hodnotu najlepšieho správania (off-policy), SARSA hodnotu správania so skúšaním (on-policy).
- Na útese: Q-learning nájde najkratšiu cestu (13 krokov), ale pri ε = 0,1 padá 0,34-krát za epizódu; SARSA ide bezpečnejšie a počas učenia dostáva viac (−25,1 proti −51,1).
- DQN nahradí tabuľku sieťou; bez pamäte zážitkov a cieľovej siete sa neučí (najviac 192, resp. 9 krokov).
- Aj plné DQN kolíše: tyč udrží 500 krokov a potom to zase zabudne — smrtiaca trojica.
Chcete si to vyskúšať? Nechajte AI agenta naučiť DQN na prostredí CartPole z knižnice Gymnasium a nakresliť krivku učenia pre päť semienok. Potom nech pridá Double DQN a porovná.
Máte na to iný názor? Napíšte na support@coden-app.com.