Politiky a stavové hodnotové funkce

Reinforcement Learning with Gymnasium in Python

Fouad Trad

Machine Learning Engineer

Politiky

  • Cíl RL → formulovat efektivní politiky
  • Určuje, jakou akci zvolit v každém stavu pro maximalizaci návratnosti

Obrázek znázorňující velkou mapu cest.

Reinforcement Learning with Gymnasium in Python

Příklad Grid World

  • Agent se snaží dosáhnout diamantu a vyhnout se horám
  • Devět stavů
  • Deterministické pohyby

action_numbers_green.png

Obrázek znázorňující vlastní prostředí s 9 buňkami mřížky, z nichž 2 jsou hory a jedna je diamant.

Reinforcement Learning with Gymnasium in Python

Příklad Grid World – odměny

  • Přiřazeny na základě stavů:
    • Diamant: +10

Obrázek znázorňující, že pohyb ze sousedních buněk k diamantu přináší odměnu +10.

Reinforcement Learning with Gymnasium in Python

Příklad Grid World – odměny

  • Přiřazeny na základě stavů:
    • Diamant: +10
    • Hora: -2

Obrázek znázorňující, že akce vedoucí k horám přináší odměnu -2.

Reinforcement Learning with Gymnasium in Python

Příklad Grid World – odměny

  • Přiřazeny na základě stavů:
    • Diamant: +10
    • Hora: -2
    • Ostatní stavy: -1

Obrázek znázorňující, že každý jiný pohyb přináší odměnu -1.

Reinforcement Learning with Gymnasium in Python

Příklad Grid World: politika

# 0: left, 1: down, 2: right, 3: up
policy = {
    0:1, 1:2, 2:1, 
    3:1, 4:3, 5:1,
    6:2, 7:3
}

state, info = env.reset() terminated = False while not terminated: action = policy[state] state, reward, terminated, _, _ = env.step(action)

Obrázek znázorňující politiku se šipkami reprezentujícími pohyby mezi stavy.

Reinforcement Learning with Gymnasium in Python

Stavové hodnotové funkce

  • Odhad hodnoty stavu
  • Očekávaná návratnost od stavu při sledování politiky

Obrázek znázorňující vzorec stavové hodnotové funkce jako diskontovanou návratnost od stavu s při sledování politiky.

Reinforcement Learning with Gymnasium in Python

Příklad Grid World: stavové hodnoty

Obrázek znázorňující politiku se šipkami reprezentujícími pohyby mezi stavy.

  • Devět stavů → devět stavových hodnot
  • Diskontní faktor: $\gamma = 1$
Reinforcement Learning with Gymnasium in Python

Hodnota cílového stavu

Obrázek znázorňující agenta v cílovém stavu.

  • Agent v cílovém stavu se nepohybuje
  • $V(goal \, state) = 0$

Obrázek znázorňující, že hodnota cílového stavu je 0.

Reinforcement Learning with Gymnasium in Python

Hodnota stavu 5

Obrázek znázorňující agenta ve stavu 5.

  • Ze stavu 5 agent přejde do cíle
  • $V(5) = 10$

Obrázek znázorňující, že hodnota stavu 5 je 10.

Reinforcement Learning with Gymnasium in Python

Hodnota stavu 2

Obrázek znázorňující agenta ve stavu 2.

  • Ze stavu 2, odměny: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

Obrázek znázorňující, že hodnota stavu 2 je 9.

Reinforcement Learning with Gymnasium in Python

Všechny stavové hodnoty

Obrázek znázorňující všechny stavové hodnoty pro 9 stavů prostředí.

Reinforcement Learning with Gymnasium in Python

Bellmanova rovnice

  • Rekurzivní vzorec
  • Výpočet stavových hodnot

Obrázek znázorňující Bellmanovu rovnici jako součet okamžité odměny aktuálního stavu a diskontované hodnoty následujícího stavu.

Reinforcement Learning with Gymnasium in Python

Výpočet stavových hodnot

def compute_state_value(state):

if state == terminal_state: return 0
action = policy[state]
_, next_state, reward, _ = env.unwrapped.P[state][action][0]
return reward + gamma * compute_state_value(next_state)

Obrázek znázorňující Bellmanovu rovnici jako součet okamžité odměny aktuálního stavu a diskontované hodnoty následujícího stavu.

Reinforcement Learning with Gymnasium in Python

Výpočet stavových hodnot

terminal_state = 8
gamma = 1

V = {state: compute_state_value(state) for state in range(num_states)}
print(V)
{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

Obrázek znázorňující všechny stavové hodnoty pro 9 stavů prostředí.

Reinforcement Learning with Gymnasium in Python

Změna politik

# 0: left, 1: down, 2: right, 3: up
policy_two = {
    0:2, 1:2, 2:1,
    3:2, 4:2, 5:1,
    6:2, 7:2
}

V_2 = {state: compute_state_value(state) for state in range(num_states)} print(V_2)

Obrázek znázorňující politiku se šipkami reprezentujícími pohyby mezi stavy.

Reinforcement Learning with Gymnasium in Python

Porovnání politik

Stavové hodnoty pro politiku 1

{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

Obrázek znázorňující stavové hodnoty politiky 1.

Stavové hodnoty pro politiku 2

{0: 7, 1: 8, 2: 9, 
 3: 7, 4: 9, 5: 10, 
 6: 8, 7: 10, 8: 0}

Obrázek znázorňující stavové hodnoty politiky 2.

Reinforcement Learning with Gymnasium in Python

Pojďme si procvičit!

Reinforcement Learning with Gymnasium in Python

Preparing Video For Download...