Preskočiť na obsah
coden

Policy gradient a PPO: učenie priamo stratégie

Stochastická stratégia ako sieť, REINFORCE a veta o gradiente stratégie, základná úroveň a výhoda, actor-critic, PPO s orezaním napísané od nuly na kyvadle na vozíku, čo sa stane bez orezania, a ako PPO doladilo jazykové modely.

12 minút Matěj Žalmánek 2026-10-16

Séria Základy AI Diel 49 z 52
  1. Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
  2. Stručná história umelej inteligencie: od Turinga po jazykové modely
  3. Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
  4. Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
  6. Funkcie a zobrazenia: prečo je každý model v AI funkcia
  7. Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
  8. Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
  9. Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
  10. Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
  11. Gradientný zostup: ako sa model učí
  12. Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
  13. Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
  14. Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
  15. Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
  16. Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
  17. Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
  18. Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
  19. Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
  20. Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
  21. Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
  22. Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
  23. Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
  24. Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
  25. Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
  26. Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
  27. Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
  28. Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
  29. Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
  30. Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
  31. Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
  32. Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
  33. Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
  34. Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
  35. Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
  36. Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
  38. Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
  39. Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
  40. Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
  41. Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
  42. Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
  43. Prompty, kontext a RAG: ako modelu dať správne informácie
  44. Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
  45. Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
  46. Difúzne modely: ako sa z čistého šumu stane obrázok
  47. Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
  48. Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
  49. Policy gradient a PPO: učenie priamo stratégie
  50. Ako funguje AI agent: jazykový model v slučke s nástrojmi
  51. Programovanie s AI agentmi: zadanie, testy a kontrola
  52. Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť

Celá osnova série Hotovo: 52 z 83 tém

Čo si odnesiete
  • Ako sa stratégia učí priamo z výsledkov, bez tabuľky hodnôt.
  • Prečo pomáha odčítať základnú úroveň a čo je výhoda.
  • Prečo je orezanie v PPO také dôležité a ako súvisí s RLHF.

Čo sa hodí vedieť vopred: Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť, Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice

DQN z minulého dielu sa učí, aká dobrá je každá akcia, a stratégia z toho vyplýva až nepriamo: vyber akciu s najväčšou hodnotou. Druhá veľká rodina metód ide rovno: sieť dostane stav a vráti pravdepodobnosti akcií, a my tie pravdepodobnosti posúvame tak, aby dobré akcie boli častejšie. Z tejto rodiny pochádza PPO — algoritmus, ktorý naučil roboty chodiť, porazil profesionálov v hre Dota 2 a stál za doladením ChatGPT. V tomto diele ho napíšeme od nuly a porovnáme s jednoduchšími predchodcami.

Nadväzuje na diely Q-learning a DQN, Markovove rozhodovacie procesy a Softmax.

1. Učiť sa rovno stratégiu

Definícia — parametrizovaná stratégia

Nech (S, A, P, R, γ) je MDP (značenie z dielu Markovove rozhodovacie procesy) s konečnou množinou akcií A a počiatočným rozdelením p(s0) na S, a nech θ ∈ ℝm sú parametre. Parametrizovaná (stochastická) stratégia je systém stratégií (πθ)θ ∈ ℝm, kde pre každé θ a každé s ∈ S je πθ(· | s) rozdelenie pravdepodobnosti na A a πθ(a | s) je diferencovateľná funkcia θ. Pre konečnú A sa berie sieť fθ : S → ℝ|A| a softmax jej výstupov:

πθ(a | s) = efθ(s)a/∑b ∈ A efθ(s)b;

pre spojité akcie sieť vracia napríklad stred a rozptyl normálneho rozdelenia. Cieľ je očakávaný výnos ako funkcia parametrov

J : ℝm → ℝ,   J(θ) = Eπθ[G0],

a hľadá sa θ s čo najväčším J(θ) gradientným vzostupom θ ← θ + α ∇J(θ) s rýchlosťou učenia α > 0 (∇ značí gradient podľa θ).

Laicky povedané

DQN si vedie tabuľku „koľko bodov za ktorý ťah“ a hrá ťah s najviac bodmi. Stratégia namiesto toho rovno hovorí „v tejto situácii tlač doprava so 70 %, doľava s 30 %“. Výhody: funguje aj so spojitými akciami (akou silou, akým uhlom), náhoda je zabudovaná, takže agent sám skúša, a malá zmena parametrov znamená malú zmenu správania.

Príklad — výnos jedného pokusu na kyvadle na vozíku

Odmena je +1 za každý krok a diskont γ = 0,99. Ak do konca epizódy zostáva T − t krokov, je výnos geometrický rad:

Gt = 1 + γ + γ² + … + γT−t−1 = 1 − γT−t/1 − γ.

Na začiatku epizódy, ktorá vydrží celých 500 krokov: G0 = 1 − 0,99500/0,01 = 99,34. Dvadsať krokov pred pádom: G = 1 − 0,9920/0,01 = 18,21. Krok tesne pred pádom: G = 1. Výnos je teda vždy kladný a nikdy neprekročí 1/1 − γ = 100 — to sa bude hodiť v oddiele o základnej úrovni.

2. REINFORCE: posilňuj, čo vyšlo

Definícia — veta o gradiente stratégie a REINFORCE

Veta o gradiente stratégie. Nech (S, A, P, R, γ) je MDP s konečnými S a A a γ ∈ [0, 1], v ktorom každá epizóda s0, a0, r1, s1, …, sT skončí najneskôr po Tmax krokoch (T ≤ Tmax), a nech πθ je parametrizovaná stratégia s πθ(a | s) > 0 pre všetky s, a, θ. Potom

∇J(θ) = Eπθ[ ∑t=0T−1 γt ∇ log πθ(at | st) · Gt ],   Gt = ∑k=tT−1 γk−t rk+1.

Pre γ = 1 činiteľ γt zmizne a dostaneme tvar v rozbore nižšie. Praktické implementácie (aj naša) ho vynechávajú aj pre γ < 1; potom výsledok už nie je nestranný odhad ∇J(θ) (vo všeobecnosti dokonca nie je gradientom žiadnej funkcie; Chris Nota a Philip Thomas, 2020), pretože neskoršie kroky epizódy dostanú väčšiu váhu, než im podľa vety patrí — v praxi to napriek tomu funguje dobre.

REINFORCE (Ronald Williams, 1992) je algoritmus:

  1. zvoľ počiatočné θ ∈ ℝm (náhodné váhy siete) a rýchlosť učenia α > 0;
  2. odohraj stratégiou πθ epizódy (u nás dohromady aspoň 2 000 krokov);
  3. v každej epizóde vypočítaj odzadu GT = 0 a Gt = rt+1 + γ Gt+1 pre t = T − 1, …, 0;
  4. vypočítaj odhad gradientu ĝ = priemer hodnôt ∇ log πθ(at | st) · Gt cez všetky odohrané kroky;
  5. θ ← θ + α ĝ, dáta zahoď a pokračuj krokom 2, kým nevyčerpáš rozpočet krokov v prostredí.

Pre softmax π = softmax(z) s výstupmi siete z ∈ ℝ|A| je gradient podľa z rovný ∇z log πa = 1a − π, kde 1a je vektor s jednotkou na mieste akcie a a nulami inde.

Laicky povedané

Zahrajte, pozrite sa, ako to dopadlo, a každý ťah, ktorý ste urobili, urobte o kúsok pravdepodobnejším — tým viac, čím lepšie to po ňom dopadlo. Ťahy z vydarených hier sa posilňujú viac než ťahy z nevydarených. Nikto nemusí hovoriť, ktorý ťah bol správny; stačí výsledok.

∇J(θ) = Eπθ[ ∑t ∇ log πθ(at | st) · Gt ]

∇J(θ)
smer, ktorým pootočiť parametre, aby priemerný výnos rástol najrýchlejšie; vypočítať ho priamo nejde, pretože výnos závisí od θ len cez náhodné hranie a neznámu fyziku prostredia
Eπθ[ ∑t … ]
priemer cez epizódy odohrané súčasnou stratégiou — preto sa dá nahradiť priemerom cez skutočne odohrané hry; a preto dáta od inej stratégie (staršej, cudzej) bez opravy nestačia
∇ log πθ(at | st)
smer v parametroch, ktorý zahranú akciu spravdepodobní; ∇ log π = ∇π/π delí pravdepodobnosťou, takže častá akcia, ktorá sa v dátach objavuje často, nedostane navyše viac posilnenia len preto, že je častá
Gt
váha: ako dobre to po akcii dopadlo; len odmeny od kroku t ďalej, pretože akcia nemôže ovplyvniť odmeny, ktoré už padli
Gradient je vážený priemer smerov „urob túto akciu pravdepodobnejšou“, váhou je výnos, ktorý po nej prišiel.
Veta — odkiaľ vzorec pochádza (trik s logaritmom)

Nech platia predpoklady vety o gradiente stratégie. Epizódu (trajektóriu) τ = (s0, a0, s1, a1, …, sT) má stratégia πθ s pravdepodobnosťou

Pθ(τ) = p(s0) ∏t=0T−1 πθ(at | st) P(st+1 | st, at)

a nech G(τ) = G0 je jej výnos; trajektórií je konečne veľa, takže J(θ) = ∑τ Pθ(τ) G(τ). Potom

∇J(θ) = ∇ ∑τ Pθ(τ) G(τ) = ∑τ Pθ(τ) · ∇ log Pθ(τ) · G(τ) = Eτ ∼ πθ[ ∇ log Pθ(τ) · G(τ) ],

pretože ∇P = P · ∇ log P. Dôkaz (náčrt): logaritmus zmení súčin na súčet, log Pθ(τ) = log p(s0) + ∑t log πθ(at | st) + ∑t log P(st+1 | st, at). Od θ závisí len prostredný súčet, takže fyziku prostredia P poznať nemusíme: ∇ log Pθ(τ) = ∑t ∇ log πθ(at | st). Nakoniec pri každom at zahodíme odmeny pred krokom t: od at nezávisia, a ich príspevok má preto nulovú strednú hodnotu (pozri vetu v ďalšom oddiele). Zo súčtu ∑k γk rk+1 tak pri kroku t zostane ∑k ≥ t γk rk+1 = γt Gt, čo je tvrdenie vety o gradiente stratégie. ∎

Príklad — jeden krok REINFORCE so softmaxom

Dve akcie, výstupy siete z = (0; 0), takže π = softmax(z) = (0,50; 0,50). Agent zahral akciu 1 („doprava“) a výnos od toho kroku bol G = 10. Pre softmax je ∇z log π(a) = 1a − π, teda

∇z log π(1) · G = ((0; 1) − (0,50; 0,50)) · 10 = (−5; 5)

(farby podľa rozboru vzorca vyššie; výsledok je odhad ∇J z jediného kroku).

Krok vzostupom s α = 0,1: z ← (0; 0) + 0,1 · (−5; 5) = (−0,5; 0,5). Nová stratégia π = (e−0,5; e0,5)/e−0,5 + e0,5 = (0,269; 0,731). Akcia, ktorá vyšla, je teraz pravdepodobnejšia. (V skutočnej sieti sa menia váhy θ a k z sa gradient dostane spätným šírením; smer je ten istý.)

θ = náhodné váhy siete stratégie
opakuj:
    odohraj celé epizódy stratégiou π_θ, kým nie je aspoň 2 000 krokov
    pre každú epizódu odzadu:               # G = 0 za koncom epizódy
        G_t = r_(t+1) + γ · G_(t+1)
    g = priemer cez všetky kroky  ∇ log π_θ(a_t | s_t) · G_t
    θ = θ + α · g                           # vzostup; u nás krokom Adamu
    dáta zahoď — nabudúce už sú od inej stratégie

3. Rozptyl a základná úroveň

Definícia — základná úroveň (baseline) a výhoda

Nech (S, A, P, R, γ) je MDP a πθ parametrizovaná stratégia.

  1. Základná úroveň (baseline) je ľubovoľná funkcia b : S → ℝ, ktorá závisí len od stavu, nie od akcie. Odhad gradientu so základnou úrovňou je ĝ = ∑t ∇ log πθ(at | st) · (Gt − b(st)); podľa vety nižšie má rovnakú strednú hodnotu ako odhad bez b, len sa tým môže výrazne zmenšiť rozptyl.
  2. Výhoda (advantage) stratégie π je funkcia Aπ : S × A → ℝ, Aπ(s, a) = Qπ(s, a) − Vπ(s), kde Qπ a Vπ sú hodnotové funkcie z dielu o MDP (písmeno A s argumentmi tu značí výhodu, nie množinu akcií). Najlepšia bežná voľba základnej úrovne je b = Vπθ, v praxi odhadnutá druhou sieťou; potom Gt − b(st) je odhad výhody.
  3. Actor-critic je metóda, ktorá súčasne učí parametrizovanú stratégiu πθ („herec“) a odhad hodnotovej funkcie V ≈ Vπθ („kritik“) a odhad kritika používa v odhade gradientu stratégie.
Laicky povedané

Na kyvadle na vozíku dostane agent +1 za každý krok, takže každý výnos je kladný — REINFORCE teda posilňuje každý ťah, len niektoré viac. Signál „toto bolo lepšie ako obvykle“ sa stráca v šume. Odčítaním očakávanej úrovne sa z toho stane „tento ťah dopadol o 20 bodov lepšie, než sa v tejto situácii čakalo“ — a horšie ťahy dostanú záporné znamienko.

∇J(θ) = E[ ∑t ∇ log πθ(at | st) · (Gt − b(st)) ],   A(s, a) = Q(s, a) − V(s)

∇ log πθ(at | st)
smer „zahranú akciu častejšie“, rovnako ako v REINFORCE
Gt, Q(s, a)
čo po akcii skutočne prišlo (Gt), resp. koľko to po nej dáva v priemere (Q je stredná hodnota Gt); samo osebe skoro vždy kladné, takže nerozlíši dobrú akciu od priemernej
b(st), V(s)
latka: koľko sa v tejto situácii čaká bez ohľadu na akciu; po odčítaní dostanú horšie ako priemerné akcie záporné znamienko. Smie závisieť len od stavu, nie od akcie — inak by sa gradient skreslil (veta nižšie)
A(s, a)
výhoda: o koľko je akcia a lepšia ako priemerná akcia stratégie v s; presne tá informácia, ktorú chceme posilňovať
Odčítanie latky nemení, kam gradient v priemere mieri, len zmenší, ako veľmi sa odhad z dávky na dávku trasie.
Veta — základná úroveň neskreslí gradient

Nech A je konečná množina akcií, πθ parametrizovaná stratégia s πθ(a | s) > 0, s ∈ S stav a b : S → ℝ funkcia. Potom

  1. Ea ∼ πθ(· | s)[∇ log πθ(a | s)] = ∑a ∈ A πθ(a | s) ∇ log πθ(a | s) = 0;
  2. Ea ∼ πθ(· | s)[∇ log πθ(a | s) · b(s)] = 0.

Odčítanie b(st) od Gt teda strednú hodnotu odhadu gradientu nezmení (stačí podmieniť stavom st).

Dôkaz: ∑a πθ(a | s) ∇ log πθ(a | s) = ∑a ∇πθ(a | s) = ∇ ∑a πθ(a | s) = ∇1 = 0. Člen b(s) je pre pevné s konštanta, takže sa dá vybrať pred súčet. ∎

Príklad — rovnaký priemer, iný rozptyl

Jeden stav, dve akcie s π = (0,5; 0,5). Akcia 1 prinesie výnos 12, akcia 0 výnos 10 — oboje kladné ako na vozíku. Zložka odhadu gradientu podľa výstupu z1 je z jednej vzorky (1a=1 − 0,5) · (G − b) (farby podľa vzorca vyššie).

Bez základnej úrovne (b = 0): ak padne akcia 1, odhad je 0,5 · 12 = 6; ak padne akcia 0, je −0,5 · 10 = −5. Priemer 6 − 5/2 = 0,5, rozptyl (6 − 0,5)² + (−5 − 0,5)²/2 = 30,25.

So základnou úrovňou b = 11 (priemerný výnos): 0,5 · (12 − 11) = 0,5 a −0,5 · (10 − 11) = 0,5. Priemer je stále 0,5, rozptyl 0.

Skutočný gradient je π1(1 − π1) · (12 − 10) = 0,25 · 2 = 0,5. Oba odhady mieria v priemere správne, ale bez latky sa jedna vzorka trafí vedľa o ±5,5, s latkou vôbec. V skutočnosti rozptyl na nulu neklesne (výnosy sú náhodné a stavov je veľa), ale princíp je ten istý.

Zmerali sme to na začiatku učenia: 40 nezávislých dávok po 1 000 krokoch tej istej náhodnej stratégie, z každej gradient REINFORCE. Už len odčítanie priemerného výnosu (konštantná základná úroveň) zmenší súčet rozptylov zložiek gradientu z 0,177 na 0,131, teda o 26 %. Naučená hodnota V(s), ktorá rozlíši dobré a zlé situácie, pomáha viac.

Definícia — súčet rozptylov zložiek gradientu

Nech K ≥ 1 (u nás K = 40) a ĝ(1), …, ĝ(K) ∈ ℝm sú odhady gradientu z K nezávislých dávok (vektory cez všetkých m váh siete). Pre j = 1, …, m označme ḡj = 1/K ∑k=1K ĝj(k) priemer j-tej zložky. Súčet rozptylov zložiek je číslo

∑j=1m 1/K ∑k=1K (ĝj(k) − ḡj)².

Je to stopa (výberovej) kovariančnej matice odhadu — jedno číslo pre to, ako veľmi sa odhad trasie. Pokles: 1 − 0,131/0,177 = 0,26, teda 26 %.

Naučenú V potrebuje aj PPO nižšie. Výhodu pritom neodhaduje rozdielom Gt − V(st), ale kompromisom medzi ním a jednokrokovým odhadom z dielu o Q-learningu:

Ât = ∑l≥0 (γλ)l δt+l,   δt = rt+1 + γ V(st+1) − V(st)

Ât
odhad výhody kroku t (GAE, John Schulman a kol., 2015) — to, čím sa násobí ∇ log π
δt
TD chyba: o koľko dopadol jeden krok lepšie, než V čakala; jednokrokový odhad výhody s malým rozptylom, ale skreslený, ak sa V mýli
rt+1
odmena, ktorá skutočne prišla — jediný kus skutočnosti v δ
V(s)
naučená latka; v st+1 nahrádza zvyšok výnosu odhadom, v st sa odčítava ako základná úroveň (po páde je V(st+1) = 0)
(γλ)l
ako rýchlo zabúdať vzdialenejšie kroky. λ = 0 dá len δt; λ = 1 dá po sčítaní (členy V sa navzájom odčítajú) presne Gt − V(st) — neskreslené, ale s veľkým rozptylom. My máme λ = 0,95
V kóde sa počíta odzadu jedným riadkom: Ât = δt + γλ Ât+1.

4. PPO: malé, bezpečné kroky

REINFORCE má ešte jednu slabinu: každú odohranú skúsenosť použije len na jeden krok gradientu a potom ju zahodí. Keby sme nad tými istými dátami urobili krokov viac, stratégia by sa mohla vzdialiť od tej, ktorá dáta nazbierala, a odhad gradientu by prestal platiť — učenie sa zrúti. PPO toto stráži.

Definícia — Proximal Policy Optimization (PPO)

Nech πθ je parametrizovaná stratégia, V : S → ℝ naučený odhad hodnotovej funkcie (kritik), ε > 0 (typicky ε = 0,2), γ ∈ [0, 1] a λ ∈ [0, 1]. Pre x ∈ ℝ označme clip(x, 1 − ε, 1 + ε) = min(max(x, 1 − ε), 1 + ε) číslo x zovreté do intervalu [1 − ε, 1 + ε]. PPO (Proximal Policy Optimization; John Schulman a kol., OpenAI, 2017) opakuje tieto kroky:

  1. Polož θold = θ, πold = πθold a nazbieraj touto stratégiou dávku krokov (st, at, rt+1, st+1).
  2. Pre každý krok vypočítaj TD chybu δt = rt+1 + γ V(st+1) − V(st) (po páde V(st+1) = 0) a odhad výhody metódou GAE (generalized advantage estimation) Ât = ∑l≥0 (γλ)l δt+l, kde súčet končí s koncom epizódy.
  3. Niekoľko epoch (u nás 10) maximalizuj gradientnými krokmi vzhľadom na θ orezaný cieľ L(θ) = Et[ min( rt(θ) Ât, clip(rt(θ), 1 − ε, 1 + ε) Ât ) ],   rt(θ) = πθ(at | st)/πold(at | st), kde Et je priemer cez kroky dávky (minidávky) a rt(θ) je pomer pravdepodobností (nezamieňať s odmenou rt+1); zároveň uč kritika V zmenšovaním priemeru (V(st) − yt)², kde yt = Ât + Vold(st) je cieľ vypočítaný v kroku 2 z hodnôt kritika pred učením.
  4. Dávku zahoď a pokračuj krokom 1, kým nevyčerpáš rozpočet krokov v prostredí.

Hneď ako sa pravdepodobnosť akcie zmení o viac než faktor 1 ± ε v smere, ktorý cieľ zlepšuje, gradient z tej vzorky zmizne.

Laicky povedané

Tréner po zápase povie „toto rob častejšie“. Hráč to na tréningu opakuje — ale len do chvíle, keď to robí o pätinu častejšie než predtým. Ďalej sa už neučí, kým neodohrá ďalší zápas a nezistí, či to stále funguje. Dosť veľké kroky, aby sa rýchlo zlepšoval, dosť malé, aby sa nezbláznil.

−2−1012 00,511,52 pomer pravdepodobností r (bez jednotky) orezaný cieľ (násobky výhody A)
Orezaný cieľ PPO podľa pomeru r = π_nová / π_stará (ε = 0,2; nazeleno pásmo 1 ± ε) výhoda A = +1: nad 1 + ε už nič nepridá výhoda A = −1: pod 1 − ε už nič nepridá

L(θ) = Et[ min( rt(θ) Ât, clip(rt(θ), 1 − ε, 1 + ε) Ât ) ]

L(θ)
náhradný cieľ, ktorý sa niekoľko epoch maximalizuje nad starou dávkou; jeho gradient v θ = θold je presne gradient stratégie z REINFORCE s výhodou
rt(θ) = πθ/πold
pomer novej a starej pravdepodobnosti zahranej akcie. Dáta nazbierala stará stratégia; vynásobením pomerom sa z nich dá odhadnúť, ako by si viedla nová (váženie podľa dôležitosti, importance sampling). Na začiatku je r = 1
Ât
výhoda z GAE: znamienko hovorí, či akciu posilniť (+), alebo potlačiť (−)
clip(r, 1 − ε, 1 + ε)
pomer zovretý do pásma (na obrázku nazeleno); mimo pásma je konštantný, takže z neho nejde žiadny gradient — ďalej stratégiu touto vzorkou tlačiť nejde
min
z dvoch odhadov ten horší (pesimistický): orezanie platí len tam, kde by zlepšenie vyzeralo podozrivo dobre. Keď sa akcia naopak zhoršila, min nechá neorezaný člen a chybu opraví
Posilňuj výhodné akcie, ale len kým sa ich pravdepodobnosť nezmení viac než o faktor 1 ± ε; potom vzorka mlčí.
Príklad — tri vzorky a orezanie s ε = 0,2

Stará stratégia dala zahranej akcii pravdepodobnosť 0,5. Po niekoľkých krokoch učenia je to 0,65, takže r = 0,65/0,5 = 1,3 a clip(1,3; 0,8; 1,2) = 1,2 (farby podľa rozboru orezaného cieľa vyššie).

Výhoda +2: min(1,3 · 2; 1,2 · 2) = min(2,6; 2,4) = 2,4. Vyhral orezaný člen, ktorý od θ nezávisí — gradient z tejto vzorky je nula. Akcia je už o 30 % častejšia, viac nie.

Výhoda −2 (ten istý pomer): min(1,3 · (−2); 1,2 · (−2)) = min(−2,6; −2,4) = −2,6. Vyhral neorezaný člen: stratégia omylom spravdepodobnila zlú akciu, a gradient ju preto ďalej sťahuje späť.

Výhoda +2, ale pravdepodobnosť klesla na 0,35: r = 0,35/0,5 = 0,7, min(0,7 · 2 = 1,4; 0,8 · 2 = 1,6) = 1,4. Zase neorezaný člen — dobrá akcia, ktorú stratégia potlačila, sa vracia. Orezanie brzdí len kroky, ktoré by cieľ zlepšili „príliš“.

opakuj:
    π_old = π_θ;  nazbieraj 2 000 krokov stratégiou π_old, ulož π_old(a_t | s_t)
    pre každú epizódu odzadu:                        # V(s_(t+1)) = 0 po páde
        δ_t = r_(t+1) + γ · V(s_(t+1)) − V(s_t)
        Â_t = δ_t + γλ · Â_(t+1)                      # GAE, γ = 0,99, λ = 0,95
    cieľ_t = Â_t + V(s_t);  Â normalizuj na priemer 0 a rozptyl 1
    10-krát (epocha):
        zamiešaj kroky a rozdeľ ich na minidávky po 100
        pre každú minidávku:
            r_t = π_θ(a_t | s_t) / π_old(a_t | s_t)
            θ: krok nahor po priemere min(r_t · Â_t, clip(r_t, 0,8, 1,2) · Â_t)
            V: krok nadol po priemere (V(s_t) − cieľ_t)²

5. Pokus: kyvadlo na vozíku

To isté kyvadlo na vozíku ako pri DQN, odmena +1 za každý krok, epizóda končí pádom alebo po 500 krokoch. Stratégia je sieť 4 → 32 → 32 → 2 so softmaxom, hodnota stavu druhá sieť rovnakého tvaru. Všetky štyri metódy dostanú 100 000 krokov v prostredí, v dávkach po 2 000. REINFORCE urobí nad dávkou jeden krok gradientu, PPO desať epoch po minidávkach 100. Variant „bez orezania“ je PPO, ktorému sme orezanie vypli.

0100200300400500 025 00050 00075 000100 000 krok učenia (počet krokov v prostredí) dĺžka epizódy (kroky)
Priemerná dĺžka epizódy počas učenia (hrubo priemer troch behov, tenko jednotlivé behy) REINFORCEREINFORCE so základnou úrovňouPPOPPO bez orezania
metódakedy prvýkrát priemer ≥ 475 (beh 1 · 2 · 3)na konci (beh 1 · 2 · 3)
REINFORCE— · — · —463 · 333 · 348
REINFORCE so základnou úrovňou90 000 · 80 000 · —488 · 500 · 404
PPO30 000 · 20 000 · 20 000500 · 500 · 500
PPO bez orezania100 000 · 30 000 · 50 000494 · 44 · 500

PPO vo všetkých troch behoch udrží tyč celých 500 krokov už po 30 000, 20 000, 20 000 krokoch a už to nepustí. REINFORCE sa zlepšuje pomaly a do konca to nezvládne; so základnou úrovňou je o niečo rýchlejší a v dvoch behoch z troch sa k cieľu dostane. Pozor, porovnanie nie je úplne férové v počte výpočtov: PPO urobí nad každou dávkou desaťkrát viac krokov gradientu. Je ale férové v tom, čo sa v posilňovanom učení počíta najviac — v počte skúseností, ktoré musí agent vo svete nazbierať.

A čo sa stane, keď rovnaké opakované učenie nad dávkou pustíme bez orezania? Dĺžky epizód skáču hore a dole, beh 2 skončil na 44 krokoch. Prečo, ukáže, ako ďaleko sa stratégia pri jednej aktualizácii vzdiali od tej, ktorá dáta nazbierala:

10-410-310-210-1100101 025 00050 00075 000100 000 krok učenia (počet krokov v prostredí) odhad KL (naty, log. mierka)
Vzdialenosť novej stratégie od starej po každej dávke (odhad KL, beh 1, logaritmicky) PPO bez orezania

Pri PPO je priemerná vzdialenosť 0,014 natu a nikdy neprekročí 0,06. Bez orezania je to v priemere 5,5 a občas až 25 natov — stratégia po jednej aktualizácii robí úplne niečo iné ako tá, z ktorej sa učila. Dáta potom o nej nič nehovoria a zlepšenie je lotéria. Orezanie je drobná úprava vo vzorci, ale robí z nestabilného algoritmu spoľahlivý.

Definícia — odhad KL medzi starou a novou stratégiou

Nech πold a πθ sú stratégie na konečnej množine akcií A s πθ(a | s) > 0 a nech (si, ai), i = 1, …, N, sú kroky dávky nazbierané stratégiou πold. KL divergencia z dielu o teórii informácie, tu s prirodzeným logaritmom (jednotka nat; 1 nat = 1/ln 2 ≈ 1,44 bitu), spriemerovaná cez stavy, ktoré stará stratégia navštevuje, je

DKL(πold ‖ πθ) = Es[ ∑a ∈ A πold(a | s) log πold(a | s)/πθ(a | s) ] = Es, a ∼ πold[ log πold(a | s) − log πθ(a | s) ]

a jej odhad z dávky je

D̂ = 1/N ∑i=1N [ log πold(ai | si) − log πθ(ai | si) ].

Akcie ai zahrala stará stratégia, takže priemer cez dávku je nestranný odhad. Je to priemerný logaritmus pomeru, a teda e−D̂ je geometrický priemer pomeru πθ/πold cez nazbierané akcie.

Čo to znamená v číslach: pri PPO najviac 0,06 natu, e−0,06 = 0,94 — akcie zo starej dávky sú typicky o pár percent menej pravdepodobné, dáta o novej stratégii stále vypovedajú. Bez orezania až 24,9 natu: e−24,9 ≈ 1,5 · 10−11, nová stratégia by akcie, z ktorých sa práve učila, takmer nikdy nezahrala.

6. PPO a jazykové modely

V diele o RLHF sme spomenuli, že InstructGPT a prvý ChatGPT sa dolaďovali posilňovaným učením. Bolo to práve PPO: stratégia je jazykový model, stav je doterajší text, akcia je ďalší token, a odmenu na konci odpovede dá model odmeny naučený z ľudských preferencií. Trest za vzdialenie od východiskového modelu (KL) hrá rovnakú úlohu ako orezanie — nedovolí stratégii utiecť tam, kde odmene nemožno veriť.

Definícia — odmena pri doladení jazykového modelu PPO

Nech x je otázka a y = (y1, …, yn) odpoveď (postupnosti tokenov) vygenerovaná ladeným jazykovým modelom πθ, kde πθ(y | x) = ∏k=1n πθ(yk | x, y1, …, yk−1). Nech rφ(x, y) ∈ ℝ je výstup modelu odmeny, πref zmrazený model po doladení na príkladoch (SFT) a β > 0 sila trestu. PPO potom dostane odmenu

R(x, y) = rφ(x, y) − β · log πθ(y | x)/πref(y | x)

(tak to zapisuje InstructGPT, Long Ouyang a kol., 2022). Stredná hodnota druhého člena cez odpovede je presne β · DKL(πθ ‖ πref). Epizóda je jedna odpoveď, akcie sú tokeny, odmena rφ príde až po poslednom tokene; zvyšok je PPO tak, ako je opísané vyššie.

Pri veľkých modeloch je ale PPO drahé: potrebuje okrem modelu aj rovnako veľkú hodnotovú sieť. Preto vznikli zjednodušenia. DPO z dielu o RLHF sa posilňovanému učeniu úplne vyhne. GRPO (DeepSeek, 2024) hodnotovú sieť vypustí a ako základnú úroveň použije priemernú odmenu niekoľkých odpovedí na tú istú otázku — presne tú konštantnú základnú úroveň, ktorú sme merali vyššie. Tak sa učia modely, ktoré „premýšľajú“ nad matematikou a kódom, kde sa správnosť odpovede dá overiť.

Âi = ri − priemer(r1, …, rG)/sd(r1, …, rG)

Âi
výhoda i-tej odpovede; dostanú ju všetky jej tokeny a ďalej ide do orezaného cieľa PPO
ri
odmena i-tej z G odpovedí na tú istú otázku, napríklad 1 = výsledok sedí, 0 = nesedí
priemer(…)
základná úroveň namiesto hodnotovej siete: ako dobre model na túto otázku odpovedá obvykle — ľahká otázka má vysokú latku, ťažká nízku
sd(…)
smerodajná odchýlka skupiny, sd(r1, …, rG) = √∑i=1G (ri − r̄)²/G, kde r̄ je priemer; zrovná mierku, aby otázky s veľkým aj malým rozptylom odmien ťahali rovnako silno (ako normalizácia výhod v našom PPO)
GRPO (Zhihong Shao a kol., DeepSeekMath, 2024): výhoda odpovede = o koľko je lepšia ako ostatné odpovede na tú istú otázku.
Príklad — výhody GRPO pre štyri odpovede

Model odpovie na úlohu štyrikrát, správne len prvýkrát: odmeny (1; 0; 0; 0). Priemer 0,25, smerodajná odchýlka √0,75² + 3 · 0,25²/4 = √0,1875 = 0,433.

Výhody (farby podľa vzorca vyššie): 1 − 0,25/0,433 = 1,732 pre správnu odpoveď a 0 − 0,25/0,433 = −0,577 pre každú z troch zlých. Súčet je nula: správna sa posilní, zlé potlačia. Keby boli všetky štyri odpovede správne (alebo všetky zlé), sú všetky výhody nulové a otázka nič nenaučí — učí sa len z otázok, kde sa model niekedy trafí a niekedy nie. (Delíme G; niektoré implementácie delia G − 1, čísla sa potom mierne líšia.)

7. Zhrnutie

  • Policy gradient učí priamo pravdepodobnosti akcií; funguje aj pre spojité akcie a skúša sám od seba.
  • REINFORCE posilňuje akcie úmerne výnosu, ktorý po nich prišiel; je jednoduchý, ale odhad gradientu má veľký rozptyl.
  • Odčítanie základnej úrovne rozptyl zmenší bez zmeny strednej hodnoty (u nás o 26 % už s konštantou); s naučenou V(s) vzniká actor-critic.
  • PPO využije každú dávku niekoľkokrát a orezaním pomeru pravdepodobností drží stratégiu blízko tej, ktorá dáta nazbierala.
  • Na kyvadle na vozíku: PPO zvládne 500 krokov po 20–30 tisícoch krokov vo všetkých behoch; bez orezania sa stratégia vzďaľuje až o 25 natov a učenie kolíše.
  • PPO dolaďovalo prvý ChatGPT; jeho zjednodušenie (GRPO) dnes učí „premýšľajúce“ modely.

Chcete si to vyskúšať? Nechajte AI agenta pustiť PPO z knižnice Stable-Baselines3 na prostredí LunarLander a meniť ε v orezaní (0,05; 0,2; 0,5) — a nakresliť, ako sa mení rýchlosť a stabilita učenia.

Máte na to iný názor? Napíšte na support@coden-app.com.

Agent na vašom počítači, ovládaný z telefónu