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

Codificando Bits

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

11 – Práctica 3: Monte Carlo con OpenAI Gym y Python

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

En las lecciones anteriores hablamos de los algoritmos de predicción con Monte Carlo y control con Monte Carlo on-policy y off-policy, los cuales nos permiten no sólo evaluar una política sino también optimizarla.

Así que ya estamos listos para poner en práctica todo lo aprendido hasta el momento. Entonces en esta tercera práctica veremos cómo usar los métodos de Monte Carlo para lograr que un Agente «aprenda» a jugar Blackjack, el popular juego de cartas.

Comencemos entonces entendiendo los detalles del juego de Blackjack así como la implementación del 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 no sólo los detalles del juego de Blackjack sino la forma de modelar este juego como un problema de Aprendizaje por Refuerzo. La idea básica es que el jugador es el Agente que decide si «pedir» o «plantarse» y el entorno incluye al crupier y las cartas.

Por otra parte, las recompensas son +1 por ganar, -1 por perder y 0 por empatar. Y el objetivo de este problema de Aprendizaje por Refuerzo es entrenar al Agente para que aprenda a jugar Blackjack eficazmente, utilizando herramientas como OpenAI Gym con la cual vimos cómo simular este entorno.

Teniendo claros estos elementos, veamos ahora cómo implementar el algoritmo de predicción con Monte Carlo:

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.

Como acabamos de ver, podemos evaluar la Política del agente utilizando el algoritmo de predicción con Monte Carlo visto anteriormente.

En este caso hicimos uso de dos políticas: una completamente aleatoria y otra donde el jugador se planta siempre que la suma de sus cartas sea mayor a 18. Al implementar el algoritmo de predicción y comparar los resultados, observamos que, como era de esperar, la segunda política genera valores más altos.

Veamos ahora cómo implementar el control «on-policy» usando Monte Carlo:

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, en el caso de este algoritmo «on-policy» hemos usado el algoritmo epsilon-greedy. Y tras implementar este algoritmo y compararlo con la política 2 (es decir la mejor política hasta el momento), encontramos que la política óptima obtenida con este control “on-policy” genera en promedio un retorno superior (+0.111).

Para finalizar, veamos lo que ocurre cuando usamos un enfoque de control con Monte Carlo pero «off-policy»:

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 tras implementar este algoritmo y entrenar nuestro Agente encontramos que los resultados son prácticamente idénticos a los obtenidos con la política “on-policy”: las diferencias entre las dos políticas obtenidas son mínimas (0.06 a favor de “on-policy”).

Y este era un resultado esperado, ya que cualquiera de los dos métodos permite en últimas llegar a una política óptima.

Así que con lo visto en ésta práctica ya hemos completado los métodos de Monte Carlo, la segunda familia de métodos clásicos para la solución de problemas de Aprendizaje por Refuerzo y además !hemos entrenado un Agente capaz de jugar Blackjack!

Pero el inconveniente de estos métodos radica en el hecho de que para poder estimar las funciones valor se requieren episodios completos, lo que hace que se tengan unos tiempos de ejecución relativamente largos (como lo vimos precisamente en esta práctica).

Así que como alternativa a este inconveniente, en el siguiente módulo del curso hablaremos de los métodos de Diferencia Temporal, que son una combinación de la Programación Dinámica y de los Métodos de Monte Carlo.

En particular, en la próxima lección veremos una introducción a este Aprendizaje por Diferencia Temporal.

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 }