viernes, 20 de diciembre de 2024

Computación afectiva y voz: detección de estados anímicos en la cara y en la voz

Un campo de la computación, y muy especialmente de la que tiene que ver con la inteligencia artificial, que recibe gran interés, aunque al tiempo resulta polémico o desafiante desde el punto de vista ético y regulatorio, es la detección de emociones por las máquinas, por algoritmos y robots.


Computación afectiva


Aunque últimamente quizá no se utilice mucho este nombre, existe un subconjunto de la inteligencia artificial denominado computación afectiva ('affective computing') que se concentra en ello, una disciplina a la que hace un tiempo dediqué bastante espació en este blog a propósito de la lectura del libro 'The Oxford handbook for affective computing' y una disciplina que su creadora, Rosalind Pickard definía como 


computing that relates to, arises from, and deliberately influences emotion.


una definición compacta y clara y no exenta de ambición e incluso polémica puesto que declara la intención, no sólo de detectar emociones sino de, deliberadamente, influir en ellas.


Modelos de emociones. 


Una de las tareas de la computación afectiva es, claro, detectar las emociones de los humanos. Y el resultado de esa detección podría ser, simplemente, una etiqueta que clasifique la emoción. En esa labor es frecuente acudir al campo de la psicología para que nos defina y clasifique de alguna manera las emociones humanas.

Un muy famoso, aunque no completamente aceptado, modelo de emociones es el de las seis emociones básicas definidas por Paul Ekman, que identificaba seis emociones que, además, se daban en todas las culturas: alegría, ira, miedo, asco, sorpresa, tristeza.


Las seis emociones fundamentales de Ekman

Hay que decir que este modelo ha sido discutido y que el propio Ekman amplió este modelo para llegar hasta las quince emociones, en lugar de 6.


Detección visual de emociones 


No es del todo difícil imaginar cómo trabajar en la detección visual de emociones. Más o menos, la idea podría ser: partimos de un sensor (típicamente una webcam) que captura la imagen y se le da como entrada a un algoritmo (típicamente una red neuronal, probablemente con unas primeras capas de convolución para 'entender la imagen' y otras capas densas finales para realizar la clasificación con una función de actividad final de tipo softmax). A este algoritmo, evidentemente se le ha entrenado previamente, seguramente mediante aprendizaje supervisado, para que aprenda a hacer la clasificación.

El mismo Ekman planteó también otra forma de trabajar, no pensando en machine learning, pero sí orientada a la detección visual de las emociones, mediante el desarrollo de FACS ('Facial Action Coding System') en que se definen una serie de unidades de acción ('action units') que eran como elementos de la expresión facial anatómicamente observables y que luego se relacionan con emociones.


FACS y action units

Lo que no cabe duda es de que, con mayor o menor acierto, es viable la detección de emociones humanas mediante la expresión facial


Análisis de sentimiento


Pero hay otros mecanismos. Es muy conocido en el campo de la inteligencia artificial el denominado análisis de sentimiento ('sentiment analysis'), que trabaja con un texto (texto que lo puede haber tecleado un usuario, que puede proceder de un tuit, un correo electrónico, una noticia, un documento, o que puede provenir de la conversión a texto de lo dicho vocalmente por una persona) y se le asigna una etiqueta que representa la actitud del emisor/emisora de ese texto hacia lo que allí expresa.

Es una tarea propia del procesamiento de lenguaje natural y que da buenos resultados en el estado actual de la tecnología.


Detección acústica de emociones


Pero lo que, en el fondo, me ha animado a escribir este post es otra forma de detectar emociones humanas, en este caso, con base en la voz y las propiedades físicas del sonido emitido por el humano.

Se trata de una forma de trabajo que me encuentro descrito en el libro 'The Oxford Handbook of Computational Linguistics' editado por Ruslan Mitkov y, en concreto, en el capítulo 'Text-to.Speech synthesis' de Thierry Dutoit y Yannis Stylianou.

En este caso, se trabaja con el propio sonido, con la onda del sonido, no con el texto que se expresa, enlazando un poco, aunque creo que no exactamente, con la idea de la prosodia.

Se trata de la exposición de un trabajo ya antiguo, realizado por la propia Rosalind Pickard de la que hablábamos más arriba, y que relaciona las propiedades del sonido de la voz con las seis emociones de Ekman, que mencionábamos antes.

En la tabla se pueden observar esas correspondencias.



Como se puede ver en esa tabla, Pickard se fijaba en cuatro propiedades:

  • La velocidad del hablante, es decir la tasa a la que va emitiendo elementos léxicos

  • El tono ('pitch') es decir, si es más agudo o más grave, (medido a partir de la frecuencia fundamental del sonido de la voz) y del cual evalúa tanto su valor medio como el rango de tonos empleados.

  • La intensidad de la voz 


Aunque parece un estudio algo preliminar y no del todo operativo, da buenas pistas de cómo las propiedades físicas de la voz correlan con las emociones y estados anímicos.


Combinaciones


No me resulta difícil imaginar que un mecanismo avanzado de detección de emociones, como podría incluir un robot social avanzado, probablemente reuniría percepción multisensorial y ejecutaría un análisis multimodal que combinaría los elementos visuales, textuales, acústicos e incluso alguno más, para proporcionar un mecanismo de detección de emociones altamente sofisticado y efectivo.


Conclusiones


Por si alguien lo duda a estas alturas, las máquinas, combinando sensores y procesamiento mediante inteligencia artificial, están bien preparadas para detectar emociones en los humanos, unas emociones que pueden detectar, al menos, mediante la imagen facial, el texto expresado por la persona y, además, por el propio sonido de la voz.

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


miércoles, 11 de diciembre de 2024

Tres formas de personalizar un LLM

Una de las 'magias' que ha traído consigo la inteligencia artificial generativa, que ya por sí misma parece pura magia si no fuera porque parece que ha hemos perdido un poco la capacidad de asombrarnos, son las posibilidades que ofrece de adaptar los modelos, personalizarlos para una dominio, unas circunstancias o incluso los gustos o características de una persona concreta.

En parte por eso, aunque no únicamente por eso, ha surgido el término de modelo fundacional para designar este tipo de modelos: porque sirven como base para muchos modelos y aplicaciones, extendiendo en cierto sentido, su propósito original.


Grandes modelos de lenguaje


Aunque existen muchos modelos generativos, y aunque la creciente multimodalidad y convergencia o concurrencia de modalidades y modelos al menos en las mismas soluciones tienden a desdibujarl las fronteras, me voy a centrar en este caso, 'sólo' en los grandes modelos de lenguaje, del tipo de los GPT.

Estos modelos, como muchos de los lectores de este blog probablemente conozcan, modelan el lenguaje humano y recogen, bajo una perspectiva esencialmente probabilista, la estructura de ese lenguaje tanto en sintaxis como en morfología. Asimilan, además, a partir del entrenamiento y sea dicho cono comillas "conocimiento" humano expresado en ese lenguaje y manifestado en webs, libros o la wikipedia. Y recogen, hasta cierto punto, unas ciertas nociones semánticas, no porque tengan ningún tipo de conocimiento real sobre significados pero sí porque, mediante los famosos 'embeddings' tienen conceptos bastante acertados de cercanía semántica de palabras.

Con eso, con el uso de mecanismos de atención que le permiten fijarse de manera selectiva en amplios contextos textuales, y con una atención autorregresiva, que permite que el modelo mantenga la coherencia cuando su respuesta se alarga, alcanzamos los espectaculares, por más que ya casi asimilados, resultados de este tipo de modelos, y que se hicieron célebres hace ya algo más de dos años, con el icónico lanzamiento de ChatGPT.


La adaptabilidad de los modelos generativos.


Pero una capacidad que, aunque no totalmente ausente en la inteligencia artificial discriminativa, se potencia, casi exacerba, en la generativa, y en concreto en los grandes modelos de lenguaje, es la posibilidad de personalizarlos y adaptarlos.

La mayoría de algoritmos en general, y de inteligencia artificial y machine learning en particular, 'son como son': una vez desarrollados y/o entrenados, así se quedan y se utilizan tal cual son. Sí que se contempla, por ejemplo para modelos analíticos, el reentrenamiento periódico para adaptarse a cambios en el entorno. Pero, aún así, se trata de una forma de adaptación, todavía un poco estática (a lo mejor se reentrena cada seis meses o un año) y no generalizada.

Es cierto también que, ya desde hace años, y como forma de intentar conseguir mayor eficiencia en los entrenamientos de los modelos y menor necesidad de datos, se lleva trabajando, y con éxito creciente, en mecanismos de 'transfer learning', es decir, en la reutilización un modelo ya entrenado y más o menos genérico, para, o bien adaptarlo mediante el 'fine tunning' al que luego nos referiremos, o bien reutilizarlo como una especie de 'backoffice' cuya salida servirá de entrada a otro modelo más especializado.

Pero creo, que esa capacidad de adaptación es mayor, y utilizando nuevos mecanismos, en el caso de los modelos generativos.


Tres mecanismos de adaptación 


En concreto, y no sé si me dejo alguno en el tintero, creo que no, hay como tres formas fundamentales de adaptar o personalizar un modelo generativo, de manera que resulte más adecuado o más especializado para un dominio o área de conocimiento concreto o, incluso, que responda mejor a las características e intereses del usuario final. Las tres formas serían las siguientes:


  • 'fine tunning': Es la traslación de algo que, como acabo de comentar, ya se hacía en la inteligencia artificial discriminativa. La idea es que, el entrenamiento 'más difícil', el inicial, y el que precisa de una cantidad enorme de datos, se realice una sola vez por parte de la entidad que crea el modelo. Eso es lo que se denomina pre-entrenamiento. Eso es lo que hace, por ejemplo, OpenAI con sus modelos GPT donde, por cierto, la 'P' del acrónimo representa, precisamente 'Pre-trained'. Y luego, cada organización, e incluso cada persona que desee adaptar el modelo, puede hacer un segundo entrenamiento, muchísimo más limitado en datos, con información del dominio específico. Esto es lo que se denomina 'fine tunning' y, aunque ya existía hace tiempo, quizá gana relevancia y visibilidad en el caso de los modelos generativos. Como ilustración de esa facilidad, y posibilidad incluso para organizaciones muy pequeñas, se puede ver la manera en que Open AI describe la forma de hacer 'fine tunning' con sus modelos. Este mecanismo es el único, de los tres que vamos a ver, en que realmente se modifica el modelo como tal, básicamente en sus parámetros internos. En el caso de los dos que siguen, se personaliza la respuesta, pero no el modelo propiamente dicho.

  • RAG ('Retrieval Augmented Generation') Este mecanismo está orientado a complementar al modelo con información nueva que, o bien se ha producido con posterioridad a su entrenamiento (pero que se puede obtener típicamente en la web a través de un buscador SEO 'de toda la vida', o bien es información propia, e incluso privada, de una organización o persona, información que puede residir en documentos, sistemas de información, etc. En este caso, más que re-entrenar el modelo, lo que se hace es darle mucho más contexto (contexto que procede del buscador o de la información privada) antes de que genere su respuesta. Este contexto 'se une' al prompt del usuario, formando una especie de 'macro-prompt', por decirlo de alguna manera, que es la entrada final al modelo generativo. Este mecanismo de RAG, cada vez 'más de moda', lo describí someramente en un post de hace unos días.

  • Contexto y 'feedback' del usuario: Finalmente, el mecanismo más sencillo, y en cierto modo más alucinante, es la personalización con base en la interacción con el propio usuario y su feedback. En el fondo, es muy parecido a RAG. Lo que se hace es que, junto con el prompt que introduce el usuario, el modelo recibe como entrada información adicional que procede de interacciones anteriores, incluyendo feedback del usuario. Al igual que en RAG, casi diría que de forma complementaria, ese contexto pasa a formar parte de esa especie de 'macr-oprompt' que mencionaba en el punto anterior.


En el libro 'Unlocking Data with Generative AI and RAG' de Keith Bourne, señala algunas fortalezas y debilidades de estos mecanismos. Así, nos dice que el 'fine tunning' funciona bien para complementar al modelo con nuevo conocimiento sobre, por ejemplo, la forma de hacer tareas especializadas, pero no tanto para que el modelo recoja información factual (datos, hechos relevantes, etc). Sin embargo, ahí, en la información factual, es donde destaca RAG.

Me resulta atractiva la metáfora o comparación que el autor utiliza, diciendo que el hacer 'fine tunning' es como utilizar o mejorar la memoria de largo plazo. Sin embargo, aportar contexto vía RAG o feedback del usuario es más como utilizar la memoria de corto plazo.

El autor apunta también que, RAG (y yo añado que la interacción con el usuario) se ve limitada por el tamaño de la ventana de contexto (expresado normalmente en número de tokens), cosa que no afecta al 'fine tunning' que, en cierto modo, admite una nueva información ilimitada.

Aunque quizá en esta tipología de formas de personalizar, pueda haber simplificado un poquito, y aunque me apuesto algo a que este es un tema que va a evolucionar, y rápidamente, creo que con lo expuesto, el lector que no lo conociera ya, puede hacerse una idea clara y esquemática sobre cómo conseguir la adaptación y personalización de los modelos generativos,


Conclusiones


Una de los aspectos, no exclusivos, pero sí bastante característico, de los modelos generativos, y en concreto los grandes modelos de lenguaje, es la posibilidad, relativamente sencilla, de adaptarlos o personalizarlos a tareas concretas, a dominios específicos o a las preferencias y gustos del usuario.

Aunque quizá simplificando un poco (no creo que mucho) existen básicamente tres formas de hacerlo: mediante 'fine tunning', mediante RAG y mediante interacción con el usuario.


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