Policies en toestandswaardefuncties

Reinforcement Learning met Gymnasium in Python

Fouad Trad

Machine Learning Engineer

Policies

  • Doel van RL → effectieve policies opstellen
  • Geef aan welke actie per toestand, om opbrengst te maximaliseren

Afbeelding met een grote routekaart.

Reinforcement Learning met Gymnasium in Python

Gridworld-voorbeeld

  • Agent wil de diamant bereiken en bergen vermijden
  • Negen toestanden
  • Deterministische bewegingen

action_numbers_green.png

Afbeelding van de aangepaste omgeving met 9 vakken, 2 bergen en één diamant.

Reinforcement Learning met Gymnasium in Python

Gridworld-voorbeeld - beloningen

  • Gebaseerd op toestanden:
    • Diamant: +10

Afbeelding die laat zien dat bewegingen vanuit aangrenzende vakken naar de diamant een beloning van +10 geven.

Reinforcement Learning met Gymnasium in Python

Gridworld-voorbeeld - beloningen

  • Gebaseerd op toestanden:
    • Diamant: +10
    • Berg: -2

Afbeelding die laat zien dat acties naar bergen leiden tot een beloning van -2.

Reinforcement Learning met Gymnasium in Python

Gridworld-voorbeeld - beloningen

  • Gebaseerd op toestanden:
    • Diamant: +10
    • Berg: -2
    • Andere toestanden: -1

Afbeelding die laat zien dat elke andere beweging een beloning van -1 oplevert.

Reinforcement Learning met Gymnasium in Python

Gridworld-voorbeeld: policy

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

Afbeelding met de policy, met pijlen voor bewegingen tussen toestanden.

Reinforcement Learning met Gymnasium in Python

Toestandswaardefuncties

  • Schat de waarde van een toestand
  • Verwachte opbrengst vanaf toestand, volgend op policy

Afbeelding met de formule van de toestandswaardefunctie als de verdisconteerde opbrengst vanaf toestand s volgens de policy.

Reinforcement Learning met Gymnasium in Python

Gridworld-voorbeeld: toestandswaarden

Afbeelding met de policy, met pijlen voor bewegingen tussen toestanden.

  • Negen toestanden → negen toestandswaarden
  • Discontovoet: $\gamma = 1$
Reinforcement Learning met Gymnasium in Python

Waarde van doeltoestand

Afbeelding met de agent in de doeltoestand.

  • Start in doeltoestand, agent beweegt niet
  • $V(doel\,toestand) = 0$

Afbeelding die laat zien dat de waarde van de doeltoestand 0 is

Reinforcement Learning met Gymnasium in Python

Waarde van toestand 5

Afbeelding met de agent in toestand 5.

  • Start in 5, agent gaat naar doel
  • $V(5) = 10$

Afbeelding die laat zien dat de waarde van toestand 5 gelijk is aan 10

Reinforcement Learning met Gymnasium in Python

Waarde van toestand 2

Afbeelding met de agent in toestand 2.

  • Start in 2, beloningen: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

Afbeelding die laat zien dat de waarde van toestand 2 gelijk is aan 9.

Reinforcement Learning met Gymnasium in Python

Alle toestandswaarden

Afbeelding met alle toestandswaarden voor de 9 toestanden van de omgeving.

Reinforcement Learning met Gymnasium in Python

Bellman-vergelijking

  • Recursieve formule
  • Berekent toestandswaarden

Afbeelding met de Bellman-vergelijking: som van de directe beloning en de verdisconteerde waarde van de volgende toestand.

Reinforcement Learning met Gymnasium in Python

Toestandswaarden berekenen

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)

Afbeelding met de Bellman-vergelijking: som van de directe beloning en de verdisconteerde waarde van de volgende toestand.

Reinforcement Learning met Gymnasium in Python

Toestandswaarden berekenen

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}

Afbeelding met alle toestandswaarden voor de 9 toestanden van de omgeving.

Reinforcement Learning met Gymnasium in Python

Policies wijzigen

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

Afbeelding met de policy, met pijlen voor bewegingen tussen toestanden.

Reinforcement Learning met Gymnasium in Python

Policies vergelijken

Toestandswaarden voor policy 1

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

Afbeelding met de toestandswaarden van policy 1.

Toestandswaarden voor policy 2

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

Afbeelding met de toestandswaarden van policy 2.

Reinforcement Learning met Gymnasium in Python

Laten we oefenen!

Reinforcement Learning met Gymnasium in Python

Preparing Video For Download...