Lección 7 del curso Aprendizaje por Refuerzo Nivel Avanzado.
En la lección anterior vimos toda la teoría detrás del algoritmo REINFORCE, usado en los métodos del Gradiente de la Política. Y vimos además un sencillo ejemplo de implementación práctica en Python.
De igual manera, vimos que una de las limitaciones de dicho algoritmo es su alta varianza. Esto quiere decir que, a medida que entrenamos un Agente de Aprendizaje por Refuerzo usando este algoritmo, habrá un alto grado de variabilidad entre los parámetros que se están entrenando entre una y otra iteración del algoritmo. Y esto redunda en el hecho de que, en términos generales, el algoritmo REINFORCE requerirá más iteraciones de entrenamiento en comparación con otros algoritmos basados en el Gradiente de la Política.
Así que en esta lección veremos qué es el algoritmo REINFORCE con línea de base y cómo este reduce la varianza presente en el algoritmo REINFORCE básico, mejorando de esta forma el entrenamiento de un Agente. Y de igual forma, veremos de forma práctica cómo implementar este nuevo algoritmo con ayuda de Python.
Comencemos entonces viendo todos los detalles detrás de este algoritmo REINFORCE con línea de base:
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 algoritmo REINFORCE con línea de base introduce un pequeño cambio al algoritmo básico que vimos en la lección anterior: en lugar de actualizar los parámetros usando simplemente los retornos, la actualización se realiza calculando la diferencia entre el retorno y la función estado valor (que es precisamente la línea de base de este algoritmo).
Y con este sencillo cambio se logra precisamente reducir la varianza de este algoritmo de entrenamiento. Así que teniendo claro este principio de funcionamiento, veamos un ejemplo práctico de implementación del algoritmo REINFORCE con línea de base en Python:
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.
Muy bien acabamos de replicar el ejemplo de la lección anterior, en donde logramos entrenar un Agente para que aprendiera a desplazarse en un pequeño entorno (un pasillo con 4 casillas), pero en este caso usando el algoritmo REINFORCE con línea de base.
Además, comparamos los resultados del entrenamiento con los obtenidos para el algoritmo REINFORCE básico y pudimos verificar que, a pesar de la simplicidad del entorno, efectivamente REINFORCE con línea de base logra reducir la varianza de los retornos obtenidos durante el entrenamiento.
Así que teniendo claro cómo funciona este algoritmo es momento de profundizar en el componente práctico del curso. Como lo mencionamos en la lección sobre la parametrización de la Política, al definir una Política parametrizada usando algoritmos del Gradiente de la Política podemos optar por el uso de funciones matemáticas (como fue el caso del ejemplo de esta lección) o, en el caso de entornos e interacciones más complejos, usualmente resulta más adecuado el uso de Redes Neuronales.
Entonces, en la próxima lección veremos un ejemplo práctico de implementación del algoritmo REINFORCE pero haciendo uso de Redes Neuronales, lo que nos servirá como introducción a los métodos de Aprendizaje por Refuerzo Profundo que veremos en detalle en próximos cursos.
Así que en la próxima lección veremos cómo usar Redes Neuronales y el algoritmo REINFORCE para resolver el problema del péndulo invertido (o «Cart pole»), un problema clásico del Aprendizaje por Refuerzo.
Todas las lecciones del curso Aprendizaje por Refuerzo Nivel Avanzado
