Funcții acțiune-valoare

Reinforcement Learning cu Gymnasium în Python

Fouad Trad

Machine Learning Engineer

Funcții acțiune-valoare (Q-values)

  • Randamentul așteptat al:
    • Pornirii dintr-o stare $s$
    • Executării acțiunii $a$
    • Urmăririi politicii
  • Estimează dezirabilitatea acțiunilor în stări

Imagine care arată formula pentru calculul valorii Q pentru o stare și o acțiune, Q(s,a) ca sumă a recompensei imediate și a valorii actualizate a noii stări calculată pentru o politică specifică.

Reinforcement Learning cu Gymnasium în Python

Lumea grilă

Imagine care arată mediul personalizat cu 2 munți și un diamant.

  • Valorile stărilor

Imagine care arată valorile stărilor calculate anterior pentru toate stările.

Reinforcement Learning cu Gymnasium în Python

Valori Q - starea 4

Imagine care arată agentul în starea 4.

  • Agentul pornește în starea 4

Imagine care arată valorile stărilor calculate anterior pentru toate stările.

Reinforcement Learning cu Gymnasium în Python

Valori Q - starea 4

Imagine care arată cele 4 acțiuni posibile ale agentului în starea 4, împreună cu recompensele lor.

  • Agentul se poate deplasa sus, jos, stânga, dreapta

Imagine care arată valorile stărilor calculate anterior pentru toate stările.

Reinforcement Learning cu Gymnasium în Python

Starea 4 - acțiunea jos

Imagine care arată agentul deplasându-se în jos din starea 4 în starea 7.

  • Recompensă: -2, valoarea stării: 5

Imagine care arată valorile stărilor calculate anterior pentru toate stările.

Reinforcement Learning cu Gymnasium în Python

Starea 4 - acțiunea jos

Imagine care arată agentul deplasându-se în jos din starea 4 în starea 7 și valoarea Q corespunzătoare de 3.

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

Imagine care arată valorile stărilor calculate anterior pentru toate stările.

Reinforcement Learning cu Gymnasium în Python

Starea 4 - acțiunea stânga

Imagine care arată agentul deplasându-se la stânga din starea 4 în starea 3 și valoarea Q corespunzătoare de 1.

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

Imagine care arată valorile stărilor calculate anterior pentru toate stările.

Reinforcement Learning cu Gymnasium în Python

Starea 4 - acțiunea sus

Imagine care arată agentul deplasându-se în sus din starea 4 în starea 1 și valoarea Q corespunzătoare de 7.

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

Imagine care arată valorile stărilor calculate anterior pentru toate stările.

Reinforcement Learning cu Gymnasium în Python

Starea 4 - acțiunea dreapta

Imagine care arată agentul deplasându-se la dreapta din starea 4 în starea 5 și valoarea Q corespunzătoare de 9.

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

Imagine care arată valorile stărilor calculate anterior pentru toate stările.

Reinforcement Learning cu Gymnasium în Python

Toate valorile Q

Imagine care arată valorile Q calculate pentru toate perechile stare-acțiune.

Reinforcement Learning cu Gymnasium în Python

Calculul valorilor Q

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)

Imagine care arată formula pentru calculul valorii Q pentru o stare și o acțiune, Q(s,a) ca sumă a recompensei imediate și a valorii actualizate a noii stări calculată pentru o politică specifică.

Reinforcement Learning cu Gymnasium în Python

Calculul valorilor Q

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

print(Q)
Reinforcement Learning cu Gymnasium în Python

Calculul valorilor Q

{(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}

Imagine care arată valorile Q calculate pentru toate perechile stare-acțiune.

Reinforcement Learning cu Gymnasium în Python

Îmbunătățirea politicii

Imagine care arată valorile Q calculate pentru toate perechile stare-acțiune.

Reinforcement Learning cu Gymnasium în Python

Îmbunătățirea politicii

  • Selectarea pentru fiecare stare a acțiunii cu cea mai mare valoare Q

Imagine care arată valorile Q calculate pentru toate perechile stare-acțiune, cu valoarea Q maximă pentru fiecare stare încercuită.

Reinforcement Learning cu Gymnasium în Python

Îmbunătățirea politicii

Imagine care arată politica veche și valorile Q corespunzătoare. Politica veche

Imagine care arată noua politică atunci când se alege acțiunea cu cea mai mare valoare Q.

Reinforcement Learning cu Gymnasium în Python

Îmbunătățirea politicii

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 cu Gymnasium în Python

Să exersăm!

Reinforcement Learning cu Gymnasium în Python

Preparing Video For Download...