miércoles, 16 de octubre de 2024

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

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

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

Pero, primero, repasemos dónde estamos.


Recordatorio: reinforcement learning


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



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

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

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

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

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

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

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


Recordatorio: los tres desafíos del deep reinforcement learning


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


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

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

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


La llegada de DQN (Deep Q-Network)


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

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


Primera receta: repetición de experiencia


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

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

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

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

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


Segunda receta: actualización infrecuente de estados


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

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


El recetario no acaba aquí


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

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

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


Conclusiones


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


Artículos de este blog relacionados


miércoles, 9 de octubre de 2024

Notas sobre el aprendizaje por refuerzo (VI): los tres retos del deep reinforcement learning

En el post anterior de esta ya larga serie dedicada al aprendizaje por refuerzo ('reinforcement learning'), comentamos que, cuando estamos tratando un problema en que el espacio de estados del entorno es muy grande (cosa que es habitual en problemas reales), los mecanismos tradicionales basados en tablas (algoritmos tabulares) no eran aplicables y teníamos que pasar a utilizar algoritmos de redes neuronales y deep learning.

En este post vamos a ver que esto, aunque perfectamente posible, no es sencillo del todo, y que el así llamado 'deep reinforcement learning', se enfrenta a algunos retos y dificultades.


Repaso: el problema del aprendizaje por refuerzo


Antes, y siguiendo la práctica ya habitual de esta serie, recordamos algunas ideas.



Estamos en la situación en que un agente (por ejemplo, un robot) interactúa con un entorno, para lo cual realiza sobre éste una serie de acciones (a). La situación de ese entorno se define por una serie de estados. Cuando el entorno, que se encuentra en un estado s, recibe la acción, puede producirse en él una transición de ese estado s a otro s'. Esas transiciones están gobernadas por una función Ta, normalmente probabilista (estocástica). Cuando se produce ese cambio de estado el agente recibe del entorno una recompensa r.

El agente decide las acciones a realizar siguiendo una política π.

Lo que buscamos en el aprendizaje por refuerzo es que el agente aprenda la mejor política posible para conseguir maximizar la recompensa acumulada a sus acciones.

En esa labor, muchos algoritmos de aprendizaje por refuerzo se apoyan en las funciones de valor-estado Q, que, para una política dada, nos proporcionan la recompensa esperada acumulada cuando en un estado s comenzamos con una acción a. Los denominados métodos tabulares, como SARSA y Q-Learning, se apoyan, simplemente, en reglas y tablas de estados para su cálculo.

Sin embargo, cuando ese espacio de estados exhibe una altísima dimensionalidad (muchísimos estados posibles), como es frecuente en problemas reales, no podemos usar esos métodos tabulares que se basan en disponer de reglas en forma de tablas donde cada estado es un registro (una fila).

En lugar de eso, lo que hacemos es trabajar, no con los estados propiamente dichos, sino con unas características ('features') que, de alguna forma, resumen y caracterizan los estados y utilizamos esas características como entradas para una red neuronal, una red profunda y, por tanto, del campo del deep learning, dando lugar a lo que se suele denominar 'deep reinforcement learning'.

Pues bien, esta práctica se enfrenta a algunos retos que son los que vamos a revisar a continuación.


Bootstrapping


Pero antes de ver los retos, conviene conocer el concepto de 'bootstrapping', algo que ya estaba presente en los algoritmos tabulares, pero que no habíamos comentado.

Recordemos que el aprendizaje por refuerzo es un mecanismo de ensayo y error, donde, por decirlo de alguna manera, el agente 'no sabe lo que se va a encontrar' en el siguiente paso. El agente va construyendo las funciones de valor (V) y valor-estado (Q), que le ayudan a decidir en los siguientes pasos.

Pero, como realmente no 'conoce bien' el entorno, esos valores (que recordemos son la recompensa acumulada esperada) se van ajustando de manera iterativa.

Pues bien, el así llamado 'bootstrapping' es, precisamente, ese proceso de refinamiento progresivo por el que unos valores (una recompensas esperadas) antiguos, son actualizados por unos nuevos valores (unas nuevas recompensas esperadas).

No vamos a detallarlos, pero sólo comentar que existen algoritmos para este bootstrapping como el algoritmo de Bellman o el aprendizaje por diferencias temporales.

El lector interesado puede consultarlos en el libro que me sirve como referencia para este post y, en general, para toda esta serie, a saber, el libro 'Deep reinforcement learning' de Aske Plaat . 


El planteamiento del deep reinforcement learning


Retomando nuestro hilo argumental, lo que se pretende en el 'deep reinforment learning' es transformar unas funciones basadas en tablas, las funciones valor (V), valor-estado (Q) y la política (π), en unas redes neuronales que dependen de unos parámetros (los pesos), unos parámetros que en su conjunto denominaremos como θ. 

Es decir, queremos implementar y optimizar unas funciones Vθ, Qθ y πθ.


Los tres retos del deep reinforcement learning  


En el libro de Aske Plaat se identifican tres retos para conseguir este objetivo: 

  • La convergencia a un valor óptimo de la función valor-estado (Q), que dependería de una cobertura total del espacio de estados, debe conseguirse teniendo en cuenta que es imposible muestrear totalmente ese espacio de estado

  • Existe una gran correlación entre las muestras de entrenamiento consecutivas, con un alto peligro de llegar a un óptimo local, no global, en el proceso de optimización

  • Cuando aplicamos (como habitualmente en redes neuronales) el algoritmo de descenso de gradiente sobre una función de pérdida como mecanismo para luego ajustar pesos, nos encontramos con que esa función de pérdida va variando, con lo que nos estamos ante una especie de 'blanco móvil'.


El problema del blanco móvil y la convergencia


El problema del blanco móvil es especialmente interesante así que lo comento brevemente.

En un aprendizaje supervisado se utiliza un conjunto de datos ('dataset') estático durante todo el entrenamiento. Por tanto la función de pérdida o error ('loss function'), es estable durante el entrenamiento.

Sin embargo, en el caso del aprendizaje por refuerzo, el aprendizaje de una política, se apoya en los valores de la función Q, que también está evolucionando durante el aprendizaje mediante una forma de 'bootstrapping').

Eso es lo que constituye el 'blanco móvil' y la dificultad que esto supone.


Spoiler: hay solución


No voy a complicar ni alargar más este post explicando cómo se superan esos retos, seguramente lo haga en el siguiente post de la serie, pero sí puedo adelantar, como el lector ya se habrá imaginado, que para estos retos se han encontrado soluciones.


Conclusiones


Hemos visto cómo, en el 'deep reinforcement learning'. las funciones de valor, estado valor y política (V, Q y π), las implementamos mediante redes neuronales profundas.

Y hemos visto que eso plantea tres retos que tiene que ver con la imposibilidad de muestrear todo el espacio de estado, con la correlación y con que durante la optimización apuntamos a un 'blanco móvil').

Por suerte, y gracias al trabajo de científicos e ingenieros, para estos retos se ha encontrado solución.


Artículos de este blog relacionados



viernes, 4 de octubre de 2024

El cerebro como teatro del mundo según Rafael Yuste

'El cerebro, el teatro del mundo' es un libro del famoso neurobiólogo español, Rafael Yuste. Un libro en que ya desde el principio nos deja claras dos cosas. Por un lado, que se trata de un libro divulgativo y para el gran público, y no un libro realmente científico. Por otro, que va a exponer una teoría, la del surgimiento de la mente humana a partir de la actividad neuronal y, en concreto, de los grupos neuronales o redes neuronales, que no está completamente confirmada científicamente pero que es su entendimiento y apuesta actuales.

La mención en el título al teatro del mundo, que también hace de hilo conductor durante toda la obra, es un guiño y referencia explícita a la obra 'El teatro del mundo' de Calderón de la Barca y, con ese apelativo hace mención a una idea, que indica también procede de Kant, de que nuestro cerebro crea un modelo del mundo que, en el fondo es lo que percibimos y donde nos desenvolvemos y no tanto en el verdadero mundo exterior actuando, pues, el cerebro, como una forma de escenario o de teatro del mundo.

La obra, no muy extensa, se estructura en diez capítulos, como sigue:
 
  • 'Capítulo 1 De la doctrina neuronal a las red:' Comienza haciendo una descripción del encéfalo, incluyendo por supuesto el cerebro, de la médula espinal y hace una explicación de la teoría neurocientífica más tradicional, que pone el foco en la neurona individual, frente a la nueva teoría emegente que se centra más en redes neuronales y conjuntos neuronales.

  • 'Capítulo 2 De las redes neuronales al teatro del mundo:' Hace una descripción evolutiva de cómo se fue creando el cerebro y el sistema nervioso en los seres vivos a lo largo del proceso evolutivo. En esa evolución destaca la importancia que tuvo el movimiento de los seres y lo que eso imponía a su 'sistema de control' y, de hecho, con esta idea del control establece unos paralelismos con los sistemas de control propios de la ingeniería. Y saca a relucir por primera vez (aunque a lo largo del libro aparece muchas otras veces) la teoría kantiana de que realmente el mundo está en nuestras mentes aunque pueda reflejar de alguna forma lo que hay en el exterior.

  • 'Capítulo 3 El teatro del mundo por dentro: las neuronas digitales:' Explica con cierto detalle la estructura y funcionamiento de las neuronas, las sinapsis entre ellas y el mecanismo de activación. También destaca la existencia de neuronas inhibitorias y, en realidad, la de muchas clases de neuronas diferentes.

  • 'Capítulo 4 El teatro del mundo por dentro: las redes y conjuntos neuronales:' Comienza a desarrollar la nueva teoría que pone más foco en los conjuntos neuronales que en las neuronas individuales. En el discurso habla y describe también las redes neuronales artificiales, las propias del la inteligencia artificial y el deep learning.

  • 'Capítulo 5 Cómo se construye el teatro del mundo:' En un curiosísimo capítulo, se explica cómo se va construyendo el sistema nervioso durante el embarazo y primeros años de la niñez
  • .
  • 'Capítulo 6 Ajustar el teatro del mundo a la realidad con los sentidos:' Explica cómo funcionan, desde un punto de vista neuronal, los sentidos, con especial foco, como es natural, en la vista y el oído.

  • 'Capítulo 7 El desván de la memoria del teatro del mundo:' Como anticipa claramente el título, explica los mecanismos de la memoria, comenzando con su utilidad, continuando con el funcionamiento del hipocampo, el papel de los conjuntos neuronales y el funcionamiento y papel de la dopamina. Finalmente, comenta el fenómeno de la plasticidad de los recuerdos.

  • 'Capítulo 8 El pensamiento: poner a funcionar el teatro del mundo:' Ataca el pensamiento consciente, comenzando por describir la corteza cerebral y su papel, así como su naturaleza probabilista, el rol de la corteza temporal, parietal y prefrontal, para terminar hablando de la conciencia y los sueños.

  • 'Capítulo 9 Ejecutar el plan perfecto con músculos y emociones:' Habla de los mecanismos neuronales de la decisión, el funcionamiento del cerebelo y el importante papel de las emociones en el control del comportamiento. También señala el papel del hipotálamo y los péptidos y detalla el papel del sistema nervioso periférico y entérico.

  • 'Capítulo 10 En el umbral de un nuevo humanismo:' Un capítulo de remate final, en que explora las posibles repercusiones de la nueva teoría expuesta en la medicina, en la tecnología y en la sociedad. Y remata con una apuesta por una cultura humanística.

Un libro interesante, de base científica aunque sin profundidad, redactado de forma amena y con buenas ilustraciones y que se convierte en una excelente opción para un acercamiento sencillo a la neurociencia.

Rafael Yuste

(Fuente: Entrada en Wikipedia en español)

Rafael Yuste
Rafael Yuste (Madrid, 25 de abril de 1963) es un neurobiólogo español, ideólogo del proyecto BRAIN. Es profesor de ciencias biológicas en la Universidad de Columbia, Nueva York; actualmente su trabajo se ha centrado en descifrar cómo funciona la conciencia y los recuerdos, llegando a alterar experimentalmente "recuerdos" en animales de laboratorio.

A los catorce años su padre le regaló el libro de Santiago Ramón y Cajal 'Los Tónicos de la Voluntad: Reglas y consejos sobre investigación científica'. Estudió Medicina en la Universidad Autónoma de Madrid (1982-1987) tras realizar el Bachillerato en el Instituto Ramiro de Maeztu de Madrid. En el laboratorio de biología molecular del premio Nobel sudafricano Sydney Brenner en Cambridge (1985-1986) sintió la vocación por la neurobiología. A finales de los años 80, viajó a Estados Unidos donde se doctoró en la Universidad Rockefeller dirigida por el premio Nobel Torsten Wiesel. En el tiempo que estuvo allí (1987-1992)4​ creó y desarrolló la técnica del calcium imaging para medir la actividad neuronal fundándose en el hecho de que, cuando una señal eléctrica despolariza una neurona, los canales de calcio son activados, permitiendo así que los iones de Ca2+ entren en la célula. Si se tiñe un área del cerebro con un colorante sensible al calcio, se puede detectar cuándo una neurona está activa mediante microscopia. Para ello tuvo que estudiar computación biológica en los laboratorios de ATT/Bell supervisado por el doctor David Tank (1992-1996). La técnica, expuesta en su tesis doctoral dirigida por Wiesel y Lawrence Katz, 'Optical studies of calcium dynamics in developing neocortical neurons', se convirtió en uno de los pilares de la neurobiología.

En septiembre de 2011, cuando una cincuentena de neurobiólogos y nanofísicos se reunieron en la ciudad inglesa de Buckinghamshire para discutir proyectos conjuntos, Rafael Yuste, ya Catedrático de Ciencias Biológicas y Neurociencia e investigador desde 2005 de la Universidad de Columbia, propuso registrar la actividad de circuitos neuronales enteros a escalas de milisegundos, y eventualmente de cerebros completos en tres dimensiones. La idea cundió y recibió el apoyo y la colaboración del científico George Church y de Miyoung Chun, vicepresidenta de La fundación Kavli, y la técnica se fue refinando para ganar precisión, resolución y amplitud. Actualmente el proyecto Brain Activity Map (o BRAIN Initiative) pretende a largo plazo desarrollar los métodos ópticos y eléctricos que permitan mapear y manipular la actividad de todas y cada una de las neuronas del cerebro. Se empezaría con animales pequeños, como el gusano Caenorhabditis elegans, la mosca Drosophila, el pez cebra y algunos circuitos particulares del cerebro del ratón (retina, bulbo olfatorio y áreas corticales específicas). En la actualidad es editor jefe de Frontiers in 'Neural Circuits' y, además de codirigir el Instituto Kavli de investigaciones neurológicas de la Universidad de Columbia desde 2004 y trabajar en el proyecto de cartografiar el cerebro humano, dedica algunas semanas al año al Instituto Cajal de la Universidad Politécnica de Madrid; también asesora a institutos tecnológicos de Andalucía, País Vasco y Cataluña. En septiembre de 2013 recibió un premio de 2 millones de euros de la agencia de Institutos Nacionales de Salud de Estados Unidos para el desarrollo del proyecto BRAIN, convirtiéndose en la gran apuesta científica de la administración Obama. En 2015, recibió el XLVII Premio Lección Conmemorativa Jiménez Díaz por su labor investigadora otorgado por la Fundación Conchita Rábago de Jiménez Díaz. En 2019 fue invitado a impartir la VI ICS Lecture on Humanities and Social Sciences del Instituto Cultura y Sociedad de la Universidad de Navarra.

Puedes conocer más del autor visitando su perfil en linkedIn o siguiéndole en twitter, donde se identifica como @yusterafa.

Ficha técnica:


AUTOR: Rafael Yuste
EDITORIAL: Editorial Paidós
AÑO: 2024 
ISBN: 978-8449342837
PAGINAS: 224

Artículos de este blog relacionados

miércoles, 2 de octubre de 2024

Notas sobre el aprendizaje por refuerzo (V): deep reinforcement learning

Llegamos ya a la quinta entrega de esta serie sobre aprendizaje por refuerzo ('reinforcement learning').

Este post será, creo, algo más sencillo y menos matemático que alguno de los anteriores, pero espero que aporte perspectiva.

En este caso, simplemente, vamos a revisar cuándo tiene interés el aplicar deep learning en el caso del aprendizaje por refuerzo ('reinforcement learning'), lo que dará lugar al denominado deep reinforment learning.


Recordatorio: aprendizaje por refuerzo y métodos tabulares


Antes, y como siempre en esta serie de posts y aun a riesgo de resultar algo repetitivo, un muy breve recordatorio de lo que hemos visto hasta ahora.



La situación en que nos encontramos es la de un agente (que me gusta pensar que es un robot, pero que puede adoptar otras muchas formas), que interactúa con un entorno, para lo cual realiza sobre éste una serie de acciones (a). La situación de ese entorno se define por una serie de estados. Cuando el entorno, que se encuentra en un estado s, recibe la acción, puede producirse en él una transición de ese estado s a otro s'. Esas transiciones están gobernadas por una función Ta, normalmente probabilista (estocástica). Cuando se produce ese cambio de estado el agente recibe del entorno una recompensa r.

El agente decide las acciones a realizar siguiendo una política π.

Lo que buscamos en el aprendizaje por refuerzo es que el agente aprenda la mejor política posible para conseguir maximizar la recompensa acumulada a sus acciones.

En esa labor, muchos algoritmos de aprendizaje por refuerzo se apoyan en las funciones de valor-estado Q, que, para una política dada, nos proporcionan la recompensa esperada acumulada cuando en un estado s comenzamos con una acción a.

Los denominados métodos tabulares, como SARSA y Q-Learning, se apoyan, simplemente, en reglas y tablas de estados para su cálculo.


Funciones y machine learning


No se suelen explicar así, pero los modelos de machine learning, una vez entrenados, resultan ser simplemente unas funciones, es decir una correspondencia que, a cada valor de un dominio de entrada, le hace corresponder el valor del dominio de salida.

En matemáticas sencillas, por ejemplo, la función raíz cuadrada, hace corresponder a un número del dominio de los números reales (entrada) otro número (salida), en este caso también en el dominio de los números reales.

Los algoritmos de machine learning, una vez entrenados, funcionan igual: a un valor de entrada, le hacen corresponder un valor de salida. Por ejemplo, a unos datos de entrada sobre mercado, acciones promocionales, etc, le hacen corresponder una previsión de ventas.

Eso sí, los algoritmos de machine learning tienden a aplicarse en dominios complejos, generalmente expresados como grandes vectores con un 'montón' de elementos o dimensiones, tanto en salida como, sobre todo, en entrada.

Y, más importante aún, y lo que realmente resulta diferencial en el caso del machine learning, esas funciones, la manera de hacer corresponder la salida con la entrada no las definimos por anticipado los humanos, sino que la aprende el propio algoritmo a partir de ejemplos o experiencia.

Y el deep learning no es una excepción a esto, lo cual no es de extrañar teniendo en cuenta que, aunque muy diferenciado, el deep learning no es más que un subconjunto del machine learning.

Aunque nos gusta, a la hora de explicar las redes neuronales y el deep learning, hacer el paralelismo con el cerebro humano, un paralelismo que tiene sentido por otro lado, a efectos prácticos y algorítmicos, las redes neuronales no son más que otro caso de funciones, una funciones que se aprenden. Y lo que ocurre es que las funciones que se pueden implementar mediante deep learning son especialmente complejas, muy complejas y casi misteriosas, pero funciones, al fin y al cabo


Lo que aporta el deep learning al aprendizaje por refuerzo


Vista la explicación anterior, no es difícil comenzar a imaginarse lo que aporta el deep learning en el caso del aprendizaje por refuerzo.

Volvamos al planteamiento del aprendizaje por refuerzo: tenemos un entorno con una serie de posibles estados. En este tipo de problemas es especialmente relevante la dimensionalidad del espacio de estados del entorno.

Cuando el problema es simple y un poco de laboratorio, por ejemplo un juego, el número de estados posibles del entorno, las transiciones posibles, las acciones, etc, son reducidos. Los métodos tabulares, como el Q-Learning, funcionan bien con una dimensionalidad baja y, a la hora de implementarla, se pueden cargar todos los estados en memoria sin problema.

En problemas reales, sin embargo, la dimensionalidad del espacio de estados en inmensa, casi inabarcable y, complejidad aparte, simplemente no podemos cargarlos en memoria y no podemos tampoco memorizar una política adecuada.

La forma de afrontar el problema es renunciar a trabajar con todos los estados como entrada y, en su lugar, representar la situación del entorno mediante unas características ('features') y, con usnado esas características como entrada, calcular valores y acciones. Los estados ya no son, pues, directamente identificables y no los podemos almacenar en tablas donde buscamos, como hacíamos en los métodos tabulares.

La correspondencia entre características como entrada y acciones y valores como salida es una función, una función que en los problemas de alta dimensionalidad es muy compleja, y una función que por tanto implementamos mediante redes neuronales, mediante deep learning.

 

Deep reinforcement learning


El uso de deep learning en el aprendizaje por refuerzo da lugar a una subdisciplina denominada 'deep reinforcement learning'.

De hecho, el libro de Aske Plaat en que me estoy apoyando para toda esta serie de posts se titula, simplemente así: 'Deep reinforcement learning'. 


Conclusiones


Cuando intentamos aplicar el aprendizaje por refuerzo a problemas reales, nos encontramos con una altísima dimensionalidad del espacio de estados del entorno. Eso imposibilita el utilizar métodos sencillos en que se tabulan los estados y, en su lugar, debemos representar indirectamente mediante características el estado del entorno y calcular estados y valores usando el mejor mecanismo que tenemos para implementar funciones muy compejas: el deep learning.

Esto da lugar al la subdisciplina del deep reinforment learning, donde cabe esperar los resultados más avanzados y espectaculares.


Artículos de este blog relacionados



viernes, 27 de septiembre de 2024

Un interesante paralelismo digital: las telecomunicaciones y el cerebro digital

Recojo en este post una pequeña iluminación, un pequeño destello de conocimiento que relaciona, de manera sorprendente, las telecomunicaciones con la neurociencia, un descubrimiento surgido casi de la más pura casualidad, pero que parece revelador.

Casualidades


Y es casualidad, una afortunada casualidad, porque ha tocado la coincidencia de que, justo el mismo día, estuviese preparando el material didáctico para una asignatura sobre Redes IP, y que leyese el capítulo preciso del libro 'El cerebro, el teatro del mundo' publicado recientemente por Rafael Yuste.

Una casualidad que nos habla y enlaza el papel que tiene lo digital, por mejor decir la codificación digital de la información, en aspectos tan diferentes como son las redes de telecomunicaciones y el cerebro humano.

Paso a explicarlo.


Comunicaciones digitales


Con el objetivo de explicar a los alumnos de una asignatura sobre redes IP las características diferenciales y ventajas de las comunicaciones digitales frente a las analógicas, había preparado, en el día de autos, la siguiente figura: 



Probablemente, los lectores avezados en comunicaciones entienden lo que quiere decir, sin más explicaciones, pero de todas formas cuento brevemente el mensaje que hay detrás.

Cuando trabajas en modo analógico, la información se representa, digamos, por un nivel de señal, que representa una intensidad, una frecuencia, etc. Así, por ejemplo, sui queremos enviar música por la red, primero la codificamos de forma analógica y luego ponemos en 'los cables' una señal que, en cierto sentido, es similar a la señal origen (aunque, por ejemplo, el sonido sea una onda de presión y lo representemos luego como tensiones en una red eléctrica o electrónica). Podríamos transmitirlo así y ya está. ¿Qué ocurre? Que cuando transmitimos esa señal por un cable, o por el aire, sufre una cierta degradación y lo que llega al receptor no es exactamente lo mismo que lo que envió el emisor. Dado que usamos una señal analógica (y recuerdo que analógico, no casualmente, tiene la misma raíz que 'análogo') el receptor interpreta, digamos, literalmente, esa señal y reproduce un sonido que saldrá también algo deformado respecto al original. La cosa es aún peor si ese receptor es intermedio y retransmite la señal, que ya está deformada y se irá deformando cada vez más en el camino.

En las comunicaciones digitales, codificamos esos sonidos como unos y ceros, y lo que importa no es realmente el nivel de señal, sólo si estamos representando un uno o un cero. Y eso lo hacemos, por ejemplo, con el uno siendo un valor alto de la tensión, y el cero un valor bajo, lo que da lugar a señales, digamos, 'cuadradas'. Pero, insisto, lo que importa no es la tensión concreta, sino si está representando un uno o un cero. Cuando recibe la señal el receptor también llega degradada, claro, pero dado que lo del nivel alto o bajo incluye una cierta tolerancia, se siguen identificando perfectamente los unos y los ceros, es decir, la información que recibe, como tal información, es exactamente igual la original, sin degradación. Es más, si el receptor es un elemento intermedio, como por ejemplo un router, cuando retransmita la señal, lo hará enviando una señal cuadrada perfecta, con lo que de alguna forma la ha regenerado y eliminado la degradación.

A esto se unen capacidades adicionales de detección y corrección de errores en las que no voy a entrar, para no complicar y, sobre todo, porque ya no enlazan con lo que a continuación comentaré sobre el cerebro humano.

En cualquier caso, la situación comentada explica en buena medida por qué las comunicaciones digitales son mucho más robustas en cuanto a la calidad de la información enviada y recibida.


Un cerebro digital


Eso, no sé para el lector, pero para mí es conocido desde hace muchos, muchísimos años. El descubrimiento, la novedad para mí, viene del campo de la neurociencia y de la mano de Rafael Yuste y del libro mencionado más arriba.

En el tercer capítulo, titulado de manera significativa: 'El teatro del mundo por dentro: las neuronas digitales', Yuste explica el más o menos conocido mecanismo de funcionamiento de las neuronas: cómo se unen dendritas con axones en las sinapsis, cómo se producen los flujos de iones que provocan los cambios de potencial y, en definitiva, la activación y disparo, o no, de una neurona.

Un funcionamiento que, en su versión más simplificada, podemos asimilar a un interruptor. Sin embargo, Yuste prefiere comparar el funcionamiento, más que a un interruptor, a un transistor. Si, si, un transistor, el componente electrónico que da vida a los microprocesadores y tantos dispositivos electrónicos.

Y ahora viene lo bueno cuando, literalmente, dice:


Que los transistores sean digitales es fundamental, porque las señales digitales no se degradan al transmitirse en distancias largas y se pueden almacenar con facilidad.


Aunque leyendo la frase, incluso en el contexto del libro, pueden quedar reservas sobre si esa afirmación se refiere a los transistores electrónicos o a las neuronas (pues en ese momento las está casi asimilando), a mí no me queda duda de que el profesor Yuste nos está queriendo decir que también nuestro cerebro y nuestro sistema nervioso utilizan esa codificación digital y, especialmente, que se aprovecha, no sólo de la facilidad de almacenamiento sino también de la robustez en su transmisión... igual que hacemos en comunicaciones digitales.

Y me queda menos duda cuando, muy poco más abajo, el autor, remata:


Como sabemos, gran parte de la tecnología de la humanidad está basada en la electrónica digital de los transistores. Pero la naturaleza nos lleva la delantera, pues hace ya más de seiscientos millones de años utilizó los principios de la electrónica digital para aprender a fabricar algo parecido.


¿No es fascinante?


Patrones


Es muy interesante descubrir patrones de comportamiento que afectan ya no solo a disciplinas diferentes sino a realidades de ámbitos diferentes. 

Pero no es sólo interesante en el sentido de que sea curioso, o incluso divertido. Es mucho más importante que eso.

Al menos en mi opinión, cuando encontramos patrones es que, de alguna forma, estamos descubriendo principios profundos, arraigados, definitorios. Es que, de alguna manera, nos estamos acercando a la verdad. 


Conclusiones

 

El uso de información digital, en lugar de analógica, facilita el almacenamiento y el procesamiento pero, además, proporciona robustez a las comunicaciones. Es un descubrimiento que hicimos los humanos ya hace unas décadas, pero resulta que, al parecer, la naturaleza lleva aplicándolo desde hace millones de años en los cerebros de los seres vivos, incluyendo, claro, los humanos.


miércoles, 25 de septiembre de 2024

Notas sobre aprendizaje por refuerzo (IV): Metodos tabulares. SARSA Y Q-Learning.

Aunque tendemos a imaginar la inteligencia artificial como una amalgama de algoritmos complejos y misteriosos, lo cierto es que no siempre es así.

Muchos de los algoritmos que conforman el así llamado machine-learning (y no digamos nada la antigua inteligencia artificial simbólica) son relativamente sencillos, lógicos y basados en intuiciones o razonamientos perfectamente inteligibles.

Donde comienza creo, el misterio, la semejanza con la magia es, cuando entramos en el campo del deep learning, de las grandes redes neuronales, donde se escapa un poco de nuestra lógica natural el funcionamiento de estos ingenios y cómo pueden obtener resultados.

Y eso que ocurre, en mi opinión, en toda la inteligencia artificial, también tiene lugar en el área del aprendizaje por refuerzo ('reinforcement learning'), donde existen algoritmos relativamente lógicos y sencillos pero donde también reinan cada vez más los mágicos algoritmos del deep learning. 

En este cuarto post de la serie dedicada al aprendizaje por refuerzo, nos vamos a quedar, todavía, en los algoritmos más o menos sencillos, los que no utilizan redes neuronales, unos métodos que en la referencia que estoy siguiendo en toda esta serie, el libro 'Deep reinforcement learning' de Aske Plaat, denomina 'tabulares' porque utilizan unos datos tabulados. 

Remataremos con un esbozo del algoritmo Q-Learning, aunque antes nos tendremos que detener a aprender algunos nuevos conceptos y otro algoritmo, SARSA.


Recordatorio: procesos de decisión y aprendizaje por refuerzo 


Antes, recordemos todo el marco en que nos estamos moviendo, y que se esquematiza en la figura que estoy usando repetidamente en esta serie de artículos.




Tenemos un agente, por ejemplo un robot, que se mueve en un entorno, un entorno que, en un momento dado, se encuentra en un estado (s). De cara a conseguir sus objetivos, el agente realiza acciones (a) sobre el entorno. Eventualmente, la aplicación de esa acción provoca un cambio de estado en el entorno que pasa del estado (s) al (s'), y el agente recibe una recompensa (r), una suerte de feedback de si se acerca o no a sus objetivos. 

Las transiciones de estado del entorno, están regidas por una función Ta. En algunos casos estas transiciones son deterministas, pero con frecuencia siguen distribuciones de probabilidad hallándonos en este caso ante entornos estocásticos. Para elegir la acción a realizar, el agente aplica una política (π).

En general, en un aprendizaje por refuerzo lo que queremos es aprender, u optimizar, esa política π, un poco por ensayo y error, aplicando acciones, viendo las recompensas obtenidas, y ajustando la política. 


Modelos del mundo. Algoritmos con y sin modelo


De alguna forma, esa función Ta que hemos mencionado, constituye un modelo del mundo (un modelo del entorno para ser más precisos, pero es común y seguramente 'más bonito' hablar de modelo del mundo).

Con bastante frecuencia, el agente NO conoce ese modelo del mundo, no sabe qué función Ta gobierna los cambios de estado del entorno, por lo que debe optimizar su política (π) sin conocer realmente el modelo del mundo, sólo con base en la interacción con el mismo y las recompensas obtenidas. Ese es el caso de los algoritmos que se denominan sin modelo ('model-free').

Veremos más adelante en esta serie, el caso en que el agente SI puede conocer o al menos aproximar el comportamiento del entorno. En este caso se habla de algoritmos basados en modelo ('model-based').


Explotación y exploración


En un post anterior, hablamos de una función, el valor estado-acción Q(s,a) que nos proporcionada el valor (es decir la recompensa acumulada esperada) ante la aplicación de una acción a, en un estado s.

La lógica más inmediata nos lleva a pensar que lo que tiene que hacer un agente en cada momento es seleccionar aquella acción que proporciona un mayor valor de Q. Es intuitivo y razonable, e incluso pudiera funcionar, pero la experiencia demuestra que esa estrategia, que se denomina 'greedy' (algo así como 'glotona') tiende a conducirnos a máximos locales, pero no globales, con lo que no llegamos realmente a determinar la mejor política de todas, sino una sólo una buena solución, pero no la mejor.

Por eso, se aconseja combinar los mecanismos que se denominan de explotación y exploración.

En explotación funcionamos de modo, digamos normal, usando las mejores acciones hasta donde conocemos (con base en nuestra función estado-valor), pero en exploración introducimos aleatoriedad en lugar de lo que dicte la función Q, para seleccionar la siguiente acción.

Los algoritmos mejores utilizan una combinación de ambos mecanismos, existiendo diversas teorías sobre la mejor forma de establecer ese equilibro o compromiso de en qué medida utilizamos uno u otro.


Aprendizaje de política on y off


A la hora de actualizar la política con base en la recompensa obtenida por el agente, el aprendizaje propiamente dicho mediante el mecanismo de 'backpropagation' que mencionamos en el segundo post de esta serie, lo primero que se nos viene a la cabeza es, simplemente, usar la recompensa para la última acción aplicada. Eso es lo que se denomina un aprendizaje de política 'on' ('on-policy learning').

Sin embargo, también es posible, y puede ser conveniente, no aplicar la retropropagación (el aprendizaje) de acuerdo con la recompensa a la última acción sino adoptar una perspectiva más amplia y, eventualmente, hacer el aprendizaje con otra recompensa quizá anterior. Esto es lo que se denomina aprendizaje de política off ('off-policy learning') y puede tener sentido, por ejemplo, cuando estamos aplicando la exploración que mencionábamos hace un momento. ¿Por qué? porque al explorar fácilmente nos podemos encontrar respuestas muy poco óptimas y no tendría sentido empeñarnos en utilizar la recompensa obtenida como un buen indicador de una buena decisión.


El algoritmo SARSA


Uno de los los algoritmos tabulares conocidos es SARSA. SARSA utiliza sólo explotación y aprendizaje de política on ('on-policy').

¿Cómo funciona? Pues, como conocemos, el agente selecciona una acción y obtiene una recompensa,. Con base en ella actualiza sus función valor-estado Q(s, a) que, indirectamente es como actualizar su política (π). En esa actualización sigue la fórmula:


Q(st, at) ← Q(st, at) + α[ rt+1 + γQ(st+1, at+1) - Q (st, at)]


No entraré en el detalle del significado de la fórmula, sólo indicar que la función valor-estado se va actualizando con base en la recompensa recibida.


El algoritmo Q-Learning


Bueno, pues culminamos el post esbozando, sin entrar en muchos detalles, el algoritmo Q-Learning. En el caso de Q-Learning estamos ante uno de esos denominados algoritmos tabulares (utilizan reglas o tablas en lugar de redes neuronales), utiliza tanto explotación como exploración y un aprendizaje de política off ('off-policy').

A priori, el funcionamiento va a ser muy similar al de SARSA y, si nos nos fijamos, la fórmula de actualización de las funciones valor-estado parece la misma


Q(st, at) ← Q(st, at) + α[ rt+1 + γmaxaQ(st+1, a) - Q (st, at)]


Parece la misma, pero no lo es. 

Fijémonos en la parte central de la fórmula, la que he destacado con negritas, y comparemos con el caso de SARSA. Vemos que si en SARSA se utilizaba la función valor del estado finalmente alcanzado, en el caso de Q-Learning se utiliza aquella función valor máxima de entre todas las acciones, no sólo la aplicada en último término. Eso es lo que le confiere la característica de aprendizaje de política off, en lugar de on.

Podemos, de una forma más estructurada y que nos acerca un poquito a un pseudocódigo, expresar el algoritmo Q-Learning de la siguiente maneta:

  • Inicializa la tabla de valores (Q) con números aleatorios
  • Repite
    • Selecciona un estado (s)
    • Para todas las posibles acciones (a) aplicables en ese estado (s), selecciona la que proporciona el mayor valor de Q (cuando estés aplicando explotación), o bien, si en esta iteración vas a aplicar exploración, selecciona una al azar. 
    • Mira la recompensa (r) obtenida y actualiza la tabla de valores Q con la fórmula que hemos visto más arriba
  • así hasta que se alcance el objetivo
  • Alcanzado el objetivo, repite todo el bucle hasta que los valores de la tabla Q ya no varíen mucho (eso implica fijar algún umbral de variación concreto). 

Con esto no hemos especificado del todo el comportamiento, aunque tampoco estamos tan lejos, pero sí es lo suficiente para, si lo leemos despacio, entender la filosofía básica del algoritmo.


Conclusiones


En este post, hemos ampliado algunos conceptos respecto a otros ya utilizados en los tres artículos anteriores. Así, hemos hablado de:

  • Algoritmos con y sin modelo ('model based' o 'model-free')
  • Concepto de explotación y exploración y la conveniencia de utilizarlos conjuntamente
  • Aprendizaje de política on y off ('on-policy'  learning y 'off-policy' learning)

Y, finalmente, quizá en la parte más formal y difícil del post, hemos esbozado los algoritmos SARSA y, un poco más, el Q-learning. Ambos tabulares, pero el primero usando aprendizaje 'on-policy' y el segundo introduciendo la exploración y usando aprendizaje 'off-policy'.

Y todavía no hemos llegado a la magia, a la introducción del deep learning porque estos algoritmos que hemos visto, que entran dentro de los llamados tabulares, son un poco más tradicionales, más modestos en sus campos de aplicación y más fáciles de entender (dentro de lo que cabe) .

Pero no tardaremos ya mucho en llegar al aprendizaje con refuerzo usando redes neuronales y deep learning aunque veremos que, si no se entra en detalles, habrá mucha continuidad expositiva con lo visto hasta ahora.

viernes, 20 de septiembre de 2024

Notas sobre aprendizaje por refuerzo (III): recompensas, trazas y valores

Pues vamos a por otro post sobre aprendizaje por refuerzo ('reinforcement learning') , un post que, como los dos anteriores, de momento se centra en fijar conceptos, vocabularios y notaciones, más que en el mecanismo de aprendizaje por refuerzo propiamente dicho.

En este artículo, en efecto, vamos a introducir dos conceptos: traza y valor. Las trazas nos ayudarán a entender un poco más el modelo de procesos de decisión de Markov y el valor va a ser una forma de concretar la idea de recompensa, tan central del aprendizaje por refuerzo.

Como en lo visto hasta ahora, y como en gran parte de lo que vendrá en esta serie de artículos, me sigo apoyando en el libro 'Deep reinforcement learning' de Aske Plaat.

Vamos allá


Recordando conceptos


Como ya hemos visto, los procesos de decisión de Markov son procesos de decisión en que un agente, por ejemplo un robot, interactúa con un entorno, y va adoptando, de manera secuencial decisiones que se traducen en la adopción de acciones sobre el entorno. El entorno, que se encuentra en un momento dado en un estado (s) puede, como consecuencia de esa acción, cambiar a otro estado (s'), teniendo lugar, en ese caso, una transición (t). Y cuando se produce esa transición, el agente recibe una recompensa (r).


En los procesos de decisión de Markov, además, la eventual transición depende, únicamente, del estado del entorno y de la acción aplicada, por lo que no exhiben memoria ni tampoco ninguna dependencia externa.

El agente, toma sus decisión usando una política (π). Y el aprendizaje por refuerzo busca optimizar esa política de forma que se maximice la recompensa acumulada que obtiene el agente. 

Podemos visualizar la relación de estados y acciones como un grafo que, en el caso de entornos deterministas (en un estado dado, la aplicación de una acción sólo puede conducir a otro estado concreto), se convierte en un árbol.

Habiendo recordado esto, ya podemos ir a por los dos conceptos que son objetivo de este post: trazas y valores.


Trazas


Aunque hasta ahora hemos visualizado sólo una transición de estados, en la realidad, lógicamente, cuando el proceso de decisión secuencial se desarrolla (cuando, por ejemplo, el robot interacciona con su entorno), se van realizando, de forma secuencial acciones, seguidas de eventuales cambios de estado del entorno y su recompensa asociada, a las que siguen nuevas acciones con sus consiguientes cambios de estado y así sucesivamente hasta alcanzar un objetivo final.

Durante ese proceso, en cada instante temporal t, el entorno se encontrará en un estado st, el agente aplicará una acción at, obtendrá una recompensa rt y provocará la transición al estado st+1 con el que se inicia un nuevo paso, y así sucesivamente, hasta conseguir un objetivo final o hasta el infinito.

Pues bien, una traza (τ) no es más que la entidad que recoge esa sucesión de estados, acciones y recompensas. Podemos, formalmente, expresar que una traza con n pasos como:


τ = { st, at, rt, st+1,  ..., st+n, at+n, rt+n, st+n+1 }


Con frecuencia, n se convierte en infinito (∞). Además, y aunque no lo voy a representar aquí formalmente (porque sale una fórmula bastante compleja), en el caso de entornos estocásticos, no tendremos trazas cerradas, por decirlo de alguna manera, sino una distribución de probabilidad sobre trazas.

Las trazas también reciben a veces el nombre de trayectoria, episodio o secuencia

 

Retorno


Un concepto muy relacionado con el traza y el de recompensa, es el de retorno (R).

En el fondo, el retorno no es más que la recompensa futura de una traza, es decir, la acumulación de recompensas que se obtienen a lo largo de la ejecución de la traza, aunque con un pequeño matiz que ahora apuntaremos. La formulación del retorno de una traza τt sería:


R (τt) = rt + γ*rt+1 + γ2*rt+2 + ... =  rt + ∑i=1 γi*rt+i


Vemos que el retorno es una función que para una traza dada, nos devuelve la recompensa acumulada. Y vemos también en la fórmula que no sumamos directamente las recompensas presentes en la traza, sino que lo hacemos multiplicándolo por un factor γ elevado a una potencia que va aumentando. Bien, ese factor γ es lo que denominamos factor de descuento cuando presentamos los modelos de Markov. Y ahora vemos su uso. El factor de descuento es un número comprendido entre 0 y 1 que se utiliza para, a la hora de calcular el retorno, dar más peso a las recompensas recientes que a las lejanas.


Recompensa esperada: valores de estado y de estado-acción


El concepto de retorno nos deja ya cerca de saber con qué recompensa suelen trabajar los algoritmos de aprendizaje por refuerzo. Y ello es debido a la existencia de entornos estocásticos. En casos estocásticos, para una política dada (π), y partiendo de un estado s, no se producirá siempre una misma traza y por tanto no siempre el mismo retorno o recompensa acumulada.

Por ello, lo que queremos es la recompensa acumulada esperada (incluyendo descuentos). Pues bien, esa recompensa acumulada y descontada esperada, es lo que se denomina el valor V, de un estado s. Para una política (π) dada, existirá esa función V, que representamos como Vπ(s) que nos proporciona el valor del estado (es decir, su recompensa acumulada esperada).

Adicionalmente, se suele trabajar con la función valor de estado-acción (Qπ(s,a)) cuya idea básica es la misma que el valor de un estado, pero en que ahora condicionamos, no sólo el estado, sino también la acción, es decir, se trata de una función que nos proporciona la recompensa acumulada esperada cuando, estando en un estado s, y siguiendo una política π, aplicamos una acción a.


Inciso: consideraciones sobre la lectura y el entendimiento


No se me oculta que los conceptos expuestos en este post y en los dos anteriores, pueden acabar desbordando al lector que no los conozca a priori, pero hago notar que, a despecho de lo que pueda parecer en una primera lectura no profunda, y a despecho también de lo dificultosas que nos pueden resultar las formulaciones matemáticas, en el fondo los conceptos que hay detrás son bastante sencillos, lógicos y diría que intuitivos.

Así que sugiero al lector que no se desanime, que los lea despacio varias veces y verá cómo al final le parecen lógicos y casi sencillos.


Conclusiones

Con este post casi cerramos la exposición de los conceptos básicos. Hemos visto lo que son los procesos de decisión secuenciales y en concreto los de Markov. Hemos hablado de agentes y entornos (deterministas y estocásticos). Sabemos lo que son los estados, las acciones, las recompensas y las políticas. 

Y hemos aprendido lo que son las trazas y cómo, de cara a la obtención de recompensas acumuladas, aplicamos el factor de descuento y computamos valores de estados o de acciones-estado que, en el fondo, nos proporcionan esas recompensas acumuladas esperadas que luego utilizan los algoritmos de aprendizaje por refuerzo.

Hemos fijado conceptos, pero aún nos queda mucho que ver...


Artículos de este blog relacionados



miércoles, 18 de septiembre de 2024

Notas sobre aprendizaje por refuerzo (II): Visualizando el aprendizaje en procesos de Markov

Este es el segundo post de la serie que inicié la semana pasada dedicada al aprendizaje por refuerzo ('reinforcement learning'). En el anterior, presenté los procesos de decisión de Markov. En este segundo post, en realidad voy a avanzar poco en cuanto a aportación de nuevos conceptos, aunque algunas nueva idea sí que habrá. Sin embargo, el objetivo principal es aportar, usando incluso ciertos recursos gráficos (figuras), una mejor visualización de a qué nos referimos con esos procesos de decisión de Markov y cómo funcionan a alto nivel. 

Y, como en el caso del post anterior (y muchos de los que vendrán en esta serie), me apoyo en las explicación del libro 'Deep reinforcement learning' de Aske Plaat.


Recordando los procesos de decisión de Markov


Antes, un primer recordatorio. Recordemos que hablábamos de situaciones en que un agente (por ejemplo, un robot) interactúa con su entorno, tomando decisiones que se concretan en acciones que el agente aplica al entorno y que pueden conducir a que ese entorno cambie de estado.

Hablamos en primer lugar de procesos de decisión secuencial, es decir, aquellos en que el agente va adoptando decisiones una detrás de otra. Esas decisiones se concretan en acciones que el agente aplica a su entorno y que eventualmente, conducen a un cambio de estado del mismo. 

Los procesos de decisión de Markov, añaden sobre esta idea una restricción, a saber, que el estado siguiente del entorno sólo depende del estado de partida y las acciones disponibles para ese estado. 


Recordando los elementos de los procesos de decisión de Markov


En esos procesos de Markov, identificábamos cinco elementos, a saber, 


  • El conjunto de estados legales del entorno, conjunto al que vamos a denominar S y a cada estado individual, s.
  • El conjunto de acciones aplicables en cada estado, y que vamos a denominar A, denominando cada acción individual como a.
  • Las transiciones, que indican la probabilidad de que la aplicación de una acción a, en un estado s, conduzca a un estado s'. A ese conjunto lo vamos a denominar Ta(s,s') y a cada transición concreta, la denominaremos t.
  • Las recompensas que obtiene el agente cuando, tras aplicar una acción a en un estado s, se produce la transición al estado s'. Al conjunto lo denominaremos Ra(s,s') y cada recompensa individual la denominaremos r.
  • Un factor de descuento, del que todavía no hablaremos más y que denominamos γ.


Respecto al post anterior he añadido la notación más frecuente para esos elementos, que me encuentro en el libro mencionado, y que usaré en las figuras.

Además, recordar que el agente, y de cara a seleccionar la acción, aplica lo que se denomina unos criterios o política, que vamos a representar como π y que, en el fondo, es justamente lo que queremos optimizar o aprender en el entrenamiento bajo aprendizaje por refuerzo.


Visualizando los elementos en acción


Bueno, y ya podemos empezar con la visualización. En la siguiente figura, representamos la interacción agente entorno.



La figura nos esquematiza los que hemos dicho. Tenemos un agente y un entorno con el que interactúa nuestro agente. El agente aplica al entorno (de forma secuencial) acciones (a) y recibe recompensas (r).

Para decidir las acciones, el agente aplica una política (π)

El entorno, en un momento dado, se encuentra en un estado s. Al recibir el entorno la acción, y según lo que marquen sus transiciones (Ta(s,s')), se podrá producir una transición t que signifique el paso del estado inicial s al estado siguiente s'.

Ligada a ese eventual cambio de estado, se genera la recompensa r que obtiene el agente.

Y esto se produce de manera secuencial, hasta que el agente alcanza su objetivo.


Entornos deterministas y entornos estocásticos


Añado un pequeño concepto nuevo. 

En algunos casos, las aplicación de una acción a, cuando el entorno se encuentra en un estado s, conduce directamente a un estado s'. En este caso, decimos que estamos ante un entorno determinista

Si por el contrario, ante un mismo estado s, puede transitarse a diferentes estados s', s'', etc con un cierto nivel de probabilidad cada uno, estaremos en el caso de un entorno estocástico.


Grafos y árboles. 


Una forma de representar la evolución del conjunto es usando grafos, tal y como se muestra en la siguiente figura:



En la figura mostramos grafos simples con una sola transición de estado. 

Representamos mediante círculos los nodos del grafo, los círculos en azul claro son los estados y los círculos oscuros las acciones. Las decisiones y las transiciones vienen representadas por los arcos (las flechas del dibujo).Se entiende que, a medida que se van contemplando las acciones en cada estado, el grafo va creciendo, añadiendo nuevos niveles, hasta llegar a estados finales que serían los nodos hoja.

Aunque es menos claro visualmente, podríamos haber eliminado de la representación las acciones y dejar solo los estados. En la etiqueta de los arcos, que representarían las transiciones, se explicitaría la acción. Pero, como digo, creo que visualmente es menos claro (aunque quizá fuese un grafo más puro), así que dejo la representación como se ve más arriba.

Es interesante notar la diferenciación entre el entorno estocástico y el determinista. Observe el lector, que en el caso del estocástico, a partir de las acciones podemos obtener varios estados resultantes (en la figura, dos por cada acción). Sin embargo, en el determinista, sólo se obtiene un estado resultante por acción.

Finalmente, decir que el grafo del caso estocástico en que no existen probabilidades, se denomina árbol.


Ensayo y error. Visualizando el aprendizaje


Una última visualización, y que tiene que ver con el aprendizaje que se realiza por refuerzo.

En el aprendizaje por refuerzo se funciona un poco mediante ensayo y error: el agente aplica una acción (ensayo)  y lo que obtiene es una recompensa (error). Cuando trabajamos con grafos, y en concreto con un árbol (entorno determinista), tenemos lo que se muestra en la figura:



Es decir, existe una especie de doble recorrido hacia delante y hacia atrás ('backpropagation').

A medida que el agente va seleccionando acciones, va recorriendo o construyendo el árbol hacia abajo. Normalmente, la verdadera recompensa se obtiene al llegar a un estado final, un estado hoja. Ahí se produce una retropropagación, una propagación hacia arriba, de la recompensa y del aprendizaje que el agente obtiene de la recompensa obtenida.


Conclusiones


Como decía al principio de este post, realmente no he añadido muchos más conceptos a los que ya vimos en el primero. Hemos añadido, eso sí, una notación más formal, que seguramente sigamos usando, y hemos explicado qué son entornos deterministas y qué estocásticos.

Más allá de eso, este post lo que pretende es, sobre todo, dejar mucho más claros los elementos de un proceso de decisión de Markov y una visión, bien que de muy alto nivel y exenta de detalle, de cómo se produce el aprendizaje. Espero que le sirva, en efecto, al lector, para clarificar conceptos.

En breve, seguiremos avanzando en este campo del aprendizaje por refuerzo mediante nuevos posts.


Artículos de este blog relacionados