miércoles, 16 de octubre de 2024

Notas sobre aprendizaje por refuerzo (VII): El triunfo del algoritmo DQN (Deep Q-Network)

En el último post hasta ahora de esta serie dedicada al aprendizaje por refuerzo ('reinforcement learning'), habíamos dejado enunciados los principales desafíos o problemáticas con que nos enfrentamos cuando queremos usar deep learning en aprendizaje por refuerzo, dando lugar así al llamado 'deep reinforcement learning'.

En este post vamos a ver brevemente cómo se enfrentan esos desafíos dando lugar a un exitoso algoritmo conocido como DQN o Deep Q-Network.

Pero, primero, repasemos dónde estamos.


Recordatorio: reinforcement learning


Una vez más, recordamos en qué consiste el aprendizaje por refuerzo. 



Tenemos un agente (puede ser un agente software o un robot, por ejemplo) que interacciona con un entorno. El agente aplica unas acciones a sobre el entorno. Dicho entorno se encuentra caracterizado por su estado, s. Cuando el entorno recibe la acción por parte del agente, puede sufrir un cambio de estado, pasando de s a s'. Como consecuencia de ese cambio de estado, el agente recibe una recompensa, r que, de alguna manera, le indica lo bien o mal que lo está haciendo, lo que se acerca o aleja de sus objetivos. El agente decide su siguiente acción siguiendo una política, π.

Pues bien, lo que quiere el agente es aprender la mejor política, la mejor forma de tomar decisiones en cuanto las acciones  aplicar, de forma que se maximice, no tanto las recompensas individuales, sino la recompensa acumulada al seguir una traza (una secuencia de acciones, caminos de estado, recompensas).

Para los casos relativamente sencillos, los denominados métodos tabulares, lo que se hace es definir una funciones que nos proporcionan una estimación de la recompensa acumulada. Son las funciones valor (V) y la función valor estado Q, que, para una política dada, nos proporcionan la recompensa esperada acumulada cuando en un estado s comenzamos con una acción a. Algunos de estos métodos tabulares son el SARSA o el Q-Learning. Estos métodos tabulan los estados, y se apoyan en reglas para el cálculo.

Eso vale para casos sencillos, entendiendo como sencillos aquellos de baja dimensionalidad en su espacio de estados (número de estados posibles relativamente pequeño, digamos en el orden de las decenas o centenas. Sin embargo, cuando ese espacio de estados exhibe una altísima dimensionalidad (muchísimos estados posibles), como es frecuente en problemas reales, no podemos usar esos métodos tabulares que se basan en disponer de tablas y reglas sobre los estados.

Y ahí es donde va a entrar en deep learning. Para empezar, en lugar de trabajar directamente con los estados, lo que hacemos es trabajar con unas características ('features') que  resumen y caracterizan, valga la redundancia, esos estados. Y luego usamos esas características como entradas para una red neuronal profunda dando lugar a lo que se suele denominar 'deep reinforcement learning'.

Las redes neuronales lo que nos van a servir es para implementar las funciones complejas y difíciles de definir como son las nuevas funciones V de valores, Q de valores-estado o la propia política π.

Con esto, las funciones que queremos encontrar son unas funciones parametrizadas, en que llamábamos  al conjunto de parámetros (que en el fondo son los pesos de la red neuronal) con la notación θ, y las funciones queremos implementar y optimizar, se convierten en unas funciones parametrizadas Vθ, Qθ y πθ.


Recordatorio: los tres desafíos del deep reinforcement learning


Ahí lo habíamos dejado. Bueno, ahí junto con el enunciado de tres retos a que se enfrentan este tipo de soluciones y que, siguiendo la obra 'Deep reinforcement learning' de Aske Plaat, que guía toda esta serie de posts, son tres. 


  • La imposibilidad de muestrear al completo el espacio de estados, dada su dimensionalidad.

  • La correlación entre las muestras de entrenamiento consecutivas, tendiendo a conducir a óptimos locales más que globales.

  • La variación de la función de pérdida durante el propio aprendizaje, debido a que estamos actualizando la función de valores-estado Q, con lo que perseguimos un 'blanco móvil'.


La llegada de DQN (Deep Q-Network)


Tras dificultades históricas serias para superar esos retos, tras 'tiras y aflojas', tras excursiones de la investigación en otro tipo de algoritmos, algunas aportaciones del campo del Deep Learning, entre las que destaca DQN (Deep Q-Network), consiguieron resolver el problema.

Para ello, aplicaron algunas recetas para decorrelar estados. Vamos a ver un par de ellas.


Primera receta: repetición de experiencia


Veíamos que uno de los retos era la correlación entre los estados en las diferentes muestras durante el entrenamiento, lo que despistaba a los algoritmos' haciéndoles converger en mínimos locales. 

La primera receta es la así llamada repetición de experiencia ('experience replay').

El problema de la correlación se produce, básicamente, porque cuando entrenamos el algoritmo usamos secuencias consecutivas de estados y acciones, digamos en una secuencia lógica, en el orden que se van produciendo en 'el mundo real'. Eso hace que los cambios de un paso a otro sean mínimos, los estados sean parecidos, las características sean parecidas y los valores también, lo que ralentiza el aprendizaje, además de que el algoritmo puede, de alguna manera, asumir que existen de manera generalizada unas correlaciones que no son generalmente ciertas sino solo localmente.

La repetición de experiencia ('experience replay') busca la ayuda del aprendizaje supervisado. En 'experience replay se crea un buffer ('replay buffer'), que es una especie de caché de estados que ya habían sido explorados previamente. En el buffer se almacenan, típicamente, del orden de un millón de entradas. Y de ese caché se extraen, de manera aleatoria, muestras para el entrenamiento. 

Esa introducción de muestras aleatorias rompe la secuencia, digamos 'lógica', y genera muestras de entrenamiento más diversas y, eventualmente sin correlación, ya que no se sigue esa secuencia de estados 'lógica' sino una más aleatoria.


Segunda receta: actualización infrecuente de estados


La segunda receta, se centra, sobre todo, en eliminar o minimizar el problema del 'blanco móvil'. Se trata de la actualización infrecuente de estados objetivos ('infrequent updates of target weights').

La actualización infrecuente de estados fue introducida en 2015 y busca eliminar la divergencia que se produce por la frecuente actualización de pesos de la función (la red neuronal) de valores estado Q. Lo que se hace en este caso es que, cada cierto número de actualizaciones, se realiza una especie de clon de la función Q, un clon que, de alguna forma queda congelado durante n pasos y del que obtendremos los valores para esos siguientes n pasos de entrenamiento. Esto hace que los pesos se actualicen más lentamente y atenúa, por tanto, el efecto del 'blanco móvil'.


El recetario no acaba aquí


Bueno, lo importante es que con estas recetas, se consiguió por fin la anhelada convergencia. Se consiguió, por tanto, aplicar el deep learning en el aprendizaje por refuerzo y, por tanto, el poder utilizar aprendizaje por refuerzo en problemas con una espacio de estados de alta o muy alta dimensionalidad...como suelen ser los problemas reales.

La cosa no acaba en estas recetas o en el DQN. A esto ha seguido nuevas investigaciones y nuevos modelos derivados en mayor o menos medida de DQN y de variantes de estas recetas.

Lo relevante, es que se hizo viable del 'deep reinforcement learning' y se abrieron las puertas a nuevas investigaciones, nuevos modelos, nuevo progreso.


Conclusiones


La conclusión podría ser tan simple como que científicos, matemáticos e ingenieros han logrado superar los retos que impedían usar el deep learning en aprendizaje por refuerzo, y con ello se ha abierto la puerta a su aplicación en entornos realistas, de muy alta dimensionalidad.


Artículos de este blog relacionados


No hay comentarios:

Publicar un comentario