• Saltar a la navegación principal
  • Saltar al contenido principal
Logo Codificando Bits

Codificando Bits

  • Academia
    • Rutas
    • Cursos
    • Proyectos
    • Tutoriales
  • Acceder
  • Suscribirse

16 – Práctica 4: Diferencia Temporal con OpenAI Gym y Python

Lección 16 del curso Aprendizaje por Refuerzo Nivel Intermedio.

En este último módulo del curso hemos visto los diferentes algoritmos de Diferencia Temporal para la evaluación y optimización de una política: la predicción con Diferencia Temporal y los algoritmos de control SARSA y Q-learning.

Así que ya estamos listos para poner en práctica todo lo aprendido hasta el momento. Entonces en esta cuarta y última práctica del curso entrenaremos un Agente para que emule la toma de decisiones de un taxista que debe recoger un pasajero y llevarlo a un destino dentro de un pequeño tablero de juego.

Con esta práctica veremos entonces cómo usar los algoritmos de Diferencia Temporal con OpenAI Gym y Python para resolver un problema de Aprendizaje por Refuerzo.

Comencemos entendiendo todos los detalles de este juego del Taxi así como el objetivo de esta práctica:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Este juego del Taxi, disponible como entorno en OpenAI Gym, consiste en que un Taxi (Agente) debe recoger a un pasajero de una ubicación específica y llevarlo a su destino.

El entorno cuenta con 500 posibles estados, derivados de la combinación de 25 casillas, 5 ubicaciones del pasajero y 4 posibles destinos.

Así que el objetivo de esta práctica es entrenar al Agente para encontrar una política que maximice el retorno en cada episodio, logrando así que el Taxi complete su tarea de manera eficiente.

Veamos ahora los detalles de este entorno en OpenAI Gym:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Bien acabamos de ver cómo importar e interactuar con este entorno usando la librería OpenAI Gym. Veamos ahora cómo implementar las diferentes funciones auxiliares que usaremos para entrenar nuestro Agente y para realizar las interacciones:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Bien, acabamos de ver cómo implementar dos funciones auxiliares que resultarán útiles de aquí en adelante:

  • «inicializar_Q» que permite inicializar la tabla Q (función acción-valor)
  • «e_greedy» que permite seleccionar una acción de la tabla Q usando un enfoque epsilon-greedy

Con esto ya estamos listos para entrenar el Agente usando el primer algoritmo. Veamos entonces cómo implementar el algoritmo de control con SARSA:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Para entrenar el Agente utilizando el algoritmo de control SARSA primero definimos la función «sarsa» y configuramos los hiperparámetros. Durante el entrenamiento pudimos observar que a medida que aumentan las interacciones, el retorno del Agente mejora progresivamente.

Sin embargo, se puede optimizar este desempeño ajustando sistemáticamente los hiperparámetros, modificando uno a la vez mientras se mantienen los demás constantes, para evaluar su impacto durante el entrenamiento.

Veamos ahora cómo implementar el segundo algoritmo, el control con Q-learning:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Para este segundo algoritmo seguimos la misma lógica usada para el control con SARSA. En este caso implementamos la función «q_learning» y de nuevo, al igual que con SARSA, fue necesario hacer un ajuste de hiper-parámetros para re-entrenar posteriormente al Agente.

Por último, habiendo implementado estos dos algoritmos de entrenamiento, veamos cómo realizar la interacción del Agente entrenado con el entorno:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Ahora sí, con el Agente entrenado usando los dos métodos, podemos determinar cuál de los dos algoritmos tiene el mejor desempeño. Para ello hemos graficado las curvas de entrenamiento obtenidas en cada caso.

Y al realizar la comparación vimos que la convergencia de Q-learning es significativamente más rápida que SARSA: en la iteración 1.000 (aprox.) ya se estabiliza el primero y su retorno ya es positivo, mientras que para esa misma iteración SARSA aún no se estabiliza (de hecho en la iteración 4.000 su retorno sigue siendo negativo en ocasiones).

Esto confirma que Q-learning permite entrenar el agente de forma adecuada y con un menor número de iteraciones en comparación con SARSA.

¡Así que con esto hemos logrado entrenar un Agente que es capaz de interactuar con este entorno (el juego del Taxi) de manera óptima!

Y con esto hemos llegado al final de este curso, ¡así que te felicito por haber llegado hasta este punto! y te invito a ver el video de cierre en donde haré un breve resumen de todo lo aprendido a lo largo del curso:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Y como de costumbre te invito a contactarme para que me compartas tu retroalimentación del curso así como tus sugerencias para seguir mejorando el contenido de la Academia Online.

Así que te envío un saludo y te invito a continuar tu formación en esta especialización tomando el curso Aprendizaje por Refuerzo Nivel Avanzado.

Todas las lecciones del curso Aprendizaje por Refuerzo Nivel Intermedio

© Codificando Bits, LLC | Blog | Contacto | Servicios | Acerca de | Políticas

¿Has olvidado la contraseña?
¿Has perdido tu contraseña? Por favor, introduce tu nombre de usuario o dirección de correo electrónico. Recibirás por correo electrónico un enlace para crear una nueva contraseña.
body::-webkit-scrollbar { width: 7px; } body::-webkit-scrollbar-track { border-radius: 10px; background: #f0f0f0; } body::-webkit-scrollbar-thumb { border-radius: 50px; background: #dfdbdb }