Actiewaardefuncties

Reinforcement Learning met Gymnasium in Python

Fouad Trad

Machine Learning Engineer

Actiewaardefuncties (Q-waarden)

  • Verwachte opbrengst van:
    • Start in toestand $s$
    • Neem actie $a$
    • Volg het beleid
  • Schat wenselijkheid van acties binnen toestanden

Afbeelding met de formule om de q_value voor een toestand en actie te berekenen, Q(s,a) als de som van de directe beloning na een actie en de verdisconteerde waarde van de nieuwe toestand voor een specifiek beleid.

Reinforcement Learning met Gymnasium in Python

Gridwereld

Afbeelding van de aangepaste omgeving met 2 bergen en een diamant.

  • Toestandwaarden

Afbeelding met de eerder berekende toestandwaarden voor alle toestanden.

Reinforcement Learning met Gymnasium in Python

Q-waarden - toestand 4

Afbeelding waarop de agent in toestand 4 staat.

  • Agent geboren in toestand 4

Afbeelding met de eerder berekende toestandwaarden voor alle toestanden.

Reinforcement Learning met Gymnasium in Python

Q-waarden - toestand 4

Afbeelding met de 4 acties die een agent in toestand 4 kan doen met hun beloningen.

  • Agent kan omhoog, omlaag, links, rechts

Afbeelding met de eerder berekende toestandwaarden voor alle toestanden.

Reinforcement Learning met Gymnasium in Python

Toestand 4 - actie omlaag

Afbeelding waarop de agent omlaag gaat van toestand 4 naar 7.

  • Beloning: -2, toestandwaarde: 5

Afbeelding met de eerder berekende toestandwaarden voor alle toestanden.

Reinforcement Learning met Gymnasium in Python

Toestand 4 - actie omlaag

Afbeelding waarop de agent omlaag gaat van toestand 4 naar 7, met de bijbehorende q-waarde 3.

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

Afbeelding met de eerder berekende toestandwaarden voor alle toestanden.

Reinforcement Learning met Gymnasium in Python

Toestand 4 - actie links

Afbeelding waarop de agent naar links gaat van toestand 4 naar 3, met de bijbehorende q-waarde 1.

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

Afbeelding met de eerder berekende toestandwaarden voor alle toestanden.

Reinforcement Learning met Gymnasium in Python

Toestand 4 - actie omhoog

Afbeelding waarop de agent omhoog gaat van toestand 4 naar 1, met de bijbehorende q-waarde 7.

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

Afbeelding met de eerder berekende toestandwaarden voor alle toestanden.

Reinforcement Learning met Gymnasium in Python

Toestand 4 - actie rechts

Afbeelding waarop de agent naar rechts gaat van toestand 4 naar 5, met de bijbehorende q-waarde 9.

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

Afbeelding met de eerder berekende toestandwaarden voor alle toestanden.

Reinforcement Learning met Gymnasium in Python

Alle Q-waarden

Afbeelding met de q-waarden die we voor alle toestand-actiekoppels hebben berekend.

Reinforcement Learning met Gymnasium in Python

Q-waarden berekenen

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)

Afbeelding met de formule om de q_value voor een toestand en actie te berekenen, Q(s,a) als de som van de directe beloning na een actie en de verdisconteerde waarde van de nieuwe toestand voor een specifiek beleid.

Reinforcement Learning met Gymnasium in Python

Q-waarden berekenen

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

print(Q)
Reinforcement Learning met Gymnasium in Python

Q-waarden berekenen

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

Afbeelding met de q-waarden die we voor alle toestand-actiekoppels hebben berekend.

Reinforcement Learning met Gymnasium in Python

Het beleid verbeteren

Afbeelding met de q-waarden die we voor alle toestand-actiekoppels hebben berekend.

Reinforcement Learning met Gymnasium in Python

Het beleid verbeteren

  • Kies per toestand de actie met hoogste Q-waarde

Afbeelding met de q-waarden voor alle toestand-actiekoppels, met de maximale q-waarde per toestand omcirkeld.

Reinforcement Learning met Gymnasium in Python

Het beleid verbeteren

Afbeelding met het oude beleid en de bijbehorende Q-waarden Oud beleid

Afbeelding met het nieuwe beleid bij het kiezen van de actie met de maximale q-waarde.

Reinforcement Learning met Gymnasium in Python

Het beleid verbeteren

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 met Gymnasium in Python

Laten we oefenen!

Reinforcement Learning met Gymnasium in Python

Preparing Video For Download...