Una introducción al Aprendizaje por Refuerzo Profundo

Introducción al Aprendizaje por Refuerzo Profundo

Capítulo 1 del Curso de Aprendizaje por Reforzamiento Profundo con Hugging Face 🤗

⚠️ Hay una versión actualizada de este artículo disponible aquí 👉 https://huggingface.co/deep-rl-course/unit1/introduction

Este artículo es parte del Curso de Aprendizaje por Reforzamiento Profundo. Un curso gratuito desde principiante hasta experto. Consulta el programa aquí.


⚠️ Hay una versión actualizada de este artículo disponible aquí 👉 https://huggingface.co/deep-rl-course/unit1/introduction

Este artículo es parte del Curso de Aprendizaje por Reforzamiento Profundo. Un curso gratuito desde principiante hasta experto. Consulta el programa aquí.

Bienvenido al tema más fascinante de la Inteligencia Artificial: Aprendizaje por Reforzamiento Profundo.

El Aprendizaje por Reforzamiento Profundo es un tipo de Aprendizaje Automático donde un agente aprende cómo comportarse en un entorno realizando acciones y observando los resultados.

Desde 2013 y el artículo de Aprendizaje Q-Profundo, hemos presenciado muchos avances. Desde OpenAI Five que venció a algunos de los mejores jugadores de Dota2 del mundo, hasta el proyecto Dexterity, vivimos en un momento emocionante en la investigación de Aprendizaje por Reforzamiento Profundo.

OpenAI Five, una IA que venció a algunos de los mejores jugadores de Dota2 del mundo

Además, desde 2018, ahora tienes acceso a tantos entornos y bibliotecas increíbles para construir tus agentes.

Por eso este es el mejor momento para comenzar a aprender, y con este curso estás en el lugar correcto.

Sí, porque este artículo es la primera unidad del Curso de Aprendizaje por Reforzamiento Profundo, un curso gratuito desde principiante hasta experto donde aprenderás la teoría y la práctica utilizando famosas bibliotecas de Aprendizaje por Reforzamiento Profundo como Stable Baselines3, RL Baselines3 Zoo y RLlib.

En este curso gratuito, aprenderás:

  • 📖 Estudiar el Aprendizaje por Reforzamiento Profundo en teoría y práctica.
  • 🧑‍💻 Aprender a utilizar famosas bibliotecas de Aprendizaje por Reforzamiento Profundo como Stable Baselines3, RL Baselines3 Zoo y RLlib.
  • 🤖 Entrenar agentes en entornos únicos como SnowballFight, Huggy the Doggo 🐶, y clásicos como Space Invaders y PyBullet.
  • 💾 Publicar tus agentes entrenados en una línea de código en el Hub. Pero también descargar agentes poderosos de la comunidad.
  • 🏆 Participar en desafíos donde evaluarás tus agentes contra otros equipos.
  • 🖌️🎨 Aprender a compartir tus entornos creados con Unity y Godot.

Entonces en esta primera unidad, aprenderás los fundamentos del Aprendizaje por Reforzamiento Profundo. Y luego, entrenarás a tu primer agente lunar para aterrizar correctamente en la Luna 🌕 y subirlo al Hugging Face Hub, una plataforma gratuita y abierta donde las personas pueden compartir modelos de ML, conjuntos de datos y demos.

Es esencial dominar estos elementos antes de adentrarte en la implementación de agentes de Aprendizaje por Reforzamiento Profundo. El objetivo de este capítulo es brindarte bases sólidas.

Si lo prefieres, puedes ver la versión en 📹 video de este capítulo:

¡Comencemos! 🚀

  • ¿Qué es el Aprendizaje por Reforzamiento?
    • La imagen completa
    • Una definición formal
  • El Marco de Aprendizaje por Reforzamiento
    • El Proceso de RL
    • La hipótesis de la recompensa: la idea central del Aprendizaje por Reforzamiento
    • Propiedad de Markov
    • Observaciones/Espacio de Estados
    • Espacio de Acciones
    • Recompensas y el descuento
    • Tipo de tareas
  • La compensación entre Exploración/Explotación
  • Los dos enfoques principales para resolver problemas de RL
    • La Política π: el cerebro del agente
    • Métodos basados en Políticas
    • Métodos basados en Valor
  • El “Profundo” en Aprendizaje por Reforzamiento

¿Qué es el Aprendizaje por Reforzamiento?

Para entender el Aprendizaje por Reforzamiento, comencemos con la imagen general.

La imagen general

La idea detrás del Aprendizaje por Reforzamiento es que un agente (una IA) aprenderá del entorno interactuando con él (a través de prueba y error) y recibiendo recompensas (negativas o positivas) como retroalimentación por realizar acciones.

El aprendizaje a través de la interacción con el entorno se basa en nuestras experiencias naturales.

Por ejemplo, imagina poner a tu hermanito frente a un videojuego que nunca ha jugado, con un control en sus manos, y dejarlo solo.

Tu hermanito interactuará con el entorno (el videojuego) presionando el botón correcto (acción). Obtiene una moneda, eso es una recompensa +1. Es positiva, acaba de entender que en este juego debe obtener las monedas.

Pero luego, vuelve a presionar el botón derecho y toca a un enemigo, acaba de perder -1 recompensa.

Al interactuar con su entorno a través de prueba y error, tu hermanito comprendió que necesitaba obtener monedas en este entorno pero evitar a los enemigos.

Sin ninguna supervisión, el niño mejorará cada vez más en el juego.

Así es como los humanos y los animales aprenden, a través de la interacción. El Aprendizaje por Reforzamiento es solo un enfoque computacional del aprendizaje a través de la acción.

Una definición formal

Si ahora tomamos una definición formal:

El aprendizaje por reforzamiento es un marco para resolver tareas de control (también llamadas problemas de decisión) construyendo agentes que aprenden del entorno interactuando con él a través de prueba y error y recibiendo recompensas (positivas o negativas) como retroalimentación única.

⇒ Pero, ¿cómo funciona el Aprendizaje por Reforzamiento?

El marco de aprendizaje por reforzamiento

El proceso de RL

El proceso de RL: un bucle de estado, acción, recompensa y siguiente estado

Para entender el proceso de RL, imaginemos un agente aprendiendo a jugar un juego de plataformas:

  • Nuestro agente recibe el estado S 0 S_0 S 0 ​ del Entorno — recibimos el primer cuadro de nuestro juego (Entorno).
  • Basado en ese estado S 0 S_0 S 0 ​, el agente toma la acción A 0 A_0 A 0 ​ — nuestro agente se moverá hacia la derecha.
  • El entorno pasa a un nuevo estado S 1 S_1 S 1 ​ — nuevo cuadro.
  • El entorno le da una recompensa R 1 R_1 R 1 ​ al agente — no estamos muertos (Recompensa positiva +1) .

Este bucle de RL produce una secuencia de estado, acción, recompensa y siguiente estado.

El objetivo del agente es maximizar su recompensa acumulativa, llamada retorno esperado.

La hipótesis de recompensa: la idea central del Aprendizaje por Reforzamiento

⇒ ¿Por qué el objetivo del agente es maximizar el retorno esperado?

Porque el AR se basa en la hipótesis de recompensa, que establece que todos los objetivos se pueden describir como la maximización del retorno esperado (recompensa acumulativa esperada).

Por eso, en Aprendizaje por Reforzamiento, para tener el mejor comportamiento, necesitamos maximizar la recompensa acumulativa esperada.

Propiedad de Markov

En los documentos, verás que el proceso de RL se llama el Proceso de Decisión de Markov (MDP).

Hablaremos nuevamente sobre la Propiedad de Markov en las siguientes unidades. Pero si necesitas recordar algo hoy sobre esto, la Propiedad de Markov implica que nuestro agente necesita solo el estado actual para decidir qué acción tomar y no el historial de todos los estados y acciones que tomó antes.

Espacio de Observaciones/Estados

Las Observaciones/Estados son la información que nuestro agente obtiene del entorno. En el caso de un videojuego, puede ser un cuadro (una captura de pantalla). En el caso del agente de trading, puede ser el valor de una cierta acción, etc.

Hay una diferenciación entre observación y estado:

  • Estado s: es una descripción completa del estado del mundo (no hay información oculta). En un entorno completamente observado.
En el juego de ajedrez, recibimos un estado del entorno ya que tenemos acceso a toda la información del tablero.

En el juego de ajedrez, recibimos un estado del entorno ya que tenemos acceso a toda la información del tablero.

Con un juego de ajedrez, estamos en un entorno completamente observado, ya que tenemos acceso a toda la información del tablero.

  • Observación o: es una descripción parcial del estado. En un entorno parcialmente observado.
En Super Mario Bros, solo vemos una parte del nivel cerca del jugador, por lo que recibimos una observación.

En Super Mario Bros, solo vemos una parte del nivel cerca del jugador, por lo que recibimos una observación.

En Super Mario Bros, estamos en un entorno parcialmente observado. Recibimos una observación ya que solo vemos una parte del nivel.

En realidad, utilizamos el término estado en este curso, pero haremos la distinción en las implementaciones.

Para recapitular:

Espacio de Acciones

El Espacio de Acciones es el conjunto de todas las acciones posibles en un entorno.

Las acciones pueden provenir de un espacio discreto o continuo:

  • Espacio discreto: el número de acciones posibles es finito.
De nuevo, en Super Mario Bros, solo tenemos 4 direcciones y saltar posible.

En Super Mario Bros, tenemos un conjunto finito de acciones ya que solo tenemos 4 direcciones y saltar.

  • Espacio continuo: el número de acciones posibles es infinito.

    Un agente de Autoconducción tiene un número infinito de acciones posibles ya que puede girar a la izquierda 20°, 21,1°, 21,2°, tocar la bocina, girar a la derecha 20°…

Para recapitular:

Tener en cuenta esta información es crucial porque tendrá importancia al elegir el algoritmo de RL en el futuro.

Recompensas y el descuento

La recompensa es fundamental en RL porque es la única retroalimentación para el agente. Gracias a ella, nuestro agente sabe si la acción tomada fue buena o no.

La recompensa acumulada en cada paso de tiempo t se puede escribir como:

La recompensa acumulada es igual a la sumatoria de todas las recompensas de la secuencia.

Lo cual es equivalente a:

La recompensa acumulada = rt+1 (rt+k+1 = rt+0+1 = rt+1)+ rt+2 (rt+k+1 = rt+1+1 = rt+2) + ...

Sin embargo, en realidad, no podemos simplemente sumarlas así. Las recompensas que llegan antes (al comienzo del juego) son más propensas a ocurrir ya que son más predecibles que la recompensa futura a largo plazo.

Supongamos que tu agente es este pequeño ratón que puede moverse una casilla en cada paso de tiempo, y tu oponente es el gato (que también puede moverse). Tu objetivo es comer la mayor cantidad de queso antes de ser comido por el gato.

Como podemos ver en el diagrama, es más probable comer el queso cerca de nosotros que el queso cerca del gato (cuanto más cerca estamos del gato, más peligroso es).

En consecuencia, la recompensa cerca del gato, aunque sea mayor (más queso), estará más descontada ya que no estamos realmente seguros de que podamos comerlo.

Para descontar las recompensas, procedemos de la siguiente manera:

  1. Definimos una tasa de descuento llamada gamma. Debe estar entre 0 y 1. La mayoría de las veces entre 0.99 y 0.95.
  • Cuanto mayor sea gamma, menor será el descuento. Esto significa que nuestro agente se preocupa más por la recompensa a largo plazo.

  • Por otro lado, cuanto menor sea gamma, mayor será el descuento. Esto significa que nuestro agente se preocupa más por la recompensa a corto plazo (el queso más cercano).

2. Luego, cada recompensa se descontará por gamma elevado a la potencia del paso de tiempo. A medida que aumenta el paso de tiempo, el gato se acerca a nosotros, por lo que la recompensa futura es cada vez menos probable que ocurra.

Nuestra recompensa acumulada esperada descontada es:

Tipo de tareas

Una tarea es una instancia de un problema de Aprendizaje por Reforzamiento. Podemos tener dos tipos de tareas: episódicas y continuas.

Tarea episódica

En este caso, tenemos un punto de inicio y un punto final (un estado terminal). Esto crea un episodio: una lista de Estados, Acciones, Recompensas y nuevos Estados.

Por ejemplo, piensa en Super Mario Bros: un episodio comienza en el inicio de un nuevo nivel de Mario y termina cuando eres eliminado o llegas al final del nivel.

Comienzo de un nuevo episodio.

Tareas continuas

Estas son tareas que continúan para siempre (sin estado terminal). En este caso, el agente debe aprender a elegir las mejores acciones e interactuar simultáneamente con el entorno.

Por ejemplo, un agente que realiza operaciones de compra y venta automatizadas en la bolsa de valores. Para esta tarea, no hay punto de inicio ni estado terminal. El agente sigue funcionando hasta que decidamos detenerlo.

Compensación entre exploración/explotación

Finalmente, antes de examinar los diferentes métodos para resolver problemas de Aprendizaje por Reforzamiento, debemos cubrir un tema muy importante: la compensación entre exploración y explotación.

  • La exploración consiste en explorar el entorno mediante la ejecución de acciones aleatorias con el fin de obtener más información sobre el entorno.

  • La explotación consiste en aprovechar la información conocida para maximizar la recompensa.

Recuerda, el objetivo de nuestro agente de RL es maximizar la recompensa acumulada esperada. Sin embargo, podemos caer en una trampa común.

Veamos un ejemplo:

En este juego, nuestro ratón puede obtener una cantidad infinita de pequeños quesos (+1 cada uno). Pero en la parte superior del laberinto, hay una enorme cantidad de queso (+1000).

Sin embargo, si nos enfocamos solo en la explotación, nuestro agente nunca alcanzará la enorme cantidad de queso. En cambio, solo explotará la fuente de recompensas más cercana, incluso si esta fuente es pequeña (explotación).

Pero si nuestro agente hace un poco de exploración, puede descubrir la gran recompensa (la pila de quesos grandes).

Esto es lo que llamamos la compensación entre exploración y explotación. Necesitamos equilibrar cuánto exploramos el entorno y cuánto explotamos lo que sabemos sobre el entorno.

Por lo tanto, debemos definir una regla que ayude a manejar esta compensación. Veremos en capítulos futuros diferentes formas de manejarla.

Si aún es confuso, piensa en un problema real: la elección de un restaurante:

Fuente: Curso de IA de Berkeley
  • Explotación: Vas todos los días al mismo que sabes que es bueno y corres el riesgo de perderte un restaurante mejor.
  • Exploración: Pruebas restaurantes a los que nunca has ido antes, con el riesgo de tener una mala experiencia pero la probable oportunidad de una experiencia fantástica.

Para resumir:

Las dos principales enfoques para resolver problemas de RL

⇒ Ahora que hemos aprendido el marco de RL, ¿cómo resolvemos el problema de RL?

En otras palabras, ¿cómo construir un agente de RL que pueda seleccionar las acciones que maximicen su recompensa acumulada esperada?

La Política π: el cerebro del agente

La Política π es el cerebro de nuestro Agente, es la función que nos indica qué acción tomar dado el estado en el que nos encontramos. Por lo tanto, define el comportamiento del agente en un momento dado.

Piensa en la política como el cerebro de nuestro agente, la función que nos dirá la acción a tomar dado un estado

Piensa en la política como el cerebro de nuestro agente, la función que nos dirá la acción a tomar dado un estado

Esta Política es la función que queremos aprender, nuestro objetivo es encontrar la política óptima π, la política que * maximiza el retorno esperado cuando el agente actúa de acuerdo a ella. Encontramos esta π a través del entrenamiento. *

Hay dos enfoques para entrenar a nuestro agente y encontrar esta política óptima π*:

  • Directamente, enseñando al agente a aprender qué acción tomar, dado el estado en el que se encuentra: Métodos basados en Política (Policy-Based Methods).
  • Indirectamente, enseñando al agente a aprender qué estado es más valioso y luego tomar la acción que conduce a los estados más valiosos: Métodos basados en Valor (Value-Based Methods).

Métodos basados en políticas

En los métodos basados en políticas, aprendemos una función de política directamente.

Esta función mapeará desde cada estado a la mejor acción correspondiente en ese estado. O a una distribución de probabilidad sobre el conjunto de acciones posibles en ese estado.

Como podemos ver aquí, la política (determinista) indica directamente la acción a tomar en cada paso.

Tenemos dos tipos de política:

  • Determinista: una política en un estado dado siempre devolverá la misma acción.
acción = política(estado)

  • Estocástica: produce una distribución de probabilidad sobre las acciones.
política(acciones | estado) = distribución de probabilidad sobre el conjunto de acciones dado el estado actual
Dado un estado inicial, nuestra política estocástica producirá distribuciones de probabilidad sobre las posibles acciones en ese estado.

Si recapitulamos:

Métodos basados en valores

En los métodos basados en valores, en lugar de entrenar una función de política, entrenamos una función de valor que mapea un estado al valor esperado de estar en ese estado.

El valor de un estado es el retorno descontado esperado que el agente puede obtener si empieza en ese estado y luego actúa según nuestra política.

“Actuar según nuestra política” simplemente significa que nuestra política es “ir al estado con el valor más alto”.

Aquí vemos que nuestra función de valor define el valor para cada posible estado.

Gracias a nuestra función de valor, en cada paso nuestra política seleccionará el estado con el valor más alto definido por la función de valor: -7, luego -6, luego -5 (y así sucesivamente) para alcanzar la meta.

Gracias a nuestra función de valor, en cada paso nuestra política seleccionará el estado con el valor más alto definido por la función de valor: -7, luego -6, luego -5 (y así sucesivamente) para alcanzar la meta.

Si recapitulamos:

El “Deep” en Aprendizaje por Reforzamiento

⇒ Lo que hemos hablado hasta ahora es Aprendizaje por Reforzamiento. ¿Pero dónde entra en juego lo “Deep”?

El Aprendizaje por Reforzamiento Profundo introduce redes neuronales profundas para resolver problemas de Aprendizaje por Reforzamiento — de ahí el nombre “deep”.

Por ejemplo, en el próximo artículo, trabajaremos en Q-Learning (Aprendizaje por Reforzamiento clásico) y luego en Deep Q-Learning, ambos son algoritmos de Aprendizaje por Reforzamiento basados en valores.

Verás que la diferencia es que en el primer enfoque, usamos un algoritmo tradicional para crear una tabla Q que nos ayuda a encontrar qué acción tomar para cada estado.

En el segundo enfoque, utilizaremos una Red Neuronal (para aproximar el valor q).

Esquema inspirado en el cuaderno de aprendizaje Q por Udacity

Si no estás familiarizado con el Aprendizaje Profundo, definitivamente deberías ver el curso de Prácticas de Aprendizaje Profundo para Codificadores de fastai (Gratis)

Esa fue mucha información, si resumimos:

  • El Aprendizaje por Reforzamiento es un enfoque computacional de aprendizaje a través de la acción. Construimos un agente que aprende del entorno interactuando con él a través de ensayo y error y recibiendo recompensas (negativas o positivas) como retroalimentación.

  • El objetivo de cualquier agente de RL es maximizar su recompensa acumulativa esperada (también llamada retorno esperado) porque RL se basa en la hipótesis de la recompensa, que establece que todos los objetivos pueden describirse como la maximización de la recompensa acumulativa esperada.

  • El proceso de RL es un ciclo que produce una secuencia de estado, acción, recompensa y siguiente estado.

  • Para calcular la recompensa acumulativa esperada (retorno esperado), descontamos las recompensas: las recompensas que llegan más pronto (al inicio del juego) tienen más probabilidades de ocurrir ya que son más predecibles que la recompensa a largo plazo.

  • Para resolver un problema de RL, quieres encontrar una política óptima, la política es el “cerebro” de tu IA que nos dirá qué acción tomar dado un estado. La óptima es aquella que te brinda las acciones que maximizan el retorno esperado.

  • Hay dos formas de encontrar tu política óptima:

    1. Entrenando directamente tu política: métodos basados en la política.
    2. Entrenando una función de valor que nos dice el retorno esperado que el agente obtendrá en cada estado y usando esta función para definir nuestra política: métodos basados en el valor.
  • Finalmente, hablamos de Deep RL porque introducimos redes neuronales profundas para estimar la acción a tomar (basado en la política) o para estimar el valor de un estado (basado en el valor) de ahí el nombre “profundo”.


Ahora que has estudiado las bases del Aprendizaje por Reforzamiento, estás listo para entrenar a tu primer agente lunar para aterrizar correctamente en la Luna 🌕 y compartirlo con la comunidad a través del Hub 🔥

Comienza el tutorial aquí 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit1/unit1.ipynb

Y como la mejor manera de aprender y evitar la ilusión de competencia es ponerte a prueba. Hemos creado un cuestionario para ayudarte a identificar dónde necesitas reforzar tus conocimientos. Verifica tus conocimientos aquí 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit1/quiz.md

¡Felicitaciones por terminar este capítulo! Ese fue el más largo y había mucha información. Y felicitaciones por terminar el tutorial. Acabas de entrenar a tu primer agente de Deep RL y lo compartiste en el Hub 🥳.

Es normal si todavía te sientes confundido/a con todos estos elementos. Lo mismo me pasó a mí y a todas las personas que estudiaron RL.

Tómate tiempo para comprender realmente el material antes de continuar. Es importante dominar estos elementos y tener bases sólidas antes de adentrarte en la parte divertida.

Hemos publicado lecturas adicionales en el programa si quieres profundizar más 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit1/README.md

Naturalmente, durante el curso, vamos a usar y explicar estos términos nuevamente, pero es mejor entenderlos antes de sumergirte en los siguientes capítulos.

En el próximo capítulo, vamos a aprender sobre el Q-Learning y profundizar en los métodos basados en el valor.

¡Y no te olvides de compartir con tus amigos que quieran aprender 🤗!

Finalmente, queremos mejorar y actualizar el curso de manera iterativa con tus comentarios. Si tienes alguno, por favor completa este formulario 👉 https://forms.gle/3HgA7bEHwAmmLfwh9

Sigue aprendiendo, mantente increíble,

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Aprendamos IA juntos - Boletín de la Comunidad Towards AI #3

Buenos días, entusiastas de la IA! Estoy emocionado de compartir el episodio de podcast de esta semana, en el que cha...

Inteligencia Artificial

¿Cómo codificar usando ChatGPT?

Introducción Incorporar inteligencia artificial en la programación moderna ha dado inicio a una nueva era de eficienc...

Inteligencia Artificial

IA en movimiento

Si 2023 fue el año de los LLM (modelos de lenguaje grandes), entonces 2024 será el año de los LMM (modelos multimodal...

Inteligencia Artificial

GenAIOps Evolucionando el marco de MLOps

Allá por 2019, publiqué un blog en LinkedIn titulado Por qué necesitas ML Ops para una innovación exitosa. Avanzamos ...