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.
Tabla de contenidos
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.
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.
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).
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:
- La Biblia de RL: “Reinforcement Learning: an introduction” de Sutton & Barto. Un libro con toda la información necesaria para comprender y utilizar RL, incluyendo ejemplos de código [inglés].
- Curso de Aprendizaje Reforzado de la Universidad de Buenos Aires [español].
- Tutorial de Reinforcement Learning con Python y OpenAI Gym [inglés].
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!