馃帣 Episodio 37. 驴C贸mo funciona el aprendizaje por refuerzo?

En el episodio de hoy de Un podcast ninja sobre Big Data desciframos c贸mo funciona el aprendizaje por refuerzo.

DeepMind consigui贸 sus primeros resultados sobresalientes tras conseguir un modelo de Machine Learning que era capaz de jugar a algunos de los juegos de la consola Atari 2600.

Y lo hizo mediante Aprendizaje por refuerzo a.k.a reinforcement learning.

El aprendizaje por refuerzo aplicado a tu perro

Este tipo de Machine Learning podr铆a parecerse a c贸mo entrenamos una mascota.

Mediante recompensas y penalizaciones.

Si lanzas la pelota a tu perrete y te la trae le das un premio para que asocie la acci贸n de ir a buscar la pelota con la recompensa.

Si hace sus necesidades en el sof谩 pues le caer谩 una bronca para que no lo vuelva a hacer.

Despu茅s de unas cuantas veces y con algo de suerte, tu mascota habr谩 aprendido que ir a buscar la pelota cuando se la tiras es bueno y que hacer sus necesidades en el sof谩 no lo es.

Esta es la idea b谩sica del aprendizaje por refuerzo: Recompensas y penalizaciones.

Pero volvamos a los or铆genes del aprendizaje por refuerzo para entrender c贸mo funciona...

Aprendizaje por refuerzo para jugar al Atari Pong

Imaginad que queremos entrenar un modelo de Machine Learning para jugar a videojuegos.

Y m谩s concretamente al Pong, que es uno de los juegos de la consola Atari 2600.

El Pong consiste en dos l铆neas verticales a los extremos de la pantalla que simulan unas palas y una pelota. Una de las palas las controlamos nosotros y la otra el juego. El objetivo consiste en devolver la pelotilla y que la otra pala no sea capaz de devolverla.

El Atari Pong fue una de los primeros resultados del aprendizaje por refuerzo

Bien.

Si quisi茅ramos entrenar un modelo de Machine Learning para jugar al pong mediante aprendizaje supervisado necesitar铆amos tener un conjunto de datos de entrenamiento con millones de partidas jugadas por humanos.

Y en este caso, el modelo no ser铆a capaz de ganar al mejor humano del mundo.

Al fin y al cabo aprende a jugar de la misma manera que juegan las personas.

驴C贸mo hacerlo entonces?

En 2013, la gente de DeepMind present贸 la soluci贸n mediante aprendizaje por refuerzo, gracias a la cual atraer铆an un mont贸n de atenci贸n que luego provoc贸 la adquisici贸n de DeepMind por parte de Google.

Empezaba la 茅poca dorada del aprendizaje por refuerzo.

Que dur贸 hasta que su oscuro secreto fue descubierto (luego os cuento...)

La soluci贸n no dejaba de estar construida por algoritmos que ya exist铆an desde finales de los 90.

Pas贸 un poco como con el deep learning, las ideas estaban ah铆 pero nadie hab铆a acabado de unir todos los puntos.

La soluci贸n

Lo que el modelo ten铆a que hacer era lo siguiente鈥

  1. Recib铆a como entrada la imagen completa de la pantalla pixel a pixel. Como hablamos de juegos de los a帽os 70 pues lo de la alta resoluci贸n no se estilaba mucho. Ten铆amos 210 p铆xeles de largo y 160 de ancho. Y con eso le pasan la informaci贸n sobre d贸nde est谩 cada pala y donde est谩 la pelotilla.
  2. El modelo devuelve la probabilidad de que la pala que controla se mueva hacia arriba o hacia abajo. (Podr铆a tambi茅n dejar la pala quieta pero vamos a simplificar)
  3. Una vez que el modelo de Machine Learning decide si mover la pala hacia arriba o hacia abajo se realiza esta acci贸n en el juego mediante simulaci贸n
    • Si le met铆an un gol al oponente: Punto para el equipo de modelos de Machine Learning, o sea una recompensa
    • Si le met铆an un gol al modelo pues penalizaci贸n al canto

Obviamente el objetivo es conseguir maximizar la recompensa y minimizar las penalizaciones.

Todo este proceso se hace para cada movimiento que hay en el juego.

Cada cambio de sitio de la pelota en la pantalla es una decisi贸n que devuelve el modelo de Machine Learning sobre si mover su pala hacia arriba o hacia abajo.

Y adem谩s hay un tema. La mayor铆a de las veces no hay ninguna recompensa ni penalizaci贸n. Ni marca un gol el modelo ni se lo marcan a 茅l.

La pelota simplemente se va moviendo de un lado a otro de la pantalla.

Y aqu铆 es cuando se desvela el oscuro secreto del aprendizaje por refuerzo.

El aprendizaje por refuerzo est谩 lleno de fracaso. 

Porque al principio es como mover la pala a ciegas. El modelo no tiene ni idea de lo que tiene que hacer, de c贸mo conseguir recompensas ni de c贸mo evitar penalizaciones.

Imaginad la suerte que hay que tener para marcarle un gol al oponente.

Hay que repetir el proceso de mover la pala arriba o abajo cientos de veces antes incluso de conseguir la primera recompensa o penalizaci贸n.

Y luego, claro, conseguimos una recompensa despu茅s de mover la pala unas cuantas veces y a ver c贸mo sabe el modelo cu谩les de esos movimientos han servido y cu谩les no.

驴Ha conseguido la recompensa gracias al tercer movimiento o igual tuvo que ver con el movimiento n煤mero 50?

Cuando vosotros jug谩is al pong sab茅is que una buena se帽al para ganar es conseguir hacer rebotar la pelota en una direcci贸n buena y que lo que hag谩is despu茅s de eso, mientras la pelota va de vuestro campo al contrario pues no tiene relevancia.

Sin embargo, para el modelo es complicado asociar la recompensa con algo que pas贸 hace unos cuantos movimientos y que lo que hizo despu茅s da igual.

驴Entonces que se hace?

Entrenamiento en el aprendizaje por refuerzo

Una manera de resolver esto es utilizar una pol铆tica que asigne a cada movimiento de la pala que decide el modelo de Machine Learning la recompensa o penalizaci贸n de la partida completa. 

Es como si hici茅ramos aprendizaje supervisado sobre un conjunto de datos que cambia continuamente, que es la pantalla del juego en cada momento, y la etiqueta es el resultado final de la partida.

A partir de ah铆 solo hay que dejar al modelo de Machine Learning jugar al pong unas cuantas partidas, con esos datos y el resultado final de la partida nos creamos un dataset de entrenamiento y es como si hici茅ramos aprendizaje supervisado.

Los movimientos que hicimos en las partidas que ganamos de todas esas se reforzar谩n y los movimientos de las partidas que perdimos se realizar谩n menos.

Despu茅s volvemos a dejar jugar unas cuantas partidas m谩s al modelo de aprendizaje por refuerzo.

Y volvemos a ajustar los par谩metros del modelo.

Y as铆.

El tema del aprendizaje por refuerzo es que nadie le explica al modelo cu谩l es el objetivo real del juego. Su objetivo es simplemente maximizar las recompensas y minimizar las penalizaciones y tampoco sabe c贸mo se consiguen esas recompensas.

La 煤nica manera de conseguirlas es ir haciendo cosas y ver si suceden recompensas.

Prueba y error.

Otra cosa que diferencia en a humanos de modelos de Machine Learning utilizando aprendizaje por refuerzo es que los humanos pueden usar su intuici贸n y l贸gica, la persona sabe que la pelotilla se mueve por la pantalla de manera continua, no desaparece y aparece en otro punto sin previo aviso y que lo hace a velocidad constante.

El modelo comienza de la nada y para que realmente sea capaz de entrenarse es necesario que est茅 expuesto a recompensas y penalizaciones de manera frecuente de manera que los par谩metros del modelo se vayan ajustando poco a poco para poder repetir los movimientos que dan lugar a m谩s recompensas y en definitiva a ganar partidas.

TL;DR

As铆 que, recapitulando鈥

El aprendizaje por refuerzo se utiliza cuando el modelo interact煤a en el tiempo con un entorno. En nuestro caso del juego del pong decidiendo en cada instante si mover la pala hacia arriba o hacia abajo. 

Para entrenar este modelo se definen recompensas y penalizaciones de manera que el objetivo del modelo es maximizar las recompensas y minimizar las penalizaciones.

La complejidad de este modelo est谩 principalmente en que el feedback sobre si las acciones que est谩 tomando en cada momento son correctas o err贸neas no es inmediato. En el caso del pong no aparecen hasta que termina la partida.

Ah铆 es cuando el modelo sabe si ha ganado, es decir que le ha marcado un gol a su oponente lo que significa recompensa o ha perdido.

La verdad es que es un tipo de Machine Learning que mola mucho cuando funciona pero hay que hacer much铆simos intentos para conseguir que funcione y en algunos caso no llega a hacerlo.

El modelo de aprendizaje por refuerzo funciona por fuerza bruta, moviendo la pala de manera aleatoria al principio hasta que se gana una partida de casualidad y se encuentra con la recompensa.

Despu茅s, si consigue tener la suerte de encontrarse con las suficientes recompensas en sus partidas de entrenamiento podr谩 actualizar sus par谩metros para repetir las acciones que le llevan a obtener m谩s recompensas. 

En parte es un poco como puede aprender un humano frente a recompensas y penalizaciones.

sin embargo, los humanos tenemos cieerta ventaja porque entendemos algunas reglas del juego incluso sin que nos las expliquen. Por ejemplo, sabemos que el movimiento de la pelota va a ser continuo y que no se va a teletransportar.

Es un conocimiento de base que, en principio, no se transmite al modelo de aprendizaje por refuerzo.

Imaginad c贸mo ser铆a jugar al pong o a cualquier videojuego a ciegas. Sin saber de qu茅 va ni c贸mo conseguir las recompensas.

Solo prueba y error.

Espero que os guste el episodio.

Si es as铆, no olvid茅is dejar un 芦Me gusta禄 y alg煤n comentario al episodio en Ivoox o una valoraci贸n de 5 estrellas del podcast en Apple podcasts, en Spotify, en Google podcasts o donde quiera que escuch茅is el podcast. 

Recordad que si ten茅is cualquier duda o pregunta pod茅is contactar conmigo a trav茅s del formulario de contacto o podemos seguir la conversaci贸n en Twitter.

Muchas gracias por estar ah铆 y os espero en el pr贸ximo episodio de Un Podcast Ninja sobre Big Data.

Bolet铆n Ninja

Suscr铆bete a la newsletter y recibe la gu铆a ninja del Big Data y la Inteligencia Artificial.

Gu铆a ninja del Big Data
Copyright 漏 2023  路 Datos 馃シ 路 Todos los derechos reservados