Aktionswertfunktionen

Reinforcement Learning mit Gymnasium in Python

Fouad Trad

Machine Learning Engineer

Aktionswertfunktionen (Q-Werte)

  • Erwartete Return von:
    • Start in Zustand $s$
    • Aktion $a$ ausführen
    • Der Policy folgen
  • Schätzt die Attraktivität von Aktionen in Zuständen

Bild: Formel zur Berechnung des Q-Werts Q(s,a) als Summe aus sofortiger Belohnung nach der Aktion und dem diskontierten Wert des neuen Zustands für eine gegebene Policy.

Reinforcement Learning mit Gymnasium in Python

Gitterwelt

Bild: Benutzerdefinierte Umgebung mit 2 Bergen und einem Diamanten.

  • Zustandswerte

Bild: Die zuvor berechneten Zustandswerte für alle Zustände.

Reinforcement Learning mit Gymnasium in Python

Q-Werte – Zustand 4

Bild: Agent in Zustand 4.

  • Agent startet in Zustand 4

Bild: Die zuvor berechneten Zustandswerte für alle Zustände.

Reinforcement Learning mit Gymnasium in Python

Q-Werte – Zustand 4

Bild: Die 4 möglichen Aktionen in Zustand 4 mit ihren Rewards.

  • Agent kann nach oben, unten, links, rechts gehen

Bild: Die zuvor berechneten Zustandswerte für alle Zustände.

Reinforcement Learning mit Gymnasium in Python

Zustand 4 – Aktion unten

Bild: Agent bewegt sich von Zustand 4 nach unten zu Zustand 7.

  • Reward: -2, Zustandswert: 5

Bild: Die zuvor berechneten Zustandswerte für alle Zustände.

Reinforcement Learning mit Gymnasium in Python

Zustand 4 – Aktion unten

Bild: Agent bewegt sich von Zustand 4 nach unten zu Zustand 7; zugehöriger Q-Wert: 3.

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

Bild: Die zuvor berechneten Zustandswerte für alle Zustände.

Reinforcement Learning mit Gymnasium in Python

Zustand 4 – Aktion links

Bild: Agent bewegt sich von Zustand 4 nach links zu Zustand 3; zugehöriger Q-Wert: 1.

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

Bild: Die zuvor berechneten Zustandswerte für alle Zustände.

Reinforcement Learning mit Gymnasium in Python

Zustand 4 – Aktion oben

Bild: Agent bewegt sich von Zustand 4 nach oben zu Zustand 1; zugehöriger Q-Wert: 7.

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

Bild: Die zuvor berechneten Zustandswerte für alle Zustände.

Reinforcement Learning mit Gymnasium in Python

Zustand 4 – Aktion rechts

Bild: Agent bewegt sich von Zustand 4 nach rechts zu Zustand 5; zugehöriger Q-Wert: 9.

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

Bild: Die zuvor berechneten Zustandswerte für alle Zustände.

Reinforcement Learning mit Gymnasium in Python

Alle Q-Werte

Bild: Die berechneten Q-Werte für alle Zustands-Aktions-Paare.

Reinforcement Learning mit Gymnasium in Python

Q-Werte berechnen

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: Formel zur Berechnung des Q-Werts Q(s,a) als Summe aus sofortiger Belohnung nach der Aktion und dem diskontierten Wert des neuen Zustands für eine gegebene Policy.

Reinforcement Learning mit Gymnasium in Python

Q-Werte berechnen

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

print(Q)
Reinforcement Learning mit Gymnasium in Python

Q-Werte berechnen

{(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: Die berechneten Q-Werte für alle Zustands-Aktions-Paare.

Reinforcement Learning mit Gymnasium in Python

Policy verbessern

Bild: Die berechneten Q-Werte für alle Zustands-Aktions-Paare.

Reinforcement Learning mit Gymnasium in Python

Policy verbessern

  • Für jeden Zustand die Aktion mit höchstem Q-Wert wählen

Bild: Alle Q-Werte mit dem jeweils höchsten pro Zustand markiert.

Reinforcement Learning mit Gymnasium in Python

Policy verbessern

Bild: Alte Policy und zugehörige Q-Werte Alte Policy

Bild: Neue Policy beim Wählen der Aktion mit maximalem Q-Wert.

Reinforcement Learning mit Gymnasium in Python

Policy verbessern

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

Lass uns üben!

Reinforcement Learning mit Gymnasium in Python

Preparing Video For Download...