martes, 4 de febrero de 2025

Notas sobre aprendizaje por refuerzo (y XV): meta aprendizaje

Y con este post voy a poner fin ya a esta larga serie de artículos sobre aprendizaje por refuerzo, una serie inspirada y guiada por los contenidos del libro 'Deep reinforcement learning' de Aske Plaat

En este último artículo hablaremos del meta aprendizaje.

Pero antes de entrar en materia, como siempre en la serie, repasemos brevemente lo visto en los posts anteriores.


Recordatorio: lo que hemos visto de aprendizaje por refuerzo


El esquema que nos ha guiado durante toda la serie, ha sido el expresado en la siguiente figura que, a estas alturas, y si has seguido la serie, debería resultarte muy familiar:


Nos ocupamos inicialmente de la situación de un agente que interactúa con un entorno que se encuentra en un estado s. Sobre ese entorno, el agente aplica unas acciones, a, como consecuencia de las cuales, el entorno puede experimentar una transición y cambiar de estado, pasando del estado s al s', y el agente recibe una recompensa r. El agente decide la acción a aplicar en cada momento, siguiendo una política π y su objetivo es maximizar la recompensa obtenida lo largo de una secuencia o trayectoria.

Los métodos más básicos, aquellos en que el espacio de estado es reducido, siguen, decíamos, un enfoque tabular, en que se tabulan, de ahí el nombre, los posibles estados y para ellos se calculan unas funciones que nos dan el valor, Q, de la recompensa esperada. Cuando la dimensión del espacio de estados es muy alta, como sucede habitualmente en problemas reales, dejan de tener sentido estos métodos tabulares así que renunciamos a representar la situación del entorno mediante su estado, y a cambio lo representamos mediante unas características ('features') y la obtención de valores o acciones vienen a ser unas funciones con base en esas características e implementadas mediante redes neuronales profundas, dando lugar al 'deep reinforcement learning'.

Cuando tratamos problemas ya no de alta dimensionalidad, sino continuos, como es la locomoción de robots, se adoptan los denominados métodos basados en políticas en que se prescinde de la visión de valores, y se trabaja directamente en optimizar las políticas, que pasan a considerarse como estocásticas, es decir, como distribuciones de probabilidad. 

También aparecía como opción el denominado aprendizaje basado en modelos ('model-based'), en que el agente primero consigue un modelo del entorno y luego ya prescinde del entorno propiamente dicho par a trabajar con ese modelo local durante todo el entrenamiento.

Hasta aquí estábamos en la situación de trabajar con un único agente.

Posteriormente vimos el caso en que teníamos dos agentes, exactamente dos y que se encontraban en una situación competitiva, en uno de los denominados juegos de suma cero en que la ganancia de un agente supone la perdida del otro. En esa situación, una opción habitual era trabajar con el aprendizaje basado en modelos, dado que, para un agente, el entorno está constituido por el otro agente, y se adopta la hipótesis razonable de que su política, la del otro agente, es igual a la nuestra, por lo que modelamos el entorno con el modelo de nuestra propia política. 

Eso, además, conducía a la posibilidad del autoaprendizaje o auto-juego ('self-play'), en que un agente aprende jugando, en el fondo, contra sí mismo (contra otro agente con la misma política, en realidad). Vimos que mediante los problemas mono-agente, se podían tratar problemas como la locomoción de robots, la búsqueda de rutas o videojuegos. 

Luego exploramos la situación multi-agente, en los cuales no sólo se produce una competición sino también una colaboración entre agentes y un campo del que decíamos se encontraba fundamentalmente en investigación.

Y, finalmente, en el post previo a éste hablamos brevemente de aprendizaje jerárquico, en el que se divide un problema complejo en sub-problemas más gestionables, lo que aumenta nuestra potencia de resolución de problemas complejos y proporciona un esquema más robusto y reutilizable. A cambio, existe el riesgo cierto de no alcanzar soluciones óptimas a nivel global porque, durante el proceso optimizamos la resolución de los sub-problemas pero no tanto el problema en su conjunto.


Reutilizando el conocimiento


La idea principal que subyace al meta aprendizaje es la reutilización de lo ya aprendido. Y eso, en parte, por una inspiración en cómo funciona el conocimiento humano, en que un nuevo conocimiento se apoya en el anterior, y, por otro lado, por una mera necesidad de eficiencia, de reducir lo máximo posibles las necesidades de entrenamiento de los algoritmos, una labor lenta y muy consumidora de tiempo, datos y energía.

En esta intención, nos encontramos con dos conceptos que, en el fondo, se parecen: la transferencia de aprendizaje, o 'transfer learning' y el meta aprendizaje o 'meta learning' propiamente dicho


Transferencia de aprendizaje (transfer learning)


Uno de los problemas del machine learning tradicional es que, cada vez que se quería entrenar un algoritmo o un modelo, se partía de cero, es decir, es como si, aunque ya dispusiésemos de un modelo con un cierto conocimiento, como si eso no valiese y hubiera que desaprenderlo todo para volver a empezar a aprender desde la base: había que, quizá, rediseñar los hiperparámetros de la, por ejemplo, red neuronal, había tomar un nuevo conjunto de datos de entrenamiento, dedicar el tiempo y la computación necesaria para realizar ese entrenamiento y utilizando los conjuntos de datos de prueba, testear y validar el modelo.

Es como si, aplicando la popular expresión, 'no hubiésemos aprendido nada'.

Esa estrategia, aparte de que intuitivamente contradice la forma de aprender humana, era económica y operativamente muy ineficiente.

Hablo en pasado, no porque sea un problema completamente superado, que no lo es, pero sí porque ya existen muchas vías de reutilización del conocimiento en los modelos de machine learning: lo que se conoce como transferencia de conocimiento o 'transfer learning'.

Así, por ejemplo, es sabido que, en el caso de las redes neuronales de convolución aplicadas a visión artificial, las primeras capas, por decirlo de alguna manera, se especializan en detectar ciertas características genéricas de las imágenes como bordes o esquinas, y que son las capas finales, en ocasiones capas densas de tipo perceptrón multicapa, las que proporcionan el resultado final. En este ámbito ya se ha experimentado con éxito con el entrenamiento de capas de convolución en una especie de 'visión general', que luego se utiliza en otros modelos más especializados que se reeentrenan pero en menor media o que añaden, por ejemplo, algunas capas adicionales.

En general este tipo de técnicas se aplican en redes neuronales profundas ('deep learning') y la forma de hacer el transfer learning es, por decirlo de alguna manera, transferir la red neuronal, con sus hiperparámetros (ej. número de capas o número de neuronas por capa) ya definidos y con los pesos (los parámetros) ya ajustados mediante el pre-entrenamiento.

En cierto sentido, ese transfer learning se ha elevado a una altísima expresión en los modelos generativos, como los GPT (no en vano, la P de GPT significa pre-trained) y en los denominados modelos fundacionales, unos modelos que están pre-entrenados por los grandes del sector como OpenAI pero que luego pueden ser especializados mediante 'fine tunning' o incluso, en otro tipo de estrategias, personalizados mediante interacción con el usuario a través de la incorporación de contenido aportado por un buscador o mediante las técnicas de RAG ('Retrieval Augmented Generation').


Meta aprendizaje ('meta learning')


En cierto sentido, el meta aprendizaje es una generalización del 'transfer learning'. Si en el transfer learning lo que pretendemos es transferir el conocimiento de una tarea concreta (por ejemplo una tarea de visión), lo que pretendemos con el meta aprendizaje es transferir el conocimiento de varias tareas (recogido sobre todo en hiperparámetros) para que el modelo o algoritmo resultante sepa como aprender una nueva tarea. Atención que hemos dicho que sepa aprender, no que sepa cómo hacer una nueva tarea, sino cómo aprender a hacerla, de ahí que hablemos de meta aprendizaje (aprender a aprender).

Eso, llevado a las redes neuronales del deep learning, lo que quiere decir es que, lo que transferimos en meta aprendizaje son más los hiperparámetros de la red (que definen su arquitectura y funcionamiento base) que los parámetros propiamente dichos (que reflejan de alguna forma el conocimiento adquirido), precisamente por la estrategia de aprender a aprender, más que de 'venir aprendido'.

Todavía se trata de un área de investigación pero existen ya varios algoritmos y entornos en funcionamiento. Entre los algoritmos, la fuente bibliográfica en que me baso menciona, por ejemplo, RecurrentML, Meta Network,  SNAIL, MAML y unos cuantos más. También proporciona algunos detalles matemáticos de este tipo de algoritmos pero no voy a entrar en esos detalles.


Conclusiones


Como podemos ver, algunos de los enfoques más avanzados en el campo del machine learning y sobre todo del deep learning es ver cómo podemos reutilizar conocimiento, al igual que hacen los humanos, para construir nuevo conocimiento o nuevas capacidades incluyendo ese aprender a aprender que parece un gran objetivo final.


***


Aunque, evidentemente, hay mucho más que decir, y seguro que mas que habrá en el futuro, de momento cierro esta larga serie (quince artículos) que he dedicado al aprendiza por refuerzo. No quiere decir que no vaya a tocar este campo de nuevo, sino que, caso de hacerlo, será ya, seguramente, como un post regular y probablemente apoyado en otras fuentes bibliográficas u otras reflexiones.


Artículos de este blog relacionados