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

Codificando Bits

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

8 – Práctica 2: Programación Dinámica con OpenAI Gym y Python

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

En la primera práctica del curso vimos una introducción a OpenAI Gym, una librería que nos facilita el proceso de simulación de las interacciones Agente-Entorno en un problema de Aprendizaje por Refuerzo.

En esta segunda práctica del curso veremos cómo implementar en Python, y con ayuda de OpenAI Gym, los cuatro algoritmos de Programación Dinámica vistos hasta el momento y cómo lograr que el Agente entrenado interactúe con el entorno, para el caso del juego del Tablero Bidimensional.

Comencemos entonces viendo cómo implementar este entorno (el tablero bidimensional), qué características tendrá la Política y cómo implementar el algoritmo de evaluación de la Política:

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, el objetivo de esta práctica es entrenar al Agente en el juego del Tablero Bidimensional estocástico, encontrando una Política óptima para su interacción con el Entorno.

Para lograr esto utilizaremos los cuatro algoritmos de Programación Dinámica vistos hasta el momento: la evaluación de la Política, la mejora de la Política, la iteración de la Política y la iteración de valores.

Y para implementar estos algoritmos haremos uso precisamente de la librería OpenAI Gym de Python, específicamente usando el entorno «Frozen Lake» que vimos en la lección anterior.

Así que primero implementamos una Política aleatoria representada de manera simple por una matriz de Numpy de 16×4. Luego creamos la función «evaluar_política» que, como su nombre lo indica, corresponde a la implementación del algoritmo de evaluación de la Política. Esta función recibe como argumentos de entrada entorno, la política, el factor de descuento (gamma) y el criterio de convergencia (theta), retornando a la salida un vector de 16 elementos con los valores de cada estado.

Con estas implementaciones iniciales podemos ver ahora cómo implementar el algoritmo de mejora de la Política:

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.

Recordemos que la mejora de la Política es un algoritmo que, a partir de una política evaluada, selecciona la mejor acción posible en cada estado, resultando en una política mejorada.

Y acabamos de ver cómo implementar este algoritmo a través de la función «mejorar_politica», la cual toma como argumentos de entrada el entorno, la evaluación de la política (vector V) y el factor de descuento (gamma), y retorna a la salida la política mejorada.

Vamos ahora con el tercer algoritmo de la Programación Dinámica, la iteración de la Política:

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.

En este algoritmo se deben repetir de forma secuencial e iterativa los dos algoritmos anteriores («evaluar_politica» y «mejorar_politica») hasta obtener una Política óptima. Así, en el video anterior vimos cómo implementar la función «iterar_politica» la cual tiene como argumentos de entrada el entorno, el factor de descuento (gamma) y el criterio de convergencia (theta) y retorna a la salida la Política óptima y su función estado-valor asociada.

Así que veamos cómo implementar el último algoritmo de la Programación Dinámica, la iteración de valores, y veamos además cómo usar todos estos resultados para lograr que el Agente interactúe 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.

Recordemos que la iteración de valores es otro algoritmo que permite obtener una Política óptima. Y en este caso hemos implementado la función «iterar_valores», similar a la función «iterar_politica» implementada anteriormente, la cual toma como argumentos de entrada el entorno, el factor de descuento (gamma) y el criterio de convergencia (theta), y retorna la Política óptima y su función estado-valor asociada.

En cuanto a la interacción con el entorno, podemos usar las políticas óptimas obtenidas con los algoritmos de iteración de la Política e iteración de valores, para poner a prueba nuestro Agente entrenado. Para hacer esto simplemente tomamos cada una de estas políticas junto con el entorno de OpenAI Gym, y haciendo uso del método «step» podemos generar las interacciones y observar la manera como el Agente se desplaza en este sencillo juego del Tablero Bidimensional.

Y con esto ya hemos puesto en práctica los conocimientos adquiridos hasta el momento y con la ayuda de OpenAI Gym y !ya hemos logrado entrenar nuestro primer agente usando los algoritmos de Programación Dinámica!

Así que ya es momento de comenzar con el segundo módulo del curso, en donde nos enfocaremos en la familia de algoritmos conocida como Monte Carlo.

En particular, en la próxima lección comenzaremos viendo cómo realizar una tarea de predicción con Monte Carlo, es decir cómo evaluar una política usando esta familia de algoritmos.

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 }