Machine Learning (III) – Aprendizaje por Refuerzo

Machine Learning (III)

Hoy finalizamos la serie de Machine Learning con este artículo sobre aprendizaje por Refuerzo.

El aprendizaje por refuerzo es el área de la inteligencia artificial que está centrada en descubrir qué acciones se debe tomar para maximizar la señal de recompensa, en otras palabras se centra en cómo mapear situaciones a acciones que se centren en encontrar dicha recompensa. Al agente no se le dice que acciones tomar, si no al contrario él debe experimentar para encontrar qué acciones lo llevan a una mayor recompensa, los casos más desafiantes son los que no llevan a una recompensa inmediata si no en la siguientes situaciones.

Diferencia con aprendizaje supervisado

El aprendizaje supervisado está basado en un set de ejemplos que han sido etiquetados previamente, en otras palabras te muestra exactamente qué acción debes tomar para cada circunstancia, la que mayormente consiste en identificar o categorizar la situación; por lo cual el objetivo de este tipo de aprendizaje es generalizar o extrapolar para situaciones que no estén presentes en los datos de entrenamiento. Esto sin embargo no es beneficioso para los problemas interactivos, debido a que al saber que acciones debe desempeñar el agente esta técnica termina siendo inefectiva en territorio no explorado, es ahí donde el agente debe aprender por su propia experiencia.

Diferencia con aprendizaje no supervisado

El aprendizaje no supervisado se centra en encontrar estructuras dentro de una colección de datos, cuando el aprendizaje por refuerzo se enfoca en aumentar la señal de recompensa.

Debido a lo que hemos visto el aprendizaje por refuerzo se considera un tercer paradigma de aprendizaje automático.

Uno de los desafíos más grandes que existen en el aprendizaje por refuerzo es el intercambio entre explotación y exploración, para que el agente pueda encontrar mayor recompensa debe explotar lo que le ha funcionado en el pasado, pero para descubrir estas acciones debe explorar nuevas acciones. Tomar alguna de las dos acciones exclusivamente lleva al error, por lo cual deben ser balanceadas progresivamente; una acción se debe probar muchas veces para saber cuánto recompensa esperar con mayor confianza, este dilema ha sido estudiado extensivamente sin encontrar una solución definitiva.

 

Aprendizaje por Refuerzo

El aprendizaje por refuerzo resuelve un tipo de problema diferente. En el RL (Reinforcement Learning), hay un agente que interactúa con un entorno determinado, cambiando así su estado, y recibe recompensas (o penalizaciones) por sus aportaciones. Su objetivo es encontrar patrones de acciones, probándolas todas y comparando los resultados, que produzcan el mayor número de puntos de recompensa.

 

Una de las características clave de la RL es que las acciones del agente pueden no afectar al estado inmediato del entorno, pero sí a los posteriores. Así, a veces, la máquina no aprende si una determinada acción es eficaz hasta mucho más tarde en el episodio.

 

Captura de pantalla 2021-11-18 a las 17.26.04

 

Fuente de imagen

Pong, entendamos todo jugando:

Tomemos como ejemplo el juego Pong (los juegos vintage de Atari se utilizan a menudo para explicar el funcionamiento interno del aprendizaje por refuerzo) e imaginemos que intentamos enseñar a un agente a jugarlo.

 

Captura de pantalla 2021-11-18 a las 17.33.14Fuente de imagen

 

 

En el marco del aprendizaje supervisado, lo primero que haríamos sería grabar las sesiones de juego de un jugador humano y crear un conjunto de datos etiquetados en los que registraríamos cada fotograma mostrado en la pantalla (entrada), así como cada acción del jugador (salida).

A continuación, alimentaremos estos fotogramas de entrada a nuestro algoritmo y haríamos que predijera las acciones correctas (pulsar arriba o pulsar abajo) para cada situación (la corrección se define por nuestros resultados).

A pesar del alto nivel de precisión que podríamos alcanzar con él, este enfoque presenta algunas desventajas importantes. En primer lugar, debemos contar con un conjunto de datos etiquetados para realizar cualquier tipo de aprendizaje supervisado, y la obtención de los datos (y la anotación de las etiquetas) podría resultar un proceso bastante costoso y largo. Además, al aplicar este tipo de entrenamiento, no estamos dando a la máquina ninguna posibilidad de vencer al jugador humano; básicamente, sólo le estamos enseñando a emularlo.

 

Sin embargo, en el aprendizaje por refuerzo no existen tales límites.

 

Empezamos de la misma manera, es decir, pasando los fotogramas de entrada por nuestro algoritmo y dejando que se produzcan acciones aleatorias. No tenemos etiquetas de objetivos para cada situación, por lo que no indicamos al agente cuándo debe pulsar hacia arriba y cuándo hacia abajo. Le permitimos explorar el entorno por sí mismo.

 

La única información que proporcionamos es la del marcador. Cada vez que el modelo consigue anotar un punto obtiene una recompensa de +1 y cada vez que pierde un punto recibe una penalización de -1. Basándose en esto, actualizará iterativamente sus políticas para que las acciones que traen recompensas sean más probables y las que resulten en una penalización sean filtradas.

 

Aquí necesitamos un poco de paciencia: al principio, el agente, sin conocimiento, perderá el juego constantemente. Sin embargo, a medida que continúe explorando el juego, en algún momento tropezará con una secuencia de acciones ganadora, por pura suerte, y actualizará sus políticas en consecuencia.

 

Problemas del aprendizaje por refuerzo

 

No todo es perfecto en el mundo del aprendizaje por refuerzo. Incluso el escenario que acabas de leer -el agente que se vuelve bueno en un juego de Atari- puede ser bastante problemático.

 

Supongamos que el algoritmo ha estado jugando al Pong contra un humano durante algún tiempo y ha estado rebotando la pelota de un lado a otro con bastante habilidad. Pero entonces se resbala hacia el final del episodio y pierde un punto. La recompensa de toda la secuencia será negativa (-1), por lo que el modelo asume que todas las acciones realizadas fueron incorrectas, lo que no es así.

 

Esto se llama el Problema de la Asignación de Créditos y se deriva del hecho de que nuestro agente no está recibiendo retroalimentación inmediatamente después de cada acción. En Pong, sólo se puede ver el resultado de un episodio una vez terminado, en el marcador. Por lo tanto, tiene que establecer de alguna manera qué acciones han causado el resultado final.

 

Debido a este escenario de escasa recompensa, los algoritmos de aprendizaje por refuerzo suelen ser muy ineficientes en cuanto a la muestra. Requieren muchos datos para el entrenamiento antes de ser efectivos.

 

Además, en algunos casos, cuando una secuencia de acciones necesarias para obtener una recompensa es demasiado larga y complicada, el sistema de recompensa escasa fallará por completo. El agente, incapaz de obtener una recompensa dando pasos al azar, no aprenderá nunca el comportamiento correcto.

 

Para luchar contra esto, los expertos en aprendizaje por refuerzo diseñan manualmente funciones de recompensa para que sean capaces de guiar las políticas del agente hacia la obtención de una recompensa. Normalmente, estas funciones dan una serie de mini recompensas a lo largo de la ruta hacia la gran recompensa, proporcionando así al agente las sugerencias necesarias. El proceso de elaboración de esta función se conoce como Reward Shaping.

 

Os dejo aquí el enlace a un proyecto de GitHub donde podéis ver el código para entender mejor cómo funciona el Pong con este tipo de algoritmo.

 

Q-Learning

Para finalizar y sin que quede sin mencionar os dejo una breve explicación de lo que es el Q-Learning.

El Q-learning es un algoritmo de aprendizaje basado en valores y se centra en la optimización de la función de valor según el entorno o el problema. La Q en el Q-learning representa la calidad con la que el modelo encuentra su próxima acción mejorando la calidad. El proceso puede ser automático y sencillo. El modelo almacena todos los valores en una tabla, que es la Tabla Q.

 

Captura de pantalla 2021-11-19 a las 10.55.04

Además, para profundizar mejor en ello creo que esta publicación os puede interesar -> Aprendizaje por refuerzo: algoritmo Q Learning

 

 

 

 

Por Alejandro Delgado – Lead Data Scientist en Pixelabs.

 

 

 

Share your thoughts

No Comments

Sorry, the comment form is closed at this time.