Policy Iteration und Value Iteration

Reinforcement Learning mit Gymnasium in Python

Fouad Trad

Machine Learning Engineer

Policy Iteration

  • Iterativer Prozess zur Bestimmung der optimalen Policy

Bild, das den ersten Schritt zeigt: Initialisierung der Policy.

Reinforcement Learning mit Gymnasium in Python

Policy Iteration

  • Iterativer Prozess zur Bestimmung der optimalen Policy

Bild mit zwei Schritten: Policy initialisieren und evaluieren.

Reinforcement Learning mit Gymnasium in Python

Policy Iteration

  • Iterativer Prozess zur Bestimmung der optimalen Policy

Bild mit drei Schritten: Policy initialisieren, evaluieren und verbessern.

Reinforcement Learning mit Gymnasium in Python

Policy Iteration

  • Iterativer Prozess zur Bestimmung der optimalen Policy

Bild, das zeigt, dass Evaluieren und Verbessern iterativ wiederholt wird, bis sich die Policy nicht mehr ändert.

Reinforcement Learning mit Gymnasium in Python

Policy Iteration

  • Iterativer Prozess zur Bestimmung der optimalen Policy

Bild mit dem Ablauf der Policy Iteration: Start mit Initialisierung, dann abwechselnd Evaluieren und Verbessern, bis eine optimale Policy erreicht ist.

Reinforcement Learning mit Gymnasium in Python

Gridworld

policy = {
    0:1, 1:2, 2:1, 
    3:1, 4:3, 5:1,
    6:2, 7:3
}

Bild mit der Policy und Pfeilen für die Aktion in jedem Zustand.

Reinforcement Learning mit Gymnasium in Python

Policy Evaluation

def policy_evaluation(policy):

V = {state: compute_state_value(state, policy) for state in range(num_states)}
return V
Reinforcement Learning mit Gymnasium in Python

Policy Improvement

def policy_improvement(policy):

improved_policy = {s: 0 for s in range(num_states-1)}
Q = {(state, action): compute_q_value(state, action, policy) for state in range(num_states) for action in range(num_actions)}
for state in range(num_states-1): max_action = max(range(num_actions), key=lambda action: Q[(state, action)]) improved_policy[state] = max_action
return improved_policy
Reinforcement Learning mit Gymnasium in Python

Policy Iteration

def policy_iteration():

policy = {0:1, 1:2, 2:1, 3:1, 4:3, 5:1, 6:2, 7:3}
while True: V = policy_evaluation(policy) improved_policy = policy_improvement(policy)
if improved_policy == policy: break policy = improved_policy
return policy, V
Reinforcement Learning mit Gymnasium in Python

Optimale Policy

policy, V = policy_iteration()
print(policy, V)
{0: 2, 1: 2, 2: 1, 
 3: 1, 4: 2, 5: 1, 
 6: 2, 7: 2} 

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

optimal.png

Reinforcement Learning mit Gymnasium in Python

Value Iteration

  • Kombiniert Policy Evaluation und Improvement in einem Schritt
    • Berechnet die optimale Zustandswertfunktion
    • Leitet daraus die Policy ab

Bild, das den ersten Schritt zeigt: Initialisierung der Zustandswerte V mit Nullen.

Reinforcement Learning mit Gymnasium in Python

Value Iteration

  • Kombiniert Policy Evaluation und Improvement in einem Schritt.
    • Berechnet die optimale Zustandswertfunktion
    • Leitet daraus die Policy ab

Bild mit einem zusätzlichen Schritt: Q-Werte werden mit der V-Tabelle berechnet.

Reinforcement Learning mit Gymnasium in Python

Value Iteration

  • Kombiniert Policy Evaluation und Improvement in einem Schritt.
    • Berechnet die optimale Zustandswertfunktion
    • Leitet daraus die Policy ab

Bild mit einem zusätzlichen Schritt: V wird aktualisiert, indem in jedem Zustand die beste Aktion gewählt wird.

Reinforcement Learning mit Gymnasium in Python

Value Iteration

  • Kombiniert Policy Evaluation und Improvement in einem Schritt.
    • Berechnet die optimale Zustandswertfunktion
    • Leitet daraus die Policy ab

Bild, das zeigt, dass das Berechnen der Q-Werte mit V und das Aktualisieren von V wiederholt wird, bis V stabil ist.

Reinforcement Learning mit Gymnasium in Python

Value Iteration

  • Kombiniert Policy Evaluation und Improvement in einem Schritt.
    • Berechnet die optimale Zustandswertfunktion
    • Leitet daraus die Policy ab

Bild: Nach Abschluss des iterativen Prozesses erhalten wir die optimale Policy und V.

Reinforcement Learning mit Gymnasium in Python

Value Iteration implementieren

V = {state: 0 for state in range(num_states)}
policy = {state:0 for state in range(num_states-1)}
threshold = 0.001

while True: new_V = {state: 0 for state in range(num_states)}
for state in range(num_states-1): max_action, max_q_value = get_max_action_and_value(state, V)
new_V[state] = max_q_value policy[state] = max_action
if all(abs(new_V[state] - V[state]) < thresh for state in V): break V = new_V
Reinforcement Learning mit Gymnasium in Python

Optimale Aktionen und Werte bestimmen

def get_max_action_and_value(state, V):
    Q_values = [compute_q_value(state, action, V) for action in range(num_actions)]

max_action = max(range(num_actions), key=lambda a: Q_values[a])
max_q_value = Q_values[max_action]
return max_action, max_q_value
Reinforcement Learning mit Gymnasium in Python

Q-Werte berechnen

def compute_q_value(state, action, V):
    if state == terminal_state:
        return None
    _, next_state, reward, _ = env.P[state][action][0]
    return reward + gamma * V[next_state]
Reinforcement Learning mit Gymnasium in Python

Optimale Policy

print(policy, V)
{0: 2, 1: 2, 2: 1, 
 3: 1, 4: 2, 5: 1, 
 6: 2, 7: 2} 

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

Bild mit den Zustandswerten der optimalen Policy.

Reinforcement Learning mit Gymnasium in Python

Lass uns üben!

Reinforcement Learning mit Gymnasium in Python

Preparing Video For Download...