Funções valor-ação

Reinforcement Learning com Gymnasium em Python

Fouad Trad

Machine Learning Engineer

Funções valor-ação (Q-values)

  • Retorno esperado de:
    • Começando no estado $s$
    • Tomando a ação $a$
    • Seguindo a política
  • Estima a qualidade das ações em cada estado

Imagem mostrando a fórmula para calcular o q_value de um estado e ação, Q(s,a), como a soma da recompensa imediata após executar a ação e o valor descontado do novo estado para uma política específica.

Reinforcement Learning com Gymnasium em Python

Mundo em grade

Imagem mostrando o ambiente customizado com 2 montanhas e um diamante.

  • Valores de estado

Imagem mostrando os valores de estado calculados antes para todos os estados.

Reinforcement Learning com Gymnasium em Python

Q-values - estado 4

Imagem mostrando o agente no estado 4.

  • Agente nasce no estado 4

Imagem mostrando os valores de estado calculados antes para todos os estados.

Reinforcement Learning com Gymnasium em Python

Q-values - estado 4

Imagem mostrando as 4 ações que um agente pode fazer no estado 4 e suas recompensas.

  • O agente pode mover para cima, baixo, esquerda, direita

Imagem mostrando os valores de estado calculados antes para todos os estados.

Reinforcement Learning com Gymnasium em Python

Estado 4 - ação descer

Imagem mostrando o agente descendo do estado 4 para o estado 7.

  • Recompensa: -2, valor de estado: 5

Imagem mostrando os valores de estado calculados antes para todos os estados.

Reinforcement Learning com Gymnasium em Python

Estado 4 - ação descer

Imagem mostrando o agente descendo do estado 4 para o estado 7, e o q-valor correspondente de 3.

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

Imagem mostrando os valores de estado calculados antes para todos os estados.

Reinforcement Learning com Gymnasium em Python

Estado 4 - ação esquerda

Imagem mostrando o agente indo para a esquerda do estado 4 para o 3, e o q-valor correspondente de 1.

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

Imagem mostrando os valores de estado calculados antes para todos os estados.

Reinforcement Learning com Gymnasium em Python

Estado 4 - ação subir

Imagem mostrando o agente subindo do estado 4 para o 1, e o q-valor correspondente de 7.

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

Imagem mostrando os valores de estado calculados antes para todos os estados.

Reinforcement Learning com Gymnasium em Python

Estado 4 - ação direita

Imagem mostrando o agente indo para a direita do estado 4 para o 5, e o q-valor correspondente de 9.

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

Imagem mostrando os valores de estado calculados antes para todos os estados.

Reinforcement Learning com Gymnasium em Python

Todos os Q-values

Imagem mostrando os q-valores calculados para todos os pares estado-ação.

Reinforcement Learning com Gymnasium em Python

Calculando Q-values

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)

Imagem mostrando a fórmula para calcular o q_value de um estado e ação, Q(s,a), como a soma da recompensa imediata após executar a ação e o valor descontado do novo estado para uma política específica.

Reinforcement Learning com Gymnasium em Python

Calculando Q-values

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

print(Q)
Reinforcement Learning com Gymnasium em Python

Calculando Q-values

{(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}

Imagem mostrando os q-valores calculados para todos os pares estado-ação.

Reinforcement Learning com Gymnasium em Python

Melhorando a política

Imagem mostrando os q-valores calculados para todos os pares estado-ação.

Reinforcement Learning com Gymnasium em Python

Melhorando a política

  • Selecionar, em cada estado, a ação com maior Q-value

Imagem mostrando os q-valores calculados para todos os pares estado-ação, com o máximo de cada estado circulado.

Reinforcement Learning com Gymnasium em Python

Melhorando a política

Imagem mostrando a política antiga e seus Q-values correspondentes Política antiga

Imagem mostrando a nova política ao tomar a ação com maior q-valor.

Reinforcement Learning com Gymnasium em Python

Melhorando a política

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 com Gymnasium em Python

Vamos praticar!

Reinforcement Learning com Gymnasium em Python

Preparing Video For Download...