Políticas e funções de valor de estado

Reinforcement Learning com Gymnasium em Python

Fouad Trad

Machine Learning Engineer

Políticas

  • Objetivo de RL → criar políticas eficazes
  • Especifica a ação em cada estado para maximizar o retorno

Imagem mostrando um grande roadmap.

Reinforcement Learning com Gymnasium em Python

Exemplo grid world

  • Agente quer chegar ao diamante evitando montanhas
  • Nove estados
  • Movimentos determinísticos

action_numbers_green.png

Imagem mostrando o ambiente com 9 células, 2 montanhas e 1 diamante.

Reinforcement Learning com Gymnasium em Python

Exemplo grid world - recompensas

  • Definidas por estado:
    • Diamante: +10

Imagem mostrando que movimentos de células vizinhas ao diamante rendem recompensa de +10.

Reinforcement Learning com Gymnasium em Python

Exemplo grid world - recompensas

  • Definidas por estado:
    • Diamante: +10
    • Montanha: -2

Imagem mostrando que ações que levam às montanhas resultam em recompensa de -2.

Reinforcement Learning com Gymnasium em Python

Exemplo grid world - recompensas

  • Definidas por estado:
    • Diamante: +10
    • Montanha: -2
    • Outros estados: -1

Imagem mostrando que qualquer outro movimento resulta em recompensa de -1.

Reinforcement Learning com Gymnasium em Python

Exemplo grid world: política

# 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)

Imagem mostrando a política com setas representando os movimentos entre estados.

Reinforcement Learning com Gymnasium em Python

Funções de valor de estado

  • Estima o valor do estado
  • Retorno esperado a partir do estado seguindo a política

Imagem mostrando a fórmula da função de valor de estado como o retorno descontado ao iniciar no estado s e seguir a política.

Reinforcement Learning com Gymnasium em Python

Exemplo grid world: valores de estado

Imagem mostrando a política com setas representando os movimentos entre estados.

  • Nove estados → nove valores de estado
  • Fator de desconto: $\gamma = 1$
Reinforcement Learning com Gymnasium em Python

Valor do estado objetivo

Imagem mostrando o agente no estado objetivo.

  • Começando no objetivo, o agente não se move
  • $V(estado\, objetivo) = 0$

Imagem mostrando que o valor do estado objetivo é 0

Reinforcement Learning com Gymnasium em Python

Valor do estado 5

Imagem mostrando o agente no estado 5.

  • Começando no 5, o agente vai ao objetivo
  • $V(5) = 10$

Imagem mostrando que o valor do estado 5 é 10

Reinforcement Learning com Gymnasium em Python

Valor do estado 2

Imagem mostrando o agente no estado 2.

  • Começando no 2, recompensas: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

Imagem mostrando que o valor do estado 2 é 9.

Reinforcement Learning com Gymnasium em Python

Todos os valores de estado

Imagem mostrando todos os valores de estado para os 9 estados do ambiente.

Reinforcement Learning com Gymnasium em Python

Equação de Bellman

  • Fórmula recursiva
  • Calcula valores de estado

Imagem mostrando a equação de Bellman como a soma da recompensa imediata do estado atual com o valor descontado do próximo estado.

Reinforcement Learning com Gymnasium em Python

Calculando valores de estado

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)

Imagem mostrando a equação de Bellman como a soma da recompensa imediata do estado atual com o valor descontado do próximo estado.

Reinforcement Learning com Gymnasium em Python

Calculando valores de estado

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}

Imagem mostrando todos os valores de estado para os 9 estados do ambiente.

Reinforcement Learning com Gymnasium em Python

Trocando políticas

# 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)

Imagem mostrando a política com setas representando os movimentos entre estados.

Reinforcement Learning com Gymnasium em Python

Comparando políticas

Valores de estado da política 1

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

Imagem mostrando valores de estado da política 1.

Valores de estado da política 2

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

Imagem mostrando valores de estado da política 2.

Reinforcement Learning com Gymnasium em Python

Vamos praticar!

Reinforcement Learning com Gymnasium em Python

Preparing Video For Download...