Handlingsvärdesfunktioner

Reinforcement Learning med Gymnasium i Python

Fouad Trad

Machine Learning Engineer

Handlingsvärdesfunktioner (Q-värden)

  • Förväntat avkastning för:
    • Startar i tillstånd $s$
    • Utför åtgärd $a$
    • Följer policyn
  • Uppskattar hur önskvärda åtgärder är i olika tillstånd

Bild som visar formeln för att beräkna q-värdet för ett tillstånd och en åtgärd, Q(s,a) som summan av den direkta belöningen efter en åtgärd och det diskonterade värdet av det nya tillståndet beräknat för en specifik policy.

Reinforcement Learning med Gymnasium i Python

Rutnätsvärld

Bild som visar den anpassade miljön med 2 berg och en diamant.

  • Tillståndsvärden

Bild som visar de tillståndsvärden vi beräknade tidigare för alla tillstånd.

Reinforcement Learning med Gymnasium i Python

Q-värden – tillstånd 4

Bild som visar agenten i tillstånd 4.

  • Agenten startar i tillstånd 4

Bild som visar de tillståndsvärden vi beräknade tidigare för alla tillstånd.

Reinforcement Learning med Gymnasium i Python

Q-värden – tillstånd 4

Bild som visar de 4 åtgärder agenten kan utföra i tillstånd 4 tillsammans med deras belöningar.

  • Agenten kan röra sig upp, ned, vänster, höger

Bild som visar de tillståndsvärden vi beräknade tidigare för alla tillstånd.

Reinforcement Learning med Gymnasium i Python

Tillstånd 4 – åtgärd ned

Bild som visar agenten som rör sig nedåt från tillstånd 4 till tillstånd 7.

  • Belöning: -2, tillståndsvärde: 5

Bild som visar de tillståndsvärden vi beräknade tidigare för alla tillstånd.

Reinforcement Learning med Gymnasium i Python

Tillstånd 4 – åtgärd ned

Bild som visar agenten som rör sig nedåt från tillstånd 4 till tillstånd 7, samt motsvarande q-värde på 3.

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

Bild som visar de tillståndsvärden vi beräknade tidigare för alla tillstånd.

Reinforcement Learning med Gymnasium i Python

Tillstånd 4 – åtgärd vänster

Bild som visar agenten som rör sig till vänster från tillstånd 4 till tillstånd 3, samt motsvarande q-värde på 1.

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

Bild som visar de tillståndsvärden vi beräknade tidigare för alla tillstånd.

Reinforcement Learning med Gymnasium i Python

Tillstånd 4 – åtgärd upp

Bild som visar agenten som rör sig uppåt från tillstånd 4 till tillstånd 1, samt motsvarande q-värde på 7.

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

Bild som visar de tillståndsvärden vi beräknade tidigare för alla tillstånd.

Reinforcement Learning med Gymnasium i Python

Tillstånd 4 – åtgärd höger

Bild som visar agenten som rör sig till höger från tillstånd 4 till tillstånd 5, samt motsvarande q-värde på 9.

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

Bild som visar de tillståndsvärden vi beräknade tidigare för alla tillstånd.

Reinforcement Learning med Gymnasium i Python

Alla Q-värden

Bild som visar de Q-värden vi beräknade för alla tillstånds-åtgärdspar.

Reinforcement Learning med Gymnasium i Python

Beräkna Q-värden

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)

Bild som visar formeln för att beräkna q-värdet för ett tillstånd och en åtgärd, Q(s,a) som summan av den direkta belöningen efter en åtgärd och det diskonterade värdet av det nya tillståndet beräknat för en specifik policy.

Reinforcement Learning med Gymnasium i Python

Beräkna Q-värden

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

print(Q)
Reinforcement Learning med Gymnasium i Python

Beräkna Q-värden

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

Bild som visar de Q-värden vi beräknade för alla tillstånds-åtgärdspar.

Reinforcement Learning med Gymnasium i Python

Förbättra policyn

Bild som visar de Q-värden vi beräknade för alla tillstånds-åtgärdspar.

Reinforcement Learning med Gymnasium i Python

Förbättra policyn

  • Välj för varje tillstånd den åtgärd med högst Q-värde

Bild som visar de Q-värden vi beräknade för alla tillstånds-åtgärdspar, med det högsta Q-värdet för varje tillstånd inringat.

Reinforcement Learning med Gymnasium i Python

Förbättra policyn

Bild som visar den gamla policyn och dess Q-värden. Gammal policy

Bild som visar den nya policyn när åtgärden som leder till det högsta Q-värdet väljs.

Reinforcement Learning med Gymnasium i Python

Förbättra policyn

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 med Gymnasium i Python

Nu kör vi en övning!

Reinforcement Learning med Gymnasium i Python

Preparing Video For Download...