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 6170all-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 6170wp-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 6170The post Acelerando Reinforcement Learning con Tutor4RL first appeared on Planeta Chatbot.
]]>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.
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:
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:

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.

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.

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:
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.
]]>The post Reinforcement Learning / Aprendizaje Reforzado Apto para todos los públicos first appeared on Planeta Chatbot.
]]>
“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.
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.

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.

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).

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.
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.
]]>