Policies och tillståndsvärdesfunktioner

Reinforcement Learning med Gymnasium i Python

Fouad Trad

Machine Learning Engineer

Policies

  • RL-mål → formulera effektiva policies
  • Ange vilken åtgärd som ska vidtas i varje tillstånd för att maximera avkastningen

Bild som visar en stor vägkarta.

Reinforcement Learning med Gymnasium i Python

Rutnätsvärld – exempel

  • Agenten strävar efter att nå diamanten och undvika berg
  • Nio tillstånd
  • Deterministiska rörelser

action_numbers_green.png

Bild som visar den anpassade miljön med 9 rutnätsceller, varav 2 är berg och en är diamanten.

Reinforcement Learning med Gymnasium i Python

Rutnätsvärld – belöningar

  • Ges baserat på tillstånd:
    • Diamant: +10

Bild som visar att rörelser från angränsande celler till diamanten ger en belöning på +10.

Reinforcement Learning med Gymnasium i Python

Rutnätsvärld – belöningar

  • Ges baserat på tillstånd:
    • Diamant: +10
    • Berg: -2

Bild som visar att åtgärder som leder till berg ger en belöning på -2.

Reinforcement Learning med Gymnasium i Python

Rutnätsvärld – belöningar

  • Ges baserat på tillstånd:
    • Diamant: +10
    • Berg: -2
    • Övriga tillstånd: -1

Bild som visar att övriga rörelser ger en belöning på -1.

Reinforcement Learning med Gymnasium i Python

Rutnätsvärld – policy

# 0: left, 1: down, 2: right, 3: up
policy = {
    0:1, 1:2, 2:1, 
    3:1, 4:3, 5:1,
    6:2, 7:3
}

state, info = env.reset() terminated = False while not terminated: action = policy[state] state, reward, terminated, _, _ = env.step(action)

Bild som visar policyn med pilar för att representera rörelser mellan tillstånden.

Reinforcement Learning med Gymnasium i Python

Tillståndsvärdesfunktioner

  • Beräknar tillståndets värde
  • Förväntad avkastning från ett tillstånd, givet en policy

Bild som visar formeln för tillståndsvärdesfunktionen som den diskonterade avkastningen från tillstånd s med given policy.

Reinforcement Learning med Gymnasium i Python

Rutnätsvärld – tillståndsvärden

Bild som visar policyn med pilar för att representera rörelser mellan tillstånden.

  • Nio tillstånd → nio tillståndsvärden
  • Diskonteringsfaktor: $\gamma = 1$
Reinforcement Learning med Gymnasium i Python

Värdet av måltillståndet

Bild som visar agenten i måltillståndet.

  • Agenten rör sig inte från måltillståndet
  • $V(goal \, state) = 0$

Bild som visar att värdet av måltillståndet är 0.

Reinforcement Learning med Gymnasium i Python

Värdet av tillstånd 5

Bild som visar agenten i tillstånd 5.

  • Från tillstånd 5 rör sig agenten till målet
  • $V(5) = 10$

Bild som visar att värdet av tillstånd 5 är 10.

Reinforcement Learning med Gymnasium i Python

Värdet av tillstånd 2

Bild som visar agenten i tillstånd 2.

  • Från tillstånd 2, belöningar: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

Bild som visar att värdet av tillstånd 2 är 9.

Reinforcement Learning med Gymnasium i Python

Alla tillståndsvärden

Bild som visar alla tillståndsvärden för de 9 tillstånden i miljön.

Reinforcement Learning med Gymnasium i Python

Bellmans ekvation

  • Rekursiv formel
  • Beräknar tillståndsvärden

Bild som visar Bellmans ekvation som summan av den omedelbara belöningen för det aktuella tillståndet och det diskonterade värdet av nästa tillstånd.

Reinforcement Learning med Gymnasium i Python

Beräkning av tillståndsvärden

def compute_state_value(state):

if state == terminal_state: return 0
action = policy[state]
_, next_state, reward, _ = env.unwrapped.P[state][action][0]
return reward + gamma * compute_state_value(next_state)

Bild som visar Bellmans ekvation som summan av den omedelbara belöningen för det aktuella tillståndet och det diskonterade värdet av nästa tillstånd.

Reinforcement Learning med Gymnasium i Python

Beräkning av tillståndsvärden

terminal_state = 8
gamma = 1

V = {state: compute_state_value(state) for state in range(num_states)}
print(V)
{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

Bild som visar alla tillståndsvärden för de 9 tillstånden i miljön.

Reinforcement Learning med Gymnasium i Python

Ändra policies

# 0: left, 1: down, 2: right, 3: up
policy_two = {
    0:2, 1:2, 2:1,
    3:2, 4:2, 5:1,
    6:2, 7:2
}

V_2 = {state: compute_state_value(state) for state in range(num_states)} print(V_2)

Bild som visar policyn med pilar för att representera rörelser mellan tillstånden.

Reinforcement Learning med Gymnasium i Python

Jämföra policies

Tillståndsvärden för policy 1

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

Bild som visar tillståndsvärden för policy 1.

Tillståndsvärden för policy 2

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

Bild som visar tillståndsvärden för policy 2.

Reinforcement Learning med Gymnasium i Python

Nu kör vi en övning!

Reinforcement Learning med Gymnasium i Python

Preparing Video For Download...