Funkce hodnoty akce

Reinforcement Learning with Gymnasium in Python

Fouad Trad

Machine Learning Engineer

Funkce hodnoty akce (Q-hodnoty)

  • Očekávaný výnos pro:
    • Počáteční stav $s$
    • Provedení akce $a$
    • Sledování politiky
  • Odhaduje vhodnost akcí ve stavech

Obrázek ukazující vzorec pro výpočet Q-hodnoty stavu a akce, Q(s,a) jako součet okamžité odměny po provedení akce a diskontované hodnoty nového stavu pro danou politiku.

Reinforcement Learning with Gymnasium in Python

Mřížkový svět

Obrázek ukazující vlastní prostředí se 2 horami a diamantem.

  • Hodnoty stavů

Obrázek ukazující hodnoty stavů vypočítané dříve pro všechny stavy.

Reinforcement Learning with Gymnasium in Python

Q-hodnoty – stav 4

Obrázek ukazující agenta ve stavu 4.

  • Agent vznikne ve stavu 4

Obrázek ukazující hodnoty stavů vypočítané dříve pro všechny stavy.

Reinforcement Learning with Gymnasium in Python

Q-hodnoty – stav 4

Obrázek ukazující 4 akce, které může agent provést ve stavu 4, spolu s jejich odměnami.

  • Agent se může pohybovat nahoru, dolů, vlevo, vpravo

Obrázek ukazující hodnoty stavů vypočítané dříve pro všechny stavy.

Reinforcement Learning with Gymnasium in Python

Stav 4 – akce dolů

Obrázek ukazující agenta pohybujícího se dolů ze stavu 4 do stavu 7.

  • Odměna: -2, hodnota stavu: 5

Obrázek ukazující hodnoty stavů vypočítané dříve pro všechny stavy.

Reinforcement Learning with Gymnasium in Python

Stav 4 – akce dolů

Obrázek ukazující agenta pohybujícího se dolů ze stavu 4 do stavu 7 a odpovídající Q-hodnotu 3.

  • $Q(4, \text{down}) = -2 + 1 \times 5 = 3$

Obrázek ukazující hodnoty stavů vypočítané dříve pro všechny stavy.

Reinforcement Learning with Gymnasium in Python

Stav 4 – akce vlevo

Obrázek ukazující agenta pohybujícího se vlevo ze stavu 4 do stavu 3 a odpovídající Q-hodnotu 1.

  • $Q(4, \text{left}) = -1 + 1 \times 2 = 1$

Obrázek ukazující hodnoty stavů vypočítané dříve pro všechny stavy.

Reinforcement Learning with Gymnasium in Python

Stav 4 – akce nahoru

Obrázek ukazující agenta pohybujícího se nahoru ze stavu 4 do stavu 1 a odpovídající Q-hodnotu 7.

  • $Q(4, \text{up}) = -1 + 1 \times 8 = 7$

Obrázek ukazující hodnoty stavů vypočítané dříve pro všechny stavy.

Reinforcement Learning with Gymnasium in Python

Stav 4 – akce vpravo

Obrázek ukazující agenta pohybujícího se vpravo ze stavu 4 do stavu 5 a odpovídající Q-hodnotu 9.

  • $Q(4, \text{right}) = -1 + 1 \times 10 = 9$

Obrázek ukazující hodnoty stavů vypočítané dříve pro všechny stavy.

Reinforcement Learning with Gymnasium in Python

Všechny Q-hodnoty

Obrázek ukazující Q-hodnoty vypočítané pro všechny dvojice stav–akce.

Reinforcement Learning with Gymnasium in Python

Výpočet Q-hodnot

def compute_q_value(state, action):

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

Obrázek ukazující vzorec pro výpočet Q-hodnoty stavu a akce, Q(s,a) jako součet okamžité odměny po provedení akce a diskontované hodnoty nového stavu pro danou politiku.

Reinforcement Learning with Gymnasium in Python

Výpočet Q-hodnot

Q = {(state, action): compute_q_value(state, action)
     for state in range(num_states) 
     for action in range(num_actions)}

print(Q)
Reinforcement Learning with Gymnasium in Python

Výpočet Q-hodnot

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

Obrázek ukazující Q-hodnoty vypočítané pro všechny dvojice stav–akce.

Reinforcement Learning with Gymnasium in Python

Zlepšení politiky

Obrázek ukazující Q-hodnoty vypočítané pro všechny dvojice stav–akce.

Reinforcement Learning with Gymnasium in Python

Zlepšení politiky

  • Pro každý stav se vybere akce s nejvyšší Q-hodnotou

Obrázek ukazující Q-hodnoty pro všechny dvojice stav–akce s vyznačenou maximální Q-hodnotou pro každý stav.

Reinforcement Learning with Gymnasium in Python

Zlepšení politiky

Obrázek ukazující starou politiku a odpovídající Q-hodnoty. Stará politika

Obrázek ukazující novou politiku při výběru akce s maximální Q-hodnotou.

Reinforcement Learning with Gymnasium in Python

Zlepšení politiky

improved_policy = {}


for state in range(num_states-1): max_action = max(range(num_actions), key=lambda action: Q[(state, action)])
improved_policy[state] = max_action
print(improved_policy)
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 1, 
 6: 2, 7: 2}
Reinforcement Learning with Gymnasium in Python

Pojďme procvičovat!

Reinforcement Learning with Gymnasium in Python

Preparing Video For Download...