Politici și funcții de valoare a stărilor

Reinforcement Learning cu Gymnasium în Python

Fouad Trad

Machine Learning Engineer

Politici

  • Obiectivul RL → formularea unor politici eficiente
  • Specifică acțiunea de luat în fiecare stare pentru a maximiza returul

Imagine care arată o hartă rutieră detaliată.

Reinforcement Learning cu Gymnasium în Python

Exemplu grid world

  • Agentul urmărește să ajungă la diamant evitând munții
  • Nouă stări
  • Mișcări deterministe

action_numbers_green.png

Imagine care arată mediul personalizat cu 9 celule grid, 2 dintre ele sunt munți și una este diamantul.

Reinforcement Learning cu Gymnasium în Python

Exemplu grid world - recompense

  • Acordate în funcție de stări:
    • Diamant: +10

Imagine care arată că mișcările din celulele vecine spre diamant generează o recompensă de +10.

Reinforcement Learning cu Gymnasium în Python

Exemplu grid world - recompense

  • Acordate în funcție de stări:
    • Diamant: +10
    • Munte: -2

Imagine care arată că acțiunile care duc la munți generează o recompensă de -2.

Reinforcement Learning cu Gymnasium în Python

Exemplu grid world - recompense

  • Acordate în funcție de stări:
    • Diamant: +10
    • Munte: -2
    • Alte stări: -1

Imagine care arată că orice altă mișcare generează o recompensă de -1.

Reinforcement Learning cu Gymnasium în Python

Exemplu grid world: politica

# 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)

Imagine care arată politica prin săgeți ce reprezintă mișcările între stări.

Reinforcement Learning cu Gymnasium în Python

Funcții de valoare a stărilor

  • Estimează valoarea unei stări
  • Returul așteptat pornind dintr-o stare, urmând politica

Imagine care arată formula funcției de valoare a stării ca returul actualizat pornind din starea s urmând politica.

Reinforcement Learning cu Gymnasium în Python

Exemplu grid world: valori de stare

Imagine care arată politica prin săgeți ce reprezintă mișcările între stări.

  • Nouă stări → nouă valori de stare
  • Factor de actualizare: $\gamma = 1$
Reinforcement Learning cu Gymnasium în Python

Valoarea stării obiectiv

Imagine care arată agentul în starea obiectiv.

  • Pornind din starea obiectiv, agentul nu se mișcă
  • $V(goal \, state) = 0$

Imagine care arată că valoarea stării obiectiv este 0.

Reinforcement Learning cu Gymnasium în Python

Valoarea stării 5

Imagine care arată agentul în starea 5.

  • Pornind din 5, agentul se mută la obiectiv
  • $V(5) = 10$

Imagine care arată că valoarea stării 5 este 10.

Reinforcement Learning cu Gymnasium în Python

Valoarea stării 2

Imagine care arată agentul în starea 2.

  • Pornind din 2, recompense: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

Imagine care arată că valoarea stării 2 este 9.

Reinforcement Learning cu Gymnasium în Python

Toate valorile de stare

Imagine care arată toate valorile de stare pentru cele 9 stări ale mediului.

Reinforcement Learning cu Gymnasium în Python

Ecuația Bellman

  • Formulă recursivă
  • Calculează valorile de stare

Imagine care arată ecuația Bellman ca suma recompensei imediate a stării curente cu valoarea actualizată a stării următoare.

Reinforcement Learning cu Gymnasium în Python

Calculul valorilor de stare

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)

Imagine care arată ecuația Bellman ca suma recompensei imediate a stării curente cu valoarea actualizată a stării următoare.

Reinforcement Learning cu Gymnasium în Python

Calculul valorilor de stare

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}

Imagine care arată toate valorile de stare pentru cele 9 stări ale mediului.

Reinforcement Learning cu Gymnasium în Python

Schimbarea politicilor

# 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)

Imagine care arată politica prin săgeți ce reprezintă mișcările între stări.

Reinforcement Learning cu Gymnasium în Python

Compararea politicilor

Valori de stare pentru politica 1

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

Imagine care arată valorile de stare ale politicii 1.

Valori de stare pentru politica 2

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

Imagine care arată valorile de stare ale politicii 2.

Reinforcement Learning cu Gymnasium în Python

Să exersăm!

Reinforcement Learning cu Gymnasium în Python

Preparing Video For Download...