Mostrando entradas con la etiqueta aprendizaje. Mostrar todas las entradas
Mostrando entradas con la etiqueta aprendizaje. Mostrar todas las entradas

jueves, 1 de octubre de 2026

Cómo hacemos que un modelo razone (V): aprendizaje por refuerzo con feedback humano (RLHF)

Abordamos con ésta, la quinta entrega de la serie de posts que estoy publicando acerca de los mecanismos para conseguir que un gran modelo de lenguaje (LLM, 'Large Language Model') se convierta en un modelo razonador (LRM, 'Large Reasoning Model') y todo ello apoyándome en la estructura y aportaciones del libro 'Building a resoning model (from scratch)' de Sebastian Raschka.

En el post anterior anuncié que éste sería el último... pero me equivoqué: éste será el penúltimo y aún habrá, por tanto, otro post en esta serie


Dónde nos habíamos quedado


En los posts anteriores habíamos visto, en primer lugar, algunos métodos que realmente no alteraban en modelo en sí, es decir no modifican ni su arquitectura ni sus parámetros (sus pesos). En el fondo, 'el modelo se queda como está' y lo que hacemos es hacerle razonar mediante técnicas de 'prompting', en concreto, la cadena de pensamiento (CoT, 'Chain-Of-Thought') y la autoconsistencia ('self-consistency'). 

Y también vimos el auto-refinamiento en que  de alguna forma el modelo establece un diálogo consigo mismo y se proporciona 'feedback' sobre las respuestas que ha aportado.

Estos tres métodos se encuadraban dentro de lo que el autor denomina escalado en tiempo de inferencia ('inference-time scaling') porque, por un lado, se aplican ya en producción (en inferencia) y no durante el entrenamiento y, por otro, suponen un mayor esfuerzo computacional.

El último de los mecanismos que habíamos revisado se aplicaba ya en tiempo de entrenamiento y sí que modifica el modelo en sí mismo (sus pesos). Se trataba de un método, aprendizaje por refuerzo con recompensas verificables (RLVR, 'Reinforcement Learning with Verifiable Rewards'), que aplicaba aprendizaje por refuerzo y en el que la recompensa que se ofrece al modelo (la indicación de lo bien o mal que lo ha hecho) se basa en alguna de forma de reglas claramente calculables o verificables (por ejemplo mediante la aplicación de una calculadora para un problema matemático simple).

Vamos ahora otra variante de aprendizaje por refuerzo. 


El aprendizaje por refuerzo con feedback humano (RLHF)


Esta variante es realmente muy popular y, de hecho, se mencionó frecuentemente ya desde el momento del lanzamiento de ChatGPT cuando la propia OpenAI explicaba cómo había entrenado su modelo GPT-3.

Aunque RLHF se nos propone como una técnica para conseguir un modelo razonador, en realidad se utiliza con frecuencia para entrenar modelos de lenguaje no razonadores. De hecho, GPT-3, por ejemplo, no era un modelo razonador.

El aprendizaje por refuerzo con feedback humano (RLHF, 'Reinforcement Learning with Human Feedback') se definió originalmente (o explicó, mejor dicho) en el paper 'Training language models to follow instructions with human feedback'.

La idea del aprendizaje con feedback humano es que sea una persona quien indique cómo de buena o mala es la respuesta del modelo y, aplicando algún algoritmo sobre esta valoración, se actualice la política que se aplica (en el fondo el propio modelo) de una manera que recuerda de alguna forma al etiquetado en aprendizaje supervisado.

Sin embargo, en este caso, con frecuencia el feedback humano se recoge de una manera 'muy astuta': como supongo que todos hemos tenido ocasión de experimentar con ChatGPT: de vez en cuando te da dos opciones y te pide que elijas una como la más adecuada. Bueno, pues eso es feedback humano y digo que es 'astuta' porque nos recluta a todos los usuarios para dar ese feedback.

En RLHF hay un doble entrenamiento: primero se entrena un modelo que proporciona las recompensas en función del feedback humano y, con ese modelo ya entrenado, se realiza el entrenamiento del modelo propiamente dicho. Es en el primer entrenamiento, el entrenamiento del modelo que genera las recompensas, donde realmente se utiliza el feedback humano. A partir de ahí ese modelo generador de recompensas se utiliza para entrenar al modelo objetivo ya sin intervención humana.

Un tipo de algoritmo que se utiliza mucho en RLHF es PPO ('Proximal Policy Optimization') que, a partir de las recompensas generadas por el modelo generador de recompensas, 'decide' cómo actualizar el modelo que está siendo entrenado.


PPO ('Proximal Policy Optimization')


Lo que busca PPO es una forma de actualizar políticas, digamos, 'poco a poco', evitando cambios bruscos que puedan perjudicar el aprendizaje. En este caso, cuando hablamos de políticas, estamos hablando en el fondo del propio modelo en entrenamiento.

PPO utiliza el famoso descenso de gradiente ('Gradient Descent') para calcular cómo ajustar los pesos en la nueva política (en el modelo). Pero, para evitar los cambios bruscos, lo que hace es comparar la probabilidad de una respuesta con la política nueva (el modelo eventualmente actualizado) frente a la probabilidad con la política antigua (el modelo sin actualizar) calculando un 'ratio' de la siguiente forma:


r = probabilidad con política nueva (modelo modificado) / probabilidad con política antigua (modelo sin modificar)


Si ese 'ratio' se aleja mucho de 1 (es decir, los resultados de ambas políticas son muy diferentes) aplica lo que se denomina 'clipping' (recorte) y no tiene en cuenta el cambio. Esta forma de actuar es lo que evita cambios bruscos y lo que aporta la primera palabra del nombre del algoritmo: 'proximal' (próximo) 

Se trata de un tipo de algoritmos muy estables y muy sencillos de implementar, de ahí su popularidad. Además, funciona muy bien con ese tipo de acciones básicas como elegir simplemente entre dos opciones.


Conclusiones


Hemos visto una segunda forma de aprendizaje por refuerzo que se puede utilizar para el entrenamiento de grandes modelos de lenguaje a la hora de convertirlos en modelos razonadores. Una forma en que, además, nos apoyamos en la opinión de personas, de humanos. Se trata del el RLHF, es decir, el aprendizaje por refuerzo con 'feedback' humano, una forma de entrenamiento que se utiliza también en modelos no razonadores.


Artículos de este blog relacionados


lunes, 28 de septiembre de 2026

Cómo hacemos que un modelo razone (IV): aprendizaje por refuerzo basado en recompensas verificables (RLVR)

Con este post llegamos al cuarto de la serie dedicada a cómo conseguimos un modelo razonador a partir de un gran modelo de lenguaje siguiendo las aportaciones del libro 'Building a resoning model (from scratch)' de Sebastian Raschka.

En esta entrega, damos un viraje importante. 

En los tres posts anteriores vimos formas de conseguir que un modelo razone, pero sin cambiar el modelo en sí mismo, es decir, sin cambiar sus pesos o sus hiperparámetros. O dicho de otra manera, no reentrenamos al modelo sino que éste continua siendo el que era antes de que intentásemos que razonase.

Sin embargo, en este artículo y el siguiente (que cerrará la serie), vamos a ver dos técnicas que sí reentrenan el modelo (hacen lo que se conoce como 'fine tunning') y utilizan estrategias de aprendizaje por refuerzo.

Veamos.


La idea del 'fine-tunning'


Aunque asumo que parte de los lectores habituales de este blog ya conocen el significado del 'fine-utinning', y aunque, incluso, la recordé brevemente en el post que abría esta serie y en que hablaba de estrategias generales, vuelvo a aportar aquí unas pinceladas para refrescar conceptos y estar todos en la misma página, que se suele decir.

El ajuste fino o 'fine-tuning' es una forma de entrenamiento (o, más bien, una fase de entrenamiento) en que se parte de un modelo ya entrenado y se le somete a un segundo entrenamiento más acotado para especializarlo en un dominio concreto o una tarea concreta.

La idea es que el modelo de partida, mediante lo que se denomina el 'pre-entrenamiento', adquiere conocimientos digamos generales. Conocimientos sobre el lenguaje en general y sobre la vasta variedad del conocer humano. Se trata de un entrenamiento masivo, con una enorme cantidad de datos, un gasto computacional extraordinario y, por tanto, al alcance de muy pocas organizaciones.

El 'fine-tunning', por el contrario, no es de propósito general, sino específico y 'la gracia' que tiene es que con un conjunto relativamente reducido de datos de entrenamiento y un gasto computacional moderado o pequeño suele conseguir muy buenos resultados en esa tarea o dominio específico. Por tanto, está al alcance de muchas empresas y organizaciones.

Ese ajuste fino o 'fine-tunning' se ha realizado con frecuencia mediante aprendizaje supervisado pero, en lo que vamos a ver en este post y en el siguiente, se aplica el aprendizaje por refuerzo.


Aprendizaje por refuerzo


Hace ya casi año y medio dediqué en este blog una larga serie de artículos, bastante técnicos, eso sí, a hablar del aprendizaje por refuerzo ('reinforcement-learning'). Para el lector interesado, le remito al último post de la serie dedicado al meta aprendizaje y que contiene enlaces a todos los demás artículos de la serie.

Aquí sólo recordar las ideas de muy alto nivel.

El aprendizaje por refuerzo es como la tercera gran vía del aprendizaje en machine learning (acompañando al aprendizaje supervisado y ni supervisado) y que, de alguna forma, quiere imitar la forma en que normalmente parece que aprendemos los humanos y que es un poco por ensayo y error.

Durante el entrenamiento por refuerzo el modelo recibe una entrada, genera una salida y recibe una forma de 'feedback'  que le indica hasta qué punto lo está haciendo bien o mal. Suelo compararlo al juego del 'frio' o 'caliente'. Con base a ese 'feedback' (habitualmente denominado 'recompensa'), el modelo ajusta sus parámetros (típicamente los pesos de una red neuronal).

Se diferencia del aprendizaje supervisado es que, en el aprendizaje supervisado durante el entrenamiento se le dice al modelo cuál es la respuesta correcta, mientras que en el aprendizaje por refuerzo sólo se le da una indicación de lo bien o mal que lo hace, pero sin decirle cuál es la respuesta correcta.

Y se diferencia del aprendizaje no supervisado es que en éste, el no supervisado, el modelo debe descubrir patrones subyacentes en los datos sin ninguna forma de 'feedback' explícito, mientras que ya hemos visto que en aprendizaje por refuerzo sí hay feedback (la recompensa).


Modelos razonadores y aprendizaje por refuerzo basado en recompensas verificables (RLVR)


En la referencia que estamos usando, nos subdivide el uso de aprendizaje por refuerzo en dos variantes. La primera, y la que vamos a mencionar en este post, es la que utiliza recompensas verificables.

¿Qué significa eso?

Significa que existe alguna forma objetiva de saber qué resultado final debería haber aportado el modelo y esa respuesta objetivamente correcta se utiliza para el feedback, la recompensa, que, por tanto, es verificable de forma objetiva.

Una forma fácil de visualizarlo es tener en cuenta que en el entrenamiento de modelos razonadores se usan con mucha frecuencia problemas lógicos o matemáticos con una respuesta final muy clara (verificable). Por tanto, el mecanismo para producir la recompensa que recibe el modelo podría llegar a ser el algún caso sencillo poco más que una calculadora digital.

Esto es lo que se denomina aprendizaje por refuerzo con recompensas verificables (RLVR, 'Reinforcement Learning with Verifiable Rewards').

Una de las grandes ventajas de esta forma de entrenar por refuerzo frente a una genérica, es que el generador de recompensas, el verificador, no es otro modelo sino una herramienta mucho más sencilla (y, por tanto mucho más barata). Además, las recompensas son deterministas y reproducibles y la estrategia escala fácilmente a un entrenamiento con muchos datos si es necesario.

A cambio, una importante limitación es que no se puede aplicar esta estrategia al entrenamiento para razonar sobre cualquier tipo de problemas dado que, en muchos casos, no podemos disponer de esas reglas verificables. Por ello, se suele circunscribir, como hemos mencionado, a problemas lógicos o matemáticos.

No voy a entrar en detalles pero sí mencionar que RLVR se suele utilizar en conjunción con un algoritmo denominado GRPO ('Group Relative Policy Optimization'), introducido por el equipo de DeepSeek, que, a partir de la señal que genera RLVR, determina cómo usarla para la actualización de pesos del modelo.


Conclusiones


Hemos visto que podemos conseguir convertir un modelo razonador a partir de un gran modelo de lenguaje usando, no sólo técnicas de promting, como habíamos revisado en posts anteriores de esta serie, sino también haciendo un 'fine-tunning' mediante estrategia de aprendizaje por refuerzo.

Una de las variantes empleadas de aprendizaje por refuerzo es la que se basa en las denominadas recompensas verificables, en que un algoritmo, que no tiene por qué ser un modelo de lenguaje, es capaz de proporcionar de manera automatizada la señal de recompensa o 'feedback' y, mediante técnicas como GRPO, deducir la forma de actualizar los pesos del modelo.


Artículos de este blog relacionados


jueves, 23 de julio de 2026

Capacidades cognitivas frente a la IA: aprendizaje versus producción

La inteligencia artificial trae consigo enormes posibilidades. Es una tecnología polivalente, transversal, disruptiva en ocasiones e, incluso, muchas veces divertida.

Pero también nos desafía en muchos sentidos y, en algunos, incluso nos puede preocupar.

 

La IA y el problema de las capacidades cognitivas


Uno de esos posibles elementos de preocupación es cómo puede afectar el uso intensivo de la IA el desarrollo (o atrofia) de nuestras capacidades cognitivas y, muy específicamente, cómo afecta al aprendizaje de conocimientos y habilidades mentales.

Carátula del episodio
Se trata de un tema en el que pienso con cierta frecuencia y que he reflejado en varios de los canales de comunicación que utilizo. Sin ir más lejos, el 22 de Julio, el día anterior a en el que esto escribo, publicaba en el podcast 'Caminos de Knowmad' en que colaboro, un episodio titulado, significativamente, 'Cuidar nuestras capacidades cognitivas en tiempos de IA' en que analizo esta problemática desde la perspectiva de un profesional del conocimiento, y traslado algunas ideas y opiniones.

El temor es, en esencia, que si nos acostumbramos a delegar tareas en la IA, si no ejercemos nuestras propias capacidades cognitivas (memoria, comprensión, análisis, planificación, resolución de problemas, etc) porque la IA nos da la tarea hecha, no desarrollemos esas capacidades o, si ya las poseíamos, se puedan ir 'atrofiando' de alguna manera por 'falta de uso'.

En este caso, la neuroplasticidad del cerebro correría en nuestra contra porque el cerebro se acostumbraría a no usar ciertas capacidades y, al 'considerarlas inútiles' las iría, de alguna manera, borrando.


El caso del aprendizaje


Y el problema se agudiza cuando estamos hablando, no sólo de conservar capacidades cognitivas, sino del aprendizaje: de la adquisición de conocimientos y habilidades, y del propio desarrollo de esas capacidades cognitivas.

Este tema lo abordé también en mi podcast personal 'Divergencias', en el episodio que publiqué en Enero de este año y que titulaba 'Facilidad y aprendizaje: un posible impacto cognitivo de la IA' y que, si lo deseas, puedes ver en su versión video abajo.



En este episodio, razono como el 'hacer', cómo el intentar realizar nosotros mismos el trabajo intelectual, el memorizar, razonar, resolver problemas, escribir, etc es importantísimo para el aprendizaje. Incluso si la IA nos proporciona el mismo resultado que nosotros hubiéramos producido e, incluso si leemos atentamente esos resultados, el aprendizaje no es igual en absoluto.

Menciono cómo, la estrategia pedagógica conocida como 'learning by doing' se basa, precisamente, en el reconocimiento de lo importante que es una actitud activa, de práctica, en el aprendizaje.


La doble apuesta


Siempre que trato este tema, mi propuesta es, de alguna forma, lo que llamo la 'doble apuesta'.

En esa doble apuesta, por un lado, invito a reconocer la potencia y utilidad de la inteligencia artificial y la casi obligatoriedad hoy en día de dominarla para ser unos profesionales valiosos, relevantes y empleables. Y animo, claro, a su conocimiento y uso intensivo.

Pero, por otro lado, urjo a todos los profesionales, a todos los jóvenes y, en realidad, a todas las personas, a que cuiden su aprendizaje y desarrollo cognitivo, prescindiendo en ocasiones de la IA (en los temas que más te importan o que son de puro aprendizaje o estudio) y realizando actividades paralelas complementarias como la lectura, la escritura, el debate o el estudio tradicional, incluso el denostado aprendizaje memorístico.


Modos aprendizaje y modo producción


Hace pocas semanas finalicé la lectura del libro 'Nosotros, digitales' de Javier Lorente y me pareció interesante la forma en que él estructura un poco este mismo problema.

Javier se centra, específicamente, en el caso de la educación y describe el problema de la siguiente forma


Si utilizamos máquinas para acelerar la generación de productos intelectuales, dejamos de desarrollar las capacidades naturales y tendremos que buscar espacios para ejercitarlas de forma artificial, como hacen con su cuerpo los que frecuentan un gimnasio.


Nos habla de distinguir dos modos. Por un lado un modo producción en que lo que buscamos son resultados y eficiencia y, en ese sentido, la IA es una gran ayuda, hoy en día casi imprescindible. Y, por otro lado, un modo aprendizaje, en que  lo que importa no es producir, sino adquirir conocimientos y desarrollar capacidades intelectuales y, en ese caso, aunque sea menos eficaz, debemos esforzarnos en hacer las cosas por nosotros mismos.

Y para ilustrarlo utiliza el ejemplo del deporte y del entrenamiento, siendo el aprendizaje el equivalente al entrenamiento.

En realidad, Javier hablar de un tercer modo, creación, en que, digamos, 'damos libertad', a nuestro cerebro para que vague libremente recombinando conocimientos e ideas.


La realización y el disfrute


Quisiera añadir un punto adicional, que en alguna ocasión también he mencionado en algún medio y que tiene que ver con aquello que disfrutamos haciendo, aquello en que el propio proceso nos es altamente satisfactorio y que, por tanto, no deberíamos ceder a la IA salvo, puntualmente, cuando nos apriete la necesidad de resultados.

En mi caso, por ejemplo, me gusta mucho escribir, escribir en muchos formatos incluyendo, entre otros, éste que recibes: un artículo de blog. Automatizar con inteligencia artificial la generación de artículos para un blog es algo bastante sencillo y que podría y sabría hacer sin problemas e, incluso, me ayudaría a aumentar mi ritmo de publicación. Pero es que, simplemente, no quiero hacer con inteligencia artificial los posts de 'Blue Chip'.

No quiero, sobre todo, porque disfruto escribiéndolos.

No quiero porque, además, en el fondo es otra forma de aprendizaje, porque escribir te obliga a pensar y, sobre todo, estructurar lo que has pensado, y eso no deja de ser una forma de aprendizaje y desarrollo cognitivo. Y te obliga, en ocasiones, a buscar alguna información o aclarar algún punto... y eso también es aprendizaje.

Y no quiero finalmente, porque, en el fondo, a pesar de la potencia de la IA y a pesar, incluso, de su capacidad de personalización y adaptación a un estilo, en este caso el mío, creo que al final tú, lector, acabarías percibiendo una cierta 'despersonalización', una cierta falta de originalidad, una especie de impostura en el mensaje.

Y no quiero, simplemente no quiero.


Conclusiones


La IA es una tecnología potente, tremendamente útil, y casi imprescindible hoy en día en el arsenal de cualquier profesional. Sin embargo, el uso excesivo y, sobre todo, la delegación exagerada de tareas en la IA sin esfuerzo o reflexión por nuestra parte, puede acabar afectando a nuestras capacidades cognitivas o puede eliminar nuestro aprendizaje.

Parecen, pues, necesario, desarrollar y aplicar estrategias de trabajo y aprendizaje en que tengamos espacio para nosotros, para hacer nosotros el trabajo intelectual. En este sentido, puede ser útil como marco conceptual, la distinción entre los modos de aprendizaje y producción que nos propone Javier Lorente.


lunes, 1 de junio de 2026

¿Cómo aprenden los agentes de IA?

Los agentes basados en IA, aunque aún en proceso de maduración, son una cosa que roza en muchas ocasiones lo extraordinario, explotando, de formas muy potentes, las capacidades que ofrecen los grandes modelos de lenguaje.

Dejando aparte su autonomía o su capacidad para elaborar razonamiento y planes, ahora me fijo ahora en su capacidad para aprender, aprender a partir ejemplos o de la experiencia en un asombroso remedo de lo que hacen los seres vivos en general y los seres humanos en particular.

Me encuentro leyendo el libro 'Building Applications with AI Agents' de Michael Albada , que me está gustando mucho por cierto, y no he podido dejar de fijarme con mucha atención en la explicación que aporta en el capítulo dedicado al aprendizaje en sistemas agénticos y, en especial, a los denominados métodos no paramétricos de aprendizaje.


Métodos no paramétricos


Es bien sabido que el aprendizaje durante el entrenamiento de modelos de machine learning se produce, en la inmensa mayoría de los casos, mediante el ajuste de los parámetros del modelo.

Y es bien sabido que los modelos de IA generativa se basan en formas más o menos sofisticadas de redes neuronales donde, en general aunque no únicamente, los parámetros que se ajustan son los pesos de las conexiones entre neuronas.

Sin embargo, una propiedad que podemos comprobar casi como meros usuarios de ChatGPT o Claude, es que estos sistemas son capaces también de aprender sin un 're-entrenamiento' explícito o, por mejor decir, sin necesidad de ajustar sus parámetros.

Y es a estos métodos no paramétricos a los que quiero referirme en este post. 

En concreto, en la obra citada más arriba, se nos hablan de tres:

  • Aprendizaje mediante ejemplos
  • Reflexión
  • Aprendizaje mediante la experiencia 

Veamos estos tres tipos brevemente.


Aprendizaje mediante ejemplos: 'few-shot prompting' estático y dinámico


Esta primera forma es muy conocida y está abundantemente explicada y documentada. Se trata, simplemente, de proporcionar en el propio 'prompt' ejemplos de cómo se realiza la tarea. Estaríamos hablando, pues, de la técnica conocida como 'few-shot prompting'.

Sin embargo, en ese formato, en que los ejemplos se incluyen en el propio 'prompt', hablamos de un 'few-shot prompting estático , donde realmente, es el usuario el que 'manda'.

Existe una variante muy interesante que es el 'few-shot prompintg' dinámico. En este caso, se dispone de una base de datos vectorial (como las que se utilizan en la técnica de RAG 'Retrieval Augmented Generation' donde almacenamos los ejemplos de que disponemos. En este caso, ante un 'prompt', es el agente el que busca el o los ejemplos más adecuados en esa base de datos vectorial, usando mecanismos de búsqueda semántica (basada en significado no en coincidencia exacta de palabras clave), de la misma forma de nuevo, que se hace en RAG.

De hecho, creo que no sería incorrecto considerar que este 'few-shot promting dinámico es una forma particular de RAG.

Además, entiendo que, una vez que se dispone de esa base de datos de ejemplos, ésta puede ser enriquecida por el propio agente (o una comunidad de agentes), con lo cual el efecto aprendizaje es mucho más real, mas dinámico y evolutivo.


Reflexión


Siempre me ha llamado la atención este mecanismo de reflexión ('reflection'), identificado mediante un nombre que me resulta misterioso en la medida en que emula en ese nombre, evidentemente de forma intencionada, a una capacidad cognitiva humana tan profunda como es la reflexión.

Sin embargo, cuando se entiende bien, no es tan mágico (siempre que no consideremos casi mágico, claro, el propio funcionamiento de los grandes modelos de lenguaje.

Explicado como reflexión ('reflection') suena muy espectacular y sofisticado y, en cierto sentido lo es, pero lo es en la medida en que un gran modelo de lenguaje es realmente sofisticado porque, disponiendo de un buen modelo de lenguaje, el mecanismo de reflexión no es tan complejo

Lo que se hace es que el sistema agentico hace auto-crítica ('self-critique') ante un intento fallido de realizar una tarea. Para ello, claro, tiene que en primer lugar detectar que la tarea no se ha realizado correctamente (para esto, en algunos casos, podría tener ayuda externa en forma de feedback humano o medida de algún tipo de sensor, indicador o mensaje de error).

Una vez que ha comprendido que algo no ha ido bien, hace esa crítica y almacena 'sus conclusiones' en una memoria específica en que une esa reflexión con las acciones realizadas y lo observado. 

Y luego, cada vez que el agente va a realizar una nueva acción, busca las últimas 'reflexiones' en esa memoria y adecúa su comportamiento (es como incluir esas reflexiones en el contexto o el prompt... de hecho, eso es lo que hace).

 

Aprendizaje experiencial


El aprendizaje experiencial, en el fondo, es una evolución o ampliación del mecanismo de reflexión pero añadiendo un aprendizaje cruzado entre tareas. Es decir, no se trabaja sólo con las reflexiones de la misma tarea sino también de otras diferentes que se contienen en los denominados 'insights'.

Y existe una, digamos, gestión dinámica en el tiempo de 'insights' en que unos aparecen, otros desaparecen y existe una suerte de votación para que el agente tenga nociones de cuáles son los más relevantes o útiles.


Perplejidad


Sorprende, o al menos a mi lo hace, cómo un mecanismo cognitivo tan sofisticado como es el aprendizaje, se consigue de una forma relativamente sencilla y fácil de entender.

Creo que esto es una demostración de dos cosas: por un lado de la enorme potencia y versatilidad de los grandes modelos de lenguaje y, por otra, del indudable ingenio de las personas que diseñan estos mecanismos.


Siempre nos quedará el 'fine-tuning'


De todas formas, la cosa no acaba a aquí. Si estas formas no paramétricas de que los sistemas agénticos aprendan no son suficientes, siempre nos quedarán los métodos paramétricos, el famoso 'fine-tunning' en que, mediante un entrenamiento adecuadamente dirigido podemos añadir nuevas capacidades o una mejor adecuación a los modelos de lenguaje en que se basan los agentes. 


Conclusiones


Los sistemas agénticos presentan unas notorias capacidades de aprendizaje, sorprendiendo, por un lado, que son relativamente simples de entender e implementar y, por otro, que no precisan en general de un re-entrenamiento, al menos no un re-entrenamiento de los que alteran los parámetros del modelo: Y, por si esto fuera poco, una vez implementadas estas capacidades de aprendizaje, pueden funcionar de manera autónoma.

Increíble ¿verdad?



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


lunes, 20 de enero de 2025

Notas sobre aprendizaje por refuerzo (XIV): aprendizaje jerárquico

Había dejado en suspenso la serie de posts dedicados al aprendizaje por refuerzo, por aquello de los 'fatos navideños' y porque, entre medias, hubo también temas que me apeteció tratar antes.

Pero llega el momento de volver al tema y ponerle fin, lo que haré acometiendo los pocos posts restantes (dos o tres), de los cuales este es el primero. 

Y en él voy a esbozar alguna idea básica sobre el denominado aprendizaje por refuerzo jerárquico ('hierarchical reinforcement learning'). Y lo haré, como siempre en esta serie, apoyándome en lo que explica Aske Plaat en su libro 'Deep reinforcement learning'.

Pero antes, como siempre en esta serie de artículos, un repaso de lo visto hasta la fecha.


Recordatorio: lo que hemos visto de aprendizaje por refuerzo


El esquema que nos ha guiado, ha sido el siguiente:


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 c aso 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. 

En el último post, 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.


El enfoque jerárquico


El enfoque jerárquico de aprendizaje por refuerzo se basa, en realidad, y en primer lugar, en la estrategia de dividir un problema en sub-problemas, una técnica muy conocida del ámbito de la resolución de problemas. Hecha esa subdivisión, nos planteamos el aprendizaje de cómo realizar (cuál es la mejor política) para resolver cada sub-problema.

Se trata de un enfoque aplicable en teoría a cualquier problema secuencial, aunque en la práctica es más viable en unos tipos de problemas que en otros.

Algún problema muy adecuado para este enfoque sería, por ejemplo, el de la navegación de vehículos o robots. Igualmente, los problemas multi-agente que mencionábamos en el último post de esta serie, tienden a poder dividirse de manera natural en sub-problemas. 

Un riesgo de este enfoque jerárquico es que, dado que  buscamos sub-políticas, o por decirlo de otra mamera., optimizamos a nivel de sub-problemas, es posible que no consigamos una optimización absoluta a novel global, a nivel de todo el problema. De esta forma, el enfoque jerárquico tiende a dar soluciones menos óptimas que el enfoque, digamos, 'plano', pero haciéndolo más rápido.


Ventajas y desventajas del aprendizaje jerárquico


Podríamos decir que el enfoque jerárquico tiene las siguientes ventajas respecto al enfoque 'plano' (no jerárquico.


  • Simplifica la resolución de problemas mediante abstracciones. Los agente resuelven problemas granulares que resultan abstracción del problema en sub-problemas. Luego, las tareas granulares se agrupan en los problemas de mayor nivel de abstracción.

  • Se reduce el número de interacciones necesarias con el entorno, lo que conduce a eficiencia de muestreo. Entre otras cosas, se puede hacer 'transfer learning' de la resolución de subtareas aplicables en otros problemas.

  • Las políticas finales resultantes tienden a ser más generalistas, con mayor capacidad de adaptación a nuevas situaciones y por tanto se reduce la fragilidad de las mismas.

  • Permite resolver problemas mayores y más complejos.


A cambio, presenta las siguientes desventajas:


  • Necesita de, o al menos le resulta muy conveniente, un conocimiento del dominio del problema.

  • Presenta problemáticas de complejidad algorítmica en relación a la identificación de sub-objetivos, el aprendizaje de sub-políticas y las condiciones de terminación.

  • Introducen la idea de macro-acciones (combinaciones de acciones primitivas), el número de las cuales puede crecer de manera que se haga intratable y precise de enfoques aproximados.

  • La calidad de la política final, como ya dijimos, puede ser sub-óptima.


Un breve excurso: agentes


No he podido evitar, al hablar de este enfoque jerárquico, y de esa descomposición de problemas en sub-problemas, que mi mente se desviara hacia la idea de la Agentic AI, de los últimamente tan traídos y llevados agentes, unas soluciones software, cuyo 'cerebro' son modelos generativos del tipo de grandes modelos de lenguaje y una de cuyas promesas es, precisamente, que van a ser capaces de, recibiendo un objetivo como 'prompt', identificar las tareas (es decir, hacer una forma de descomposición) necesarias para conseguirlo y, a partir de ahí actuar.

No tengo claro de, hasta qué punto, beben esos agentes de las ideas del enfoque jerárquico objeto de este post, o prueban estrategias diferentes. Y tampoco está demostrado hasta la fecha, o al menos no me consta que así sea, que se hayan conseguido éxitos notables en esta materia...pero hay que dar un poco de tiempo. Se supone que los agentes son una de las grandes tendencias de 2025. Habrá que ver de hasta dónde son capaces de llegar en general, y en particular en esta capacidad, quizá su mayor reto,  de descomponer una tarea, o mejor, un objetivo, en subtareas accionables.


Conclusiones


El aprendizaje jerárquico parece un enfoque muy lógico si atendemos, incluso, a cómo razonamos los humanos, para afrontar problemas complejos. Sin embargo, parece ser más un campo de investigación que una realizad plenamente conseguida.

Pero la idea es muy interesante, y habrá que esperar resultados.

A ver si los tenemos en 2025.


Artículos de este blog relacionados


lunes, 16 de diciembre de 2024

Notas sobre aprendizaje por refuerzo (XIII): sistemas multi-agente

Casi todo lo que he comentado en esta larga serie de artículos dedicados al aprendizaje por refuerzo ('reinforcement learning'), se refería a problemas o situaciones en que nos centrábamos en un único agente, del cual queríamos maximizar su política.

En el último post, introdujimos ya el caso de dos agentes.

En este artículo damos un paso más para abordar los escenarios o sistemas multi-agente.

Como en toda esta serie, me guiaré por las enseñanzas recogidas en el libro 'Deep reinforcement learning' de Aske Plaat y, como anuncié en el post anterior, en los últimos artículos de esta serie profundizaré poco en los algoritmos propiamente dichos, delineando sólo las ideas principales.

Vamos, allá, pues, con los sistemas multi-agente.


Recordatorio: lo que hemos visto de aprendizaje por refuerzo


Pero antes, y como en toda esta serie, recordemos brevemente lo que hemos visto hasta ahora.


Mientras nos mantuvimos, en los primeros posts, en el caso de sistemas mono-agente, nos ocupábamos 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 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.

Y, en el último post, ya introdujimos brevemente las situaciones en que tenemos dos agentes, exactamente dos. Dos agentes 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 es 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, conduce 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).

Mediante los problemas mono-agente, se pueden tratar problemas como la locomoción de robots, la búsqueda de rutas o videojuegos. Y mediante los problemas de dos agentes, se ha conseguido tratar casos de juegos de mesa, por ejemplo. 


Sistemas multi-agente


Pues bien, ahora damos un nuevo salto de complejidad, abordando los escenarios o sistemas multi-agente, es decir, ya no nos limitamos a uno o dos agentes, sino que el número es mayor e indefinido.

Siendo un poquito formales, los problemas o sistemas multi-agente se podrían definir como problemas de decisión secuencial de múltiples agente autónomos que operan en un entorno estocástico compartido y donde cada uno de los agentes busca optimizar su recompensa a largo plazo mediante la interacción con el entorno y con los otros agentes.

El entrar en sistemas multi-agente, nos introduce además la idea de la colaboración entre agentes. En los casos mono-agente, no tiene sentido ni siquiera plantearlo y, en el caso de dos agentes, el foco ha estado en la competencia entre ellos, en los juegos de suma cero.

Sin embargo en los sistemas multi-agente una situación habitual es que los agentes colaboren para conseguir un objetivo común. Pero tampoco es extraño que los agentes compitan entre sí. Es decir, en los sistemas multi-agente, en general tenemos que contemplar tanto la competición como la colaboración.

Por eso, a la hora de trabajar con ellos, se suele dividir los problemas multi-agente en tres situaciones:


  • Comportamiento competitivo
  • Comportamiento cooperativo
  • Comportamiento mixto


Algunos retos de los sistemas multi-agente


Los sistemas multi-agente se enfrentan a varios retos. En concreto, en la obra citada, Plaat se concentra en tres:


  • Observabilidad parcial
  • Entornos no estacionarios
  • Espacios de estado grandes


El problema de la observabilidad parcial hace referencia que se trata de problemas en que no podemos suponer que el agente disponga de información perfecta sino que, bien al contrario, ésta es incompleta e imperfecta. Así, por ejemplo, un agente puede trabajar con información privada que no pone a disposición del resto de agentes, como se podría ejemplificar con las cartas propias de los jugadores de póker. Esto nos lleva a tener que considerar todos los posibles 'estados del mundo' lo que incrementa enormemente el número de variantes a considerar.

El problema de los entornos no estacionarios se refiere al hecho de que el entorno no permanece estable, dado que los agentes (que, en el fondo, forman parte del entorno para un agente dado) van mejorando sus propias políticas y, por tanto, el entorno para un agente dado, se modifica de manera continuada. De alguna forma, todos los agentes están aprendiendo de manera concurrente. El encontrarnos ante entornos no estacionarios hace que los agentes deban de tener en cuenta una suerte de espacio de acciones conjunto que, no sólo tenga en cuenta sus propias acciones, sino también las del resto de agentes. Esto, de nuevo, incrementa muchísimo, de manera exponencial, el espacio de acciones a considerar.

El tercer reto, espacio de estado grandes deriva, y en el fondo ya lo hemos mencionado, de que la presencia de múltiples agentes aumenta el espacio de acciones de manera exponencial con el número de agentes. De momento, la única forma de acometer estos grandes espacios de acciones es aplicando hipótesis simplificadoras pero realistas.


Aproximaciones


Plaat reconoce que este tipo de problemas no están realmente resueltos de manera general y que se encuentran fundamentalmente en investigación, pero menciona y describe algunos algoritmos o situaciones útiles como el CFR ('Counter Factual Regret minimization'), y su generalización a deep learning: Deep Counter Factual Regret Minimization con resultados interesantes para entornos competitivos.

También se explica la opción de, pese a estar hablando de agentes autónomos, centralizar el aprendizaje lo que, en el fondo, lo hace equivalente a un problema de un solo agente.

E igualmente explica estrategias en que se intenta reducir la complejidad, modelando el comportamiento del oponente basándose para ello en la teoría de la mente procedente del campo de la psicología.

Existen, asimismo, los algoritmos evolutivos (creo que otro nombre para o una derivada de los algoritmos genéticos) que se basan en los mecanismos propios de la biogenética: mutación, recombinación, y selección.

Finalmente, menciona los enfoques propios del 'swarm computing' (computación de enjambre) que se centra en los comportamientos emergentes que surgen en sistemas colectivos, descentralizados y auto-organizados.

No profundizaré más en los algoritmos aunque, especialmente el 'swarm computing' es muy de mi interés, y seguramente vuelva a él en otro momento ya fuera del ámbito del aprendizaje por refuerzo y pensando más en robótica..


Conclusiones


Un nuevo paso en el aprendizaje por refuerzo es el salto a los sistemas multi-agente donde, aparte de un entorno común, tenemos varios agentes autónomos, cada uno de los cuales desea optimizar su recompensa a largo plazo, y que interactúan entre si exhibiendo comportamientos tanto competitivos, como colaborativos o mixtos.

Aunque hay avances, se trata de un campo fundamentalmente en investigación.


Artículos de este blog relacionados


lunes, 9 de diciembre de 2024

Notas sobre aprendizaje por refuerzo (XII): autoaprendizaje y el caso de AlphaGo y AlphaZero

En los últimos tres o cuatro posts de esta ya larga serie dedicada al aprendizaje por refuerzo ('reinforcement learning'), voy a ir algo más rápido, en el sentido de sobrevolar un poco más los temas (que son progresivamente más complejos) y quedarme con  las ideas y enunciados principales, en un nivel algo más divulgativo.

En el post de hoy hablo del caso de autoaprendizaje con dos agentes que, como el propio nombre indica, contiene dos elementos nuevos:

  • El hecho de considerar dos agentes, en lugar de uno sólo, como habíamos hecho hasta ahora
  • El introducir la idea de autoaprendizaje.

Además, esto permitirá saltar de unas ideas que pueden parecer teóricas, a una realización muy concreta y conocida: AlphaGo y su sucesor AlphaZero. 


Repaso: Lo que hemos visto de aprendizaje por refuerzo


Antes, y como siempre en esta serie de posts sobre aprendizaje por refuerzo, un resumen de lo que hemos hablado hasta ahora



Estamos, al menos hasta ahora, ante 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 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. 

Finalmente, en el último post, hablábamos del 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.


La interacción de dos agentes


Ahora toca introducir varias novedades. La primera es que vamos a hablar de dos agentes en lugar de uno. Hasta ahora siempre habíamos considerado un agente interactuando con su entorno, pero ahora hablamos de dos agentes interaccionando entre sí.

En la referencia bibliográfica que ha guiado toda esta serie de posts, y que también lo hace con éste, el libro 'Deep reinforcement learning' de Aske Plaat, se nos indica que hay dos motivos que hacen interesante considerar este caso, a saber:


  • Que nos acerca a situaciones más realistas donde es habitual la existencia de varios agentes 
  • Que se han obtenido grandes éxitos en esta variante de aprendizaje por refuerzo, especialmente en el campo de los juegos.


Problemas de suma cero


Nos centramos además, en un tipo de problema muy común en el mundo de los juegos, que son los de suma cero, es decir, la ganancia de un agente supone en la misma medida la pérdida del otro.

Esto supone dos cosas: por un lado, que el entorno para un agente dado, es fundamentalmente el otro agente, y que este entorno es, por decirlo de alguna manera, hostil.

Si en los problemas que habíamos tratado hasta ahora, podíamos considerar al entrono 'neutral' (reacciona a las acciones del agente pero sin ningún 'propósito' ni de beneficiarle ni de perjudicarle) en los problemas de que hablamos ahora, el otro agente, que viene a ser el entorno, trabaja en contra del primer agente (y, as u vez, éste trabaja en contra del segundo agente, naturalmente. Por lo tanto, cuando un agente intenta aprender una política óptima, debe de tener en cuenta todos los posibles contraataques


Autoaprendizaje


Un enfoque para el aprendizaje por refuerzo en este caso es el denominado autoaprendizaje en el que sustituimos al entorno por una copia de nosotros mismos.

¿Qué quiere decir esto?

Nosotros somos uno de los agentes y nos comportamos racionalmente para intentar ganar el juego. Suponemos, evidentemente, que el otro agente es tan racional como nosotros y, por lo tanto, que podría actuar exactamente conforme a nuestra política. Por tanto, el otro agente, y por ende el entorno, tiene exactamente el mismo modelo que nosotros mismos.

Se trata, además, de un caso de aprendizaje basado en modelo, puesto que disponemos de un modelo del entorno.

En el autoaprendizaje se crea una suerte de círculo virtuoso en que usamos el entorno (que es una copia de nosotros mismos) para generar ejemplos de entrenamiento. Con esos ejemplos, mejoramos nuestro comportamiento, nuestra política, y también la del entorno, (que es una copia de nosotros mismos). Y así sucesivamente, tanto el agente como su entorno (que, ¿lo he dicho ya? es una copia de él mismo) van mejorando, y mejorando, y mejorando... sin ningún apoyo externo. Y así hasta la excelencia.

Se me ocurre decir, de mi cosecha, que es, además, una forma de aprendizaje muy económica y práctica, porque no necesitamos de ningún entorno del que aprender o del que obtener información mediante sensores o mecanismos similares.

Anotar finalmente que me estoy tomando la libertad de traducir como 'autoaprendizaje' lo que en realidad sería auto-juego ('self-play') o juego con uno mismo. Me ha parecido que como autoaprendizaje transmitía mejor la idea.


Algunos algoritmos


Como decía al inicio del post, no voy a profundizar en detalles algorítmicos, pero para beneficio del lector más avanzado, y por si 'quiere tirar del hilo' menciono los algoritmos que aparecen en el libro de Plaat.

El autor nos habla de MCTS ('MonteCarlo Tree Search') que es un algoritmo de búsqueda en un árbol o Alpha Zero tabula rasa. 


AlphaGo y AlphaZero.


Como no es difícil de imaginar, este tipo de aprendizaje se adapta de manera excelente al caso de juegos con dos jugadores y reglas muy claras.

Y, en efecto, se ha utilizado, por ejemplo, para jugar al ajedrez o el mucho más complicado juego del Go, dos juegos, tanto el ajedrez como el Go que, aunque complejos, se pueden considerar de información perfecta, en el sentido de que los dos agentes tienen una información completa y precisa de la situación del juego en cada momento.

En este campo del Go son casi míticos los sistemas AlphaGo y AlphaZero, siendo el primero el que batió a Lee Sedol en el legendario encuentro de Mayo de 2016.

AlphaGo, combinaba un aprendizaje supervisado con base en información de jugadores expertos con autoaprendizaje, usando tanto MCTS y autoaprendizaje. Su evolución AlphaGo Zero ya utilizaba únicamente autoaprendizaje mediante AlphaZero tabula rasa. Finalmente, AlphaZero, es una generalización del anterior válido para otros juegos. 


Conclusiones


Aunque superficialmente, hemos visto cómo se extiende el modelo de aprendizaje por refuerzo al caso de dos agentes, y también hemos conocido algunas ideas sobre el autoaprendizaje, que ha concluido a éxitos tan sonoros de la inteligencia artificial como la consecución de AlphaGo y su sucesor AlphaZero.


Artículos de este blog relacionados