Policyiteration och värdeiteration

Reinforcement Learning med Gymnasium i Python

Fouad Trad

Machine Learning Engineer

Policyiteration

  • Iterativ process för att hitta optimal policy

Bild som visar det första steget: initiering av policyn.

Reinforcement Learning med Gymnasium i Python

Policyiteration

  • Iterativ process för att hitta optimal policy

Bild som visar två steg: initiering och utvärdering av en policy.

Reinforcement Learning med Gymnasium i Python

Policyiteration

  • Iterativ process för att hitta optimal policy

Bild som visar de tre stegen: initiering, utvärdering och förbättring av policyn.

Reinforcement Learning med Gymnasium i Python

Policyiteration

  • Iterativ process för att hitta optimal policy

Bild som visar att processen med att utvärdera och förbättra policyn är iterativ och upprepas tills policyn inte längre förändras.

Reinforcement Learning med Gymnasium i Python

Policyiteration

  • Iterativ process för att hitta optimal policy

Bild som visar flödet i policyiteration: börjar med initiering av en policy, växlar sedan mellan utvärdering och förbättring, och når till slut en optimal policy.

Reinforcement Learning med Gymnasium i Python

Grid world

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

Bild som visar policyn med pilar för att representera rörelsen i varje tillstånd.

Reinforcement Learning med Gymnasium i Python

Policyutvärdering

def policy_evaluation(policy):

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

Policyförbättring

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

Policyiteration

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

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

Värdeiteration

  • Kombinerar policyutvärdering och förbättring i ett steg
    • Beräknar den optimala tillståndsvärdesfunktionen
    • Härleder policyn från den

Bild som visar det första steget: initiering av tillståndsvärdena V med nollor.

Reinforcement Learning med Gymnasium i Python

Värdeiteration

  • Kombinerar policyutvärdering och förbättring i ett steg.
    • Beräknar den optimala tillståndsvärdesfunktionen
    • Härleder policyn från den

Bild som visar ett ytterligare steg: beräkning av Q-värden med hjälp av V-tabellen.

Reinforcement Learning med Gymnasium i Python

Värdeiteration

  • Kombinerar policyutvärdering och förbättring i ett steg.
    • Beräknar den optimala tillståndsvärdesfunktionen
    • Härleder policyn från den

Bild som visar ett ytterligare steg: uppdatering av V genom att välja den bästa åtgärden i varje tillstånd.

Reinforcement Learning med Gymnasium i Python

Värdeiteration

  • Kombinerar policyutvärdering och förbättring i ett steg.
    • Beräknar den optimala tillståndsvärdesfunktionen
    • Härleder policyn från den

Bild som visar att processen med att beräkna Q-värden med V och uppdatera V upprepas tills V inte längre förändras.

Reinforcement Learning med Gymnasium i Python

Värdeiteration

  • Kombinerar policyutvärdering och förbättring i ett steg.
    • Beräknar den optimala tillståndsvärdesfunktionen
    • Härleder policyn från den

Bild som visar att när den iterativa processen är klar erhålls den optimala policyn och V.

Reinforcement Learning med Gymnasium i Python

Implementera värdeiteration

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

Hämta optimala åtgärder och värden

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

Beräkna Q-värden

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

Optimal 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 som visar tillståndsvärdena för den optimala policyn.

Reinforcement Learning med Gymnasium i Python

Nu kör vi en övning!

Reinforcement Learning med Gymnasium i Python

Preparing Video For Download...