Aprendizaje por diferencia temporal

Reinforcement Learning con Gymnasium en Python

Fouad Trad

Machine Learning Engineer

TD vs. Monte Carlo

 

Aprendizaje TD
  • Sin modelo
  • Estima la Q-table por interacción
  • Actualiza la Q-table en cada paso del episodio
  • Adecuado para episodios largos/indefinidos

 

Monte Carlo
  • Sin modelo
  • Estima la Q-table por interacción
  • Actualiza la Q-table al finalizar al menos un episodio
  • Adecuado para tareas episódicas cortas
Reinforcement Learning con Gymnasium en Python

Aprendizaje TD como predicción del tiempo

Imagen que muestra diferentes condiciones meteorológicas en distintos momentos en el mismo lugar.

Reinforcement Learning con Gymnasium en Python

SARSA

  • Algoritmo TD
  • Método on-policy: ajusta la estrategia según las acciones tomadas

Imagen que muestra que SARSA corresponde al estado actual, la acción tomada, la recompensa recibida, el siguiente estado observado y la siguiente acción.

Reinforcement Learning con Gymnasium en Python

Regla de actualización SARSA

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

  • $\alpha$: tasa de aprendizaje
  • $\gamma$: factor de descuento
  • Ambos entre 0 y 1
Reinforcement Learning con Gymnasium en Python

Frozen Lake

Imagen del entorno Frozen Lake

Reinforcement Learning con Gymnasium en Python

Inicialización

env = gym.make("FrozenLake", is_slippery=False)

num_states = env.observation_space.n num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))
alpha = 0.1 gamma = 1 num_episodes = 1000
Reinforcement Learning con Gymnasium en Python

Bucle SARSA

for episode in range(num_episodes):

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

Actualizaciones SARSA

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

old_value = Q[state, action]
next_value = Q[next_state, next_action]
Q[state, action] = (1 - alpha) * old_value + alpha * (reward + gamma * next_value)

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

Reinforcement Learning con Gymnasium en Python

Derivar la política óptima

policy = get_policy()
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 1, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

Imagen que muestra la política óptima en el entorno Frozen Lake con acciones como flechas; se ve cómo el agente evita los agujeros.

Reinforcement Learning con Gymnasium en Python

¡Vamos a practicar!

Reinforcement Learning con Gymnasium en Python

Preparing Video For Download...