SARSA esperado

Reinforcement Learning con Gymnasium en Python

Fouad Trad

Machine Learning Engineer

SARSA esperado

  • Método TD
  • Técnica sin modelo
  • Actualiza la Q-table distinto a SARSA y Q-learning

Diagrama que muestra los pasos de SARSA esperado: inicializar una Q-table, elegir una acción, recibir una recompensa del entorno y actualizar la tabla. El agente repite el bucle hasta converger tras cierto número de episodios.

Reinforcement Learning con Gymnasium en Python

Actualización SARSA esperado

SARSA

Imagen que muestra la fórmula matemática de la regla de actualización de SARSA.

Q-learning

Imagen que muestra la fórmula matemática de la regla de actualización de Q-learning.

SARSA esperado

Imagen que muestra la fórmula matemática de la regla de actualización de SARSA esperado.

Reinforcement Learning con Gymnasium en Python

Valor esperado del siguiente estado

Imagen que muestra la fórmula matemática de la regla de actualización de SARSA esperado.

  • Tiene en cuenta todas las acciones

Imagen que muestra la fórmula del valor Q esperado para el siguiente estado.

  • Acciones aleatorias → probabilidades iguales

Imagen que muestra la fórmula del valor Q esperado para el siguiente estado cuando las acciones se eligen al azar con igual probabilidad.

Reinforcement Learning con Gymnasium en Python

Implementación con Frozen Lake

env = gym.make('FrozenLake-v1', 
               is_slippery=False)

num_states = env.observation_space.n
num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))

gamma = 0.99 alpha = 0.1 num_episodes = 1000

Imagen del entorno Frozen Lake

Reinforcement Learning con Gymnasium en Python

Regla de actualización de SARSA esperado

def update_q_table(state, action, next_state, reward):

expected_q = np.mean(Q[next_state])
Q[state, action] = (1-alpha) * Q[state, action] + alpha * (reward + gamma * expected_q)

Imagen que muestra la fórmula matemática de la regla de actualización de SARSA esperado.

Reinforcement Learning con Gymnasium en Python

Entrenamiento

for i in range(num_episodes):
    state, info = env.reset()    
    terminated = False  

while not terminated: action = env.action_space.sample()
next_state, reward, terminated, truncated, info = env.step(action)
update_q_table(state, action, next_state, reward) state = next_state
Reinforcement Learning con Gymnasium en Python

Política del agente

policy = {state: np.argmax(Q[state]) 
          for state in range(num_states)}
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 2, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

Imagen que muestra la política aprendida por el agente, indicando qué acción realizar en cada estado.

Reinforcement Learning con Gymnasium en Python

¡Vamos a practicar!

Reinforcement Learning con Gymnasium en Python

Preparing Video For Download...