8 - Práctica 2: Programación Dinámica con OpenAI Gym y Python
Lección 8 del curso Aprendizaje por Refuerzo Nivel Intermedio.
Tabla de contenido
Introducción
En la primera práctica 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.
Suscríbete y accede al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
El problema a resolver
El objetivo de esta práctica será entrenar el Agente de nuestro juego del Tablero Bidimensional estocástico. Y este entrenamiento equivale a encontrar una Política óptima que le permita interactuar de la mejor manera posible a este Agente con el Entorno.
Para lograr esto usaremos los cuatro algoritmos de Programación Dinámica que hemos visto en esta sección del curso: 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. Así que con ayuda de la librería OpenAI Gym y de Python, implementaremos uno a uno dichos algoritmos para el entrenamiento del Agente y al final veremos cómo será su interacción con el entorno usando las políticas obtenidas.
Características del código a implementar
- El entorno: usaremos Frozen Lake de la librería OpenAI Gym, que implementa precisamente nuestro juego del Tablero Bidimensional
- La Política: iniciaremos con una Política totalmente aleatoria. Es decir que en cada estado, cada una de las cuatro acciones disponibles (movimiento a la izquierda, abajo, a la derecha y arriba) tendrá la misma probabilidad de ocurrencia (0.25). Esta política la representaremos como una matriz de Numpy de 16 filas (correspondientes a los 16 estados) y 4 columnas (correspondiente a las 4 acciones).
- Evaluación de la Política: este algoritmo nos permitirá obtener la función estado-valor para una política en particular. En este caso implementaremos la función
evaluar_politica
que aceptará como argumentos de entrada el entorno, la política a evaluar, el factor de descuento (gamma
) y el criterio de convergencia del algoritmo (theta
). A la salida retornaráV
, un vector de 16 elementos con el valor de cada estado. - Mejora de la Política: este algoritmo tomará la política evaluada y seleccionará la mejor acción posible en cada estado, entregando a la salida la política mejorada. Implementaremos entonces la función
mejorar_politica
que tomará como argumentos de entrada el entorno, la evaluación de la política (vectorV
) y el factor de descuento (gamma
) y entregará a la salida la Política mejorada. - Iteración de la Política: este algoritmo repetirá de forma secuencial e iterativa los dos algoritmos anteriores (
evaluar_politica
ymejorar_politica
) hasta obtener una Política óptima. Así, la funcióniterar_politica
tendrá como argumentos de entrada el entorno, el factor de descuento (gamma
) y el criterio de convergencia (theta
) y retornará a la salida la Política óptima y su [función estado-valor] asociada. - Iteración de Valores: este algoritmo también permite obtener una Política óptima. En este caso la función
iterar_valores
, al igual que en el caso deiterar_politica
, tomará como argumentos de entrada el entorno, el factor de descuento (gamma
) y el criterio de convergencia (theta
) y retornará a la salida la Política óptima y su función estado-valor asociada. - Interacción con el entorno: finalmente, habiendo partido de una Política aleatoria y habiendo también obtenido una Política óptima con los algoritmos de Iteración de la Política y de Valores, pondremos a prueba nuestro Agente entrenado. Para ello usaremos cada una de estas políticas junto con el entorno de OpenAI Gym y en particular el método
step
para generar esta interacción y ver cómo funciona cada una de estas políticas dentro de nuestro juego del Tablero Bidimensional.
Implementación
Habiendo definido las características de nuestro programa, veamos paso a paso cómo implementar cada uno de estos elementos en Python, con la ayuda de Google Colab y de la librería OpenAI Gym:
Recuerda suscribirte para acceder al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
Conclusión
Perfecto, ya hemos puesto en práctica los conocimientos adquiridos hasta el momento y con la ayuda de OpenAI Gym ya hemos logrado entrenar nuestro primer agente usando los algoritmos de Programación Dinámica.
Así que ya es momento de comenzar con la segunda sección 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.