13 · Proyecto gridworld
Reúne todo: un agente Q-learning de extremo a extremo que aprende a navegar un laberinto con paredes, con decaimiento de exploración apropiado y una evaluación real — tasa de éxito y pasos a la meta.
Un proyecto completo de RL tabular tiene cuatro partes: definir el entorno (estados, paredes, recompensas, función step), entrenar con Q-learning ε-codicioso y exploración decreciente, EVALUAR la política codiciosa (tasa de éxito, pasos a la meta), e inspeccionar la política aprendida. Dominar este bucle es todo el control libre de modelo.
Sin esto:
Sin un paso de evaluación solo tienes una tabla entrenada, no evidencia de que funciona. Reportar la tasa de éxito y la longitud del camino de la política codiciosa es lo que convierte 'ejecuté Q-learning' en 'el agente resuelve el laberinto'.
Este proyecto final del capítulo reúne todo en un agente autónomo. La tarea es un laberinto 6×6 con paredes — más difícil que los grids abiertos hasta ahora, porque el agente debe aprender a rodear obstáculos, y chocar una pared desperdicia un paso. La estructura refleja cualquier proyecto real de RL tabular:
-
Definir el entorno. Un
LAYOUTde texto (.piso,#pared,Sinicio,Gmeta) se compila en una funciónstep(). Caminar hacia una pared o fuera del borde te deja en el lugar y aún cuesta −1; llegar a la meta da +10. -
Entrenar. Q-learning con decaimiento de ε: empezar casi totalmente exploratorio (ε ≈ 1) y bajar hacia ε ≈ 0.05. Al inicio el agente debe explorar mucho para siquiera encontrar la meta; después debe explotar sobre todo lo aprendido. Decaer ε es la forma estándar de lograr ambos.
-
Evaluar. La recompensa de entrenamiento es ruidosa por la exploración. La medida honesta es la política codiciosa con la exploración apagada: ejecutarla muchas veces y reportar la tasa de éxito (¿llega a la meta?) y los pasos promedio a la meta. Comparamos esto último contra la cota inferior de distancia Manhattan para confirmar que el camino es casi óptimo.
-
Inspeccionar. Imprimir la acción codiciosa en cada celda como una flecha, dibujada sobre el laberinto, para que puedas leer literalmente la política y verla fluir alrededor de las paredes hacia
G.
Este es exactamente el flujo que seguirías en un problema mayor — solo cambia el tamaño de la tabla (o, para DQN, la red).
Python (in browser)
RL tabular de extremo a extremo: definir laberinto → entrenar Q-learning con decaimiento de ε → evaluar la política codiciosa (100% de éxito, camino casi-Manhattan) → leer la política como flechas que serpentean alrededor de las paredes hacia la meta.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
¿Por qué decaer ε de ~1.0 a ~0.05 durante el entrenamiento, en vez de mantenerlo fijo?
- Un proyecto completo de RL tabular = definir entorno (función step) → entrenar con Q-learning ε-codicioso + decaimiento de ε → evaluar la política codiciosa → inspeccionarla.
- Decaer ε equilibra exploración (encontrar la meta pronto) con explotación (refinar y actuar casi óptimo después).
- Evalúa con la exploración APAGADA: reporta la tasa de éxito codiciosa y los pasos a la meta (vs la cota inferior de Manhattan), no la recompensa ruidosa de entrenamiento.
Este mismo pipeline — entorno, entrenamiento con decaimiento de ε, evaluación codiciosa separada, inspección de la política — es cómo se produce y reporta todo resultado de RL (de gridworlds a DQN en Atari).
Si lo quitas: Sin una evaluación disciplinada no puedes distinguir un agente que funciona de uno que memorizó ruido, y sin decaimiento de ε un agente a menudo no explora lo suficiente para encontrar metas escasas.