Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6170

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6170

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-user-avatar domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6170

Warning: Cannot modify header information - headers already sent by (output started at /home/planetac/desa.planetachatbot.com/wp-includes/functions.php:6170) in /home/planetac/desa.planetachatbot.com/wp-content/plugins/all-in-one-seo-pack/app/Common/Meta/Robots.php on line 87

Warning: Cannot modify header information - headers already sent by (output started at /home/planetac/desa.planetachatbot.com/wp-includes/functions.php:6170) in /home/planetac/desa.planetachatbot.com/wp-includes/feed-rss2.php on line 8
Mauricio Fadel Argerich - Planeta Chatbot https://desa.planetachatbot.com Comunidad de expertos en IA Conversacional Wed, 08 Jun 2022 09:04:37 +0000 es hourly 1 https://wordpress.org/?v=7.0 https://desa.planetachatbot.com/wp-content/uploads/2021/05/cropped-favicon-32x32.png Mauricio Fadel Argerich - Planeta Chatbot https://desa.planetachatbot.com 32 32 Acelerando Reinforcement Learning con Tutor4RL https://desa.planetachatbot.com/acelerando-reinforcement-learning-con-tutor4rl/?utm_source=rss&utm_medium=rss&utm_campaign=acelerando-reinforcement-learning-con-tutor4rl https://desa.planetachatbot.com/acelerando-reinforcement-learning-con-tutor4rl/#respond Fri, 26 Jun 2020 09:00:38 +0000 https://desa.planetachatbot.com/?p=2599 Esta historia está basada en una publicación que realicé y puedes encontrar aquí. Reinforcement Learning (RL) — o Aprendizaje por Refuerzo — ha alcanzado grandes resultados en diversas tareas como jugar videojuegos, controlar robots y proveer recomendaciones en distintos dominios. Sin embargo, para alcanzar estos grandes resultados, es necesario entrenar un agente de RL por millones de […]

The post Acelerando Reinforcement Learning con Tutor4RL first appeared on Planeta Chatbot.

]]>
Esta historia está basada en una publicación que realicé y puedes encontrar aquí.

Reinforcement Learning (RL) — o Aprendizaje por Refuerzo — ha alcanzado grandes resultados en diversas tareas como jugar videojuegos, controlar robots y proveer recomendaciones en distintos dominios. Sin embargo, para alcanzar estos grandes resultados, es necesario entrenar un agente de RL por millones de iteraciones. Hasta que alcanzamos ese punto, la performance del agente se encuentra muy lejos de lo ideal: cuando el agente inicia su funcionamiento, su comportamiento es aleatorio, explorando las acciones que puede tomar, y aún luego de varias iteraciones y ya contando con experiencia, el agente cometerá errores frecuentemente, debido a la variabilidad del efecto de sus acciones en el entorno y estados nuevos, que no el agente no haya visto anteriormente, que puedan surgir en cualquier momento.

Cuando estamos tratando con tareas como jugar videojuegos, esto no es un gran problema, aunque sí significa que necesitaremos más tiempo de entrenamiento y más recursos de procesamiento. Sin embargo, cuando tratamos con tareas del mundo real, esto puede ser un gran desafío. Por ejemplo, si utilizamos RL para enseñar a un robot como moverse, el robot pasará días probando combinaciones de movimientos antes de aprender cómo moverse correctamente y, durante estas pruebas, podría llegar a dañarse al probar alguna combinación de movimientos peligrosa. Si bien esto puede ser muy divertido de ver como en el video abajo, no es para nada divertido para quién invirtió semanas o meses de trabajo y varios miles de dólares construyendo el robot.

Los humanos no aprendemos todo lo que sabemos mediante nuestra experiencia y, si así fuese, no estaríamos muy lejos de los hombres de las cavernas. Hemos construido sociedades y tecnologías incrementalmente, basándonos en logros e ideas creadas con anterioridad por otras personas y que hemos aprendido a través de libros, clases o maestros. ¿Es posible dar conocimientos previos a un agente de RL? ¿Cómo podríamos darle algunos consejos, que el agente puede utilizar mientras aprende de su propia experiencia?

Estas son las preguntas que hemos intentado responder con mis colegas en nuestra publicación en AAAI-MAKE: Combining Machine Learning and Knowledge Engineering in Practice 2020 y pueden ver aquí. En nuestra publicación, hemos desarrollado un nuevo método que hemos llamado Tutor4RL, en el que incorporamos conocimiento externo para tutelar agentes de RL. A continuación, pueden encontrar un resumen de nuestro método y los resultados que hemos tenido hasta ahora.

Métodos relacionados

Los extensos tiempos de aprendizaje de sistemas de RL es un problema común, por lo que diversos métodos han surgido para lidiar con ello:

  • Simulaciones: crear un entorno de simulación en el que el agente pueda experimentar y aprender, antes de llevarlo a su entorno real es un método muy utilizado. Es una técnica muy efectiva, pero crear el entorno de simulación requiere un gran esfuerzo y normalmente, crear la simulación requiere múltiples suposiciones sobre el entorno real, que pueden no siempre ser acertadas. Estas suposiciones, terminarán por afectar negativamente el rendimiento del agente en el entorno real.
  • Model-based RL (o RL basado en modelo del problema): a diferencia del método más común de RL conocido como model-free RL, model-based RL se basa en crear un modelo del entorno en el cual que se encontrará el agente de RL, para permitir al agente aprender más rápidamente. En el caso de un robot, podríamos basarnos en modelos físicos, como también en modelos de la mecánica del robot. No obstante, para hacer este modelo requerimos de un buen conocimiento del entorno y, nuevamente como en el punto anterior, generalmente terminamos haciendo suposiciones que afectarán negativamente a la performance de nuestro sistema. Otra desventaja, es que nuestro sistema estará específicamente diseñado para su entorno y, si queremos usarlo en otro entorno diferente, deberemos modificar el sistema.
  • Aprendiendo de demostraciones: en “Learning from Demonstrations” (Hester et al., 2018), se introduce un método para que un agente de RL pueda aprender eficientemente de las demostraciones de un ser humano. El agente puede aprender rápidamente, superando con su performance a otros métodos de vanguardia. Pero, ¿qué sucede cuando no tenemos acceso al entorno de antemano y, por lo tanto, no es posible proporcionar una demostración? Este método puede ser combinado con el nuestro, Tutor4RL, utilizando el Tutor para proporcionar demostraciones una vez que el agente ya está desplegado en su entorno final.

Tutor4RL

Queremos lograr que nuestro agente tenga una buena performance (o al menos decente) desde el inicio de su funcionamiento. Sin embargo, esto es muy difícil de lograr cuando no tenemos acceso de antemano al entorno de RL, y si hacemos suposiciones sobre éste, nos arriesgamos a que la performance de nuestro agente nunca sea la deseada. Aun así, es posible proporcionar información útil que el agente utilice una vez que se encuentre en su entorno de RL.

Al fin y al cabo cuando aprendemos, normalmente no se nos dan todos los detalles de cada situación en la cual podremos utilizar lo que estamos aprendiendo. Por el contrario, podemos aprender de ideas teóricas, consejos e incluso pistas que otras personas nos dan. ¿Puede un agente de RL aprender de esta manera?

Para lograr esto, hemos modificado el framework de RL de la siguiente manera:

Framework estándar de RL en comparación con el framework de Tutor4RL [de la publicación original].
Hemos agregado un componente, llamado Tutor, que contiene conocimiento externo en la forma de un conjunto de funciones de conocimiento. Estas funciones, son funciones programables normales que tienen como entrada el estado y la recompensa del entorno de RL, y retornan un vector con un valor por cada acción de la misma manera en que una política de RL mapea estados a acciones a través de valores Q. Hay dos tipos de funciones de conocimiento:

  • Funciones guía: expresan guías para el agente, son interpretadas como sugerencias y si están equivocadas, el agente aprenderá con su propia experiencia que no debe hacerles caso.
  • Funciones de restricción: restringen el comportamiento del agente, son útiles cuando estamos seguros de que el agente no debe tomar una acción en un determinado estado de su entorno, tal vez porque podría dañarse o causar una situación peligrosa. Las funciones de restricción le dicen al agente qué es lo que NO puede hacer, deshabilitando y habilitando acciones.

El agente puede consultar al Tutor cuando la incertidumbre sobre qué acción tomar es grande. El Tutor ejecutará sus funciones guía con el estado y la recompensa actual y generará un vector que el agente utilizará para elegir qué acción ejecutar, aprendiendo de esta experiencia. De esta forma, el Tutor guía al agente, pero el agente siempre puede encontrar si una sugerencia del Tutor es incorrecta a través de su experiencia, o mediante el uso de algún mecanismo de exploración como ε-greedy, también puede encontrar si existe una acción mejor que la sugerida por el Tutor.

Por otro lado, las funciones de restricción se ejecutan en cada paso, y se aplican tanto a las funciones de guía como a la política del agente. Por esto, las funciones de restricción proveen un mecanismo de seguridad para evitar errores graves que podrían poner al agente en peligro o tener un serio impacto en la tarea.

Evaluación

Breakout de OpenAI Gym.

Hemos implementado un prototipo de Tutor4RL utilizando Keras-RL en Python. Hemos utilizado Tutor4RL en conjunto con un agente DQN (Mnih et al. 2015), para jugar Breakout en OpenAI Gym. Hemos creado una función guía simple, que indica al agente que se mueva en la dirección hacia donde está la bola, cuando ésta no está directamente encima de la barra. Además, hemos implementado un método sencillo para controlar cuándo el agente consultará al Tutor por medio de un parámetro que hemos llamado τ y se utiliza en manera similar a como ε es utilizado en la exploración ε-greedy. Cuando τ es mayor que una muestra tomada de una distribución Uniforme U(0,1), el agente consulta y utiliza el vector guía del Tutor, de lo contrario, utiliza el vector de acción generado por su política. En nuestras pruebas, inicializamos el agente con τ = 1 y disminuimos su valor linealmente a lo largo del tiempo. Esto significa que cuando el agente inicia su funcionamiento, el conocimiento del Tutor es utilizado la gran mayoría de las veces, pero esto disminuye a medida que el agente adquiere más experiencia.

En el gráfico a continuación, vemos la recompensa lograda por el agente DQN con Tutor4RL en comparación con un agente DQN estándar. La recompensa en Breakout es directamente la puntuación obtenida en el juego, por lo que cuantos más bloques rompemos, mayor es la puntuación y mayor es la recompensa. Como podemos ver, el agente DQN con Tutor4RL muestra un buen rendimiento inicial gracias a la guía del Tutor, mientras que el agente DQN estándar alcanza una recompensa baja. Se necesitan aproximadamente 1.3 millones de iteraciones para que el agente DQN estándar alcance al agente DQN con Tutor4RL. En la iteración 1.5 millones, marcada con una línea vertical verde, el Tutor deja de usarse por completo. Hasta este punto, el Tutor es consultado intermitentemente, dependiendo la frecuencia de la consulta del valor de τ, que disminuye con cada iteración. Después de la iteración 1.5 millones, el agente DQN con Tutor4RL sólo utiliza su política por lo que depende exclusivamente de su aprendizaje. Podemos ver que ambos agentes tienen un rendimiento similar a partir de aquí, demostrando que el agente DQN con Tutor4RL tuvo un aprendizaje similar al del otro agente, pero evitando la mala performance inicial del agente DQN estándar.

Recompensa promedio de un agente DQN con Tutor4RL comparada con la de un agente DQN estándar [gráfico tomado de la publicación original].

Conclusión

Tutor4RL ha demostrado ser eficaz para mejorar la performance inicial de un agente de RL, incorporando conocimiento externo en forma de funciones programables. Sin embargo, Tutor4RL se encuentra aún en desarrollo y existen múltiples oportunidades de mejora:

  • En nuestro prototipo actual, solo hemos implementado las funciones guía. Nuestros siguiente paso será la implementación de funciones de restricción y sus correspondiente evaluación.
  • La decisión de cuando consultar al Tutor utilizando τ es un método ingenuo y puede mejorarse utilizando otros métodos como Bootstrapping (Kahn et al. (2017)) o un Inferencia Bayesiana (Clements et al. (2020)).
  • Es posible mejorar la manera en la que se combinan las salidas de las funciones de conocimiento, utilizando, por ejemplo, la correlación entre las funciones como en Snorkel (Ratner et al. (2019)).

Como siempre, muchas gracias por leer mis artículos! Espero que Tutor4RL les haya resultado interesante y me va a encantar escuchar su opinión sobre nuestro método en los comentarios abajo.

The post Acelerando Reinforcement Learning con Tutor4RL first appeared on Planeta Chatbot.

]]>
https://desa.planetachatbot.com/acelerando-reinforcement-learning-con-tutor4rl/feed/ 0
Reinforcement Learning / Aprendizaje Reforzado Apto para todos los públicos https://desa.planetachatbot.com/reinforcement-learning-aprendizaje-reforzado/?utm_source=rss&utm_medium=rss&utm_campaign=reinforcement-learning-aprendizaje-reforzado https://desa.planetachatbot.com/reinforcement-learning-aprendizaje-reforzado/#respond Fri, 12 Jun 2020 09:00:52 +0000 https://desa.planetachatbot.com/?p=2595 Si trabajas en tecnología, y sobre todo en Inteligencia Artificial (IA) o Machine Learning (ML), probablemente estás acostumbrado a que las personas no entiendan a qué te dedicas. Lo sé porque lo experimento en mi día a día, y debo aceptar que despierta un poco de orgullo en mí, porque significa que he aprendido muchas cosas […]

The post Reinforcement Learning / Aprendizaje Reforzado Apto para todos los públicos first appeared on Planeta Chatbot.

]]>
Si trabajas en tecnología, y sobre todo en Inteligencia Artificial (IA) o Machine Learning (ML), probablemente estás acostumbrado a que las personas no entiendan a qué te dedicas. Lo sé porque lo experimento en mi día a día, y debo aceptar que despierta un poco de orgullo en mí, porque significa que he aprendido muchas cosas que la mayoría de la gente no sabe, y que estoy lo suficientemente adentrado en el tema para poder entender artículos y métodos que antes no entendía. Sin embargo, también es un poco frustrante cuando quiero compartir un logro con mis amigos y mi familia, porque luego de hacer el mejor intento por explicar de qué se trata y por qué estoy tan orgulloso de lo que he logrado, solo me miran con una sonrisa y me dicen “muy bien”, con cara de Hide the Pain Harold.

“Felicitaciones! No entendí nada pero suena interesante” — toda mi familia [imagen de KnowYourMeme]. Aclaración: este meme es solo una ilustración y no representa mi familia real, no estoy relacionado con Hide the Pain Harold de ninguna manera.

Es por esto que decidí escribir este artículo: para proveer una explicación de Reinforcement Learning (RL) — o Aprendizaje Reforzado, en español — que todos puedan entender, sin importar qué conocimientos tengas de IA, ML o Ciencia de Datos.

Condicionamiento Clásico (de Pavlov)

A pesar de que la IA suele relacionarse con el futuro, nuestra historia comienza hace más de 100 años, en la década de 1890 en el laboratorio de Ivan Pavlov. Ivan — me gusta tratar a las personas por su primer nombre — , estaba estudiando los reflejos de salivación en perros y para hacer esto, medía cuanta saliva segregaban al ver comida, antes de haberla probado. Durante estos experimentos, Ivan se encontró con algo inesperado: los perros segregaban saliva incluso antes de ver comida. La segregación de saliva iniciaba cuando los perros se daban cuenta de que el asistente de Ivan, caminaba hacia ellos — generalmente llevándoles la comida. Viendo esto, Ivan realizó una prueba adicional: antes de alimentar a los perros, en múltiples intentos tocó una campana. Luego de esto, los perros iniciaron a segregar más saliva con el sonido de la campana, porque habían aprendido que después de la campana, la comida seguiría. Esta campana es lo que se conoce como estímulo condicionante, porque el perro no saliva por la campana en sí, sino porque sabe que la comida seguirá a la campana.

El condicionamiento clásico también funcionó sobre Pavlov [imagen original de Flickr y traducida por mí].

Genial, pero yo quiero saber de qué se trata RL…

Hacía ahí vamos: RL se desarrolló a partir de este principio básico de la psicología. En RL, un agente aprende a comportarse basándose en un estímulo condicionante llamado recompensa. RL se sitúa en el siguiente escenario: un agente está situado e interactúa con un ambiente, en el que puede ejecutar acciones que afectan al estado del ambiente, el agente observa estos cambios y recibe una recompensa por sus acciones. Además, tanto el agente como el ambiente se encuentran en un tiempo discreto, por lo que nuestras observaciones están estructuradas en pasos. En cada paso, el agente observa el estado del ambiente, ejecuta una acción, que puede cambiar el estado del ambiente, y recibe una recompensa.

El setup de RL [imagen propia].
Para simplificarlo, lo veamos con un ejemplo: en este caso, nuestro agente es un robot, y queremos que aprenda a caminar hasta un área determinada, por lo que cuando llegue a ésta área, le daremos una recompensa positiva. Para lograr su objetivo, el robot puede utilizar diferentes acciones como girar a la derecha, girar a la izquierda, avanzar y retroceder. El robot comenzará a probar combinaciones aleatorias de acciones en cada paso, hasta que llegue a la ubicación que queremos que llegue. Una vez que esto haya sucedido, cambiaremos su ubicación y comenzaremos de nuevo: es como un “game over” porque el robot ha logrado su objetivo y no puede realizar ninguna más acciones. Este período que inicia con el robot en una posición aleatoria hasta que llega al área objetivo, se llama episodio, y repetiremos estos episodios hasta que el robot aprenda lo que debe hacer para obtener una buena recompensa. Luego de repetir esto múltiples veces, el robot siempre hará lo mismo: navegar al área objetivo porque sabe que al hacerlo, obtendrá una recompensa positiva.

Cómo aprende qué debe hacer el agente?

Probablemente ya lo ves venir: ¡matemáticas! El comportamiento del agente está modelado por una política, que puede ser representada de diferentes maneras según el método que usemos: por una tabla, por una función matemática o incluso por redes neuronales.

En el caso más básico de RL, denominado Q-tabular learning, el agente utiliza una tabla en la que hay una fila por cada estado y una columna por cada acción, como en la figura de abajo. Esta tabla le dice al agente cuál es el resultado esperado de realizar una acción en un estado determinado, por lo que cuando el estado del ambiente cambia, el agente observa la fila correspondiente al estado y puede elegir la acción que, en el pasado consiguió la mayor recompensa promedio. El valor para cada acción y cada estado se denomina valor Q (Q-value).

Tabla de valores Q en Tabular Q-learning.

Esta tabla representa una política en Tabular Q-learning. Cada valor Q se inicia en 0, y es actualizado después de cada paso con una regla de actualización basada en la recompensa recibida después de tomar la acción, y en “qué tan bueno” es el nuevo estado. Para evitar caer en cuestiones muy técnicas que puedan espantar a algunos lectores, voy a pasar por alto las fórmulas matemáticas involucradas en este paso. Sin embargo, si desean ver las matemáticas y los detalles de cómo se actualizan los valores Q, pueden hacerlo aquí.

El agente repetirá el episodio varias veces, actualizando su política en cada paso con su experiencia (estado, acción, nuevo estado, recompensa). Luego de muchos episodios, el agente aprenderá una política que resulte en una buena recompensa durante el episodio, tal como una persona aprendería a jugar un videojuego obteniendo una buena puntuación.

De hecho, los videojuegos son ambientes apropiados para probar agentes de RL, y es por eso que son uno de los casos de uso más comunes para esta técnica. Sin embargo, el estado de un videojuego generalmente se define como cada pantalla del videojuego, por lo que estamos lidiando con estados demasiado grandes para ser aprendidos con Tabular Q-learning, por lo que se hace necesario utilizar redes neuronales en lugar de una tabla para representar la política del agente. Esto es lo que llamamos Deep RL o Deep Q-learning, porque se utilizan redes neuronales profundas — deep neural networks en inglés. En el siguiente video, de Two Minute Papers, podemos ver al agente Deep Q-Learning de DeepMind jugando juegos de Atari.

¡Eso fue todo!

No estuvo tan mal, ¿no? Espero que ahora tengas una idea general de qué se trata RL y de cómo funciona. Si sigues interesado en el tema y quieres profundizar más, hay materiales en línea para ayudarte a empezar y para implementar RL en código. Lamentablemente, la mayoría están en inglés pero también encontré algunos en español:

Puedes chequear otros artículos sobre RL en mi perfil, la mayoría están en inglés pero estoy traduciéndolos al español de a poco.
¡Gracias por leer y espero que te haya servido!

The post Reinforcement Learning / Aprendizaje Reforzado Apto para todos los públicos first appeared on Planeta Chatbot.

]]>
https://desa.planetachatbot.com/reinforcement-learning-aprendizaje-reforzado/feed/ 0