Saltar al contenido

# aprendizaje-por-refuerzo-en-python

Aprendizaje por Refuerzo en Python

Volver a la portada del curso
Lectura (Markdown)

Terminología básica

Sección 1 · Introducción al Aprendizaje por Refuerzo

Terminología básica

El robot del almacén de PyShop tiene que llevar cada pedido desde la salida hasta el andén de envío. Nadie le dibuja la ruta: prueba movimientos, recibe premios y castigos, y poco a poco aprende qué hacer en cada casilla. El aprendizaje por refuerzo usa una docena de palabras que verás en todo el curso, en Gymnasium y en el libro de Sutton y Barto. Esta lección las define con el almacén como ejemplo.

Los protagonistas: agente y entorno

  • Agente: el que decide: el robot.
  • Entorno: todo lo demás. Es el almacén de 5×5 con sus pasillos, estantes, derrames de aceite y el andén.
  • Estado ($s$): la descripción de la situación actual. En el almacén basta con la casilla del robot, un número de 0 a 24 calculado como fila * 5 + col. La salida es el estado 0 y el andén, el 24.
  • Acción ($a$): lo que el agente puede hacer. Hay 4: 0 izquierda, 1 abajo, 2 derecha y 3 arriba, en el mismo orden que el entorno FrozenLake de Gymnasium.
  • Recompensa ($r$): un número que el entorno devuelve después de cada acción. En el almacén vale −1 por cada paso, +10 al llegar al andén y −10 al pisar un derrame.

Estas piezas forman el ciclo agente-entorno: el agente ve el estado, elige una acción, el entorno responde con una recompensa y un estado nuevo, y se repite. En Gymnasium cada vuelta del ciclo es una llamada a env.step(accion).

Pasos, episodios y retorno

Un paso es una vuelta del ciclo. Un episodio es una partida completa: empieza con el robot en la salida y termina cuando llega al andén, cuando pisa un derrame o cuando se le acaban los 50 pasos permitidos.

Al agente no le interesa la recompensa de un solo paso, sino la suma de todo el episodio: el retorno. La ruta más corta del almacén tiene 8 pasos (por ejemplo, cuatro a la derecha y cuatro hacia abajo): siete pasos de −1 y uno de +10 al llegar, así que su retorno es $-7 + 10 = 3$. El −1 por paso premia la prisa: cada rodeo baja el retorno.

El factor de descuento $\gamma$

Muchas veces las recompensas futuras se descuentan: valen un poco menos cuanto más tarde llegan. El factor de descuento $\gamma$ (gamma), entre 0 y 1, hace ese ajuste. El retorno descontado es

$$G = r_1 + \gamma\, r_2 + \gamma^2 r_3 + \dots$$

Con $\gamma = 1$ todas las recompensas pesan igual; con $\gamma$ cercano a 0, el agente solo mira lo inmediato. Este bloque calcula el retorno de la ruta óptima con tres valores de $\gamma$:

recompensas = [-1] * 7 + [10]      # ruta óptima: 8 pasos

for gamma in (1.0, 0.9, 0.5):
    G = sum(r * gamma**k for k, r in enumerate(recompensas))
    print(f"gamma={gamma}: retorno = {G:.3f}")
gamma=1.0: retorno = 3.000
gamma=0.9: retorno = -0.434
gamma=0.5: retorno = -1.906

El +10 llega en el octavo paso, así que se multiplica por $\gamma^7$. Con $\gamma = 0.5$ ese premio vale menos de 0.08 y los primeros −1 dominan la suma. Por eso el curso entrena con $\gamma = 0.95$: el andén todavía pesa lo suficiente como para que el robot lo persiga.

Política y valor

  • Política ($\pi$): la regla que dice qué acción tomar en cada estado. Puede ser una tabla («en la casilla 0, ve a la derecha») o una regla con azar («elige al azar el 10 % de las veces»). Aprender, en este curso, es mejorar la política.
  • Valor de un estado ($V(s)$): el retorno que se espera obtener desde ese estado si se sigue la política. Una casilla junto al andén vale más que una junto a un derrame.
  • Valor de una acción ($Q(s, a)$): el retorno esperado si en el estado $s$ se toma la acción $a$ y después se sigue la política. Una tabla de 25 filas (estados) por 4 columnas (acciones) guarda todos esos números; es la tabla Q que el robot aprenderá más adelante.

Un robot que se mueve al azar, durante 1000 episodios, obtiene un retorno medio de −31.87: llega al andén solo 63 veces y pisa un derrame 813. Con Q-learning, el mismo robot aprende una política que llega siempre al andén con retorno 3.

Exploración y explotación

Para aprender, el agente tiene que explorar: probar acciones que aún no conoce. Para obtener buenos retornos tiene que explotar: repetir lo que ya sabe que funciona. El equilibrio entre ambas es el tema de la sección 3.

Trampas comunes

  • Confundir recompensa y retorno. La recompensa es de un paso; el retorno, de todo el episodio.
  • Pensar que el estado es todo lo que existe. El estado es lo que el agente observa. Si falta información importante (por ejemplo, si lleva o no un paquete), el agente no podrá decidir bien.
  • Elegir $\gamma$ muy bajo. Con $\gamma = 0.5$ la meta del almacén casi desaparece del cálculo.
  • Creer que la política es el código. El código es el mismo antes y después de entrenar; lo que cambia son los números de la tabla, y con ellos la política.

El notebook primeros-pasos-con-gymnasium pone estas palabras en práctica: crea el almacén, juega episodios al azar y calcula retornos con distintos valores de $\gamma$. Al ejecutarlo, intenta nombrar cada valor que devuelve step con el término de esta lección.

Recursos