Una introducción a Q-Learning Parte 2/2

'Introducción a Q-Learning Parte 2/2'

Unidad 2, parte 2 de la Clase de Aprendizaje por Reforzamiento Profundo con Hugging Face 🤗

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

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


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

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

En la primera parte de esta unidad, aprendimos sobre los métodos basados en el valor y la diferencia entre el Aprendizaje de Monte Carlo y el Aprendizaje de Diferencia Temporal.

Así que, en la segunda parte, estudiaremos el Q-Learning, e implementaremos nuestro primer agente de RL desde cero, un agente de Q-Learning, y lo entrenaremos en dos entornos:

  1. Frozen Lake v1 ❄️: donde nuestro agente necesitará ir desde el estado inicial (S) hasta el estado objetivo (G) caminando solo sobre baldosas congeladas (F) y evitando agujeros (H).
  2. Un taxi autónomo 🚕: donde el agente necesitará aprender a navegar por una ciudad para transportar a sus pasajeros desde el punto A hasta el punto B.

Esta unidad es fundamental si quieres poder trabajar en el Aprendizaje por Reforzamiento Profundo Q-Learning (Unidad 3).

¡Así que empecemos! 🚀

  • Introducción al Q-Learning
    • ¿Qué es el Q-Learning?
    • El algoritmo Q-Learning
    • Off-policy vs. On-policy
  • Un ejemplo de Q-Learning

Introducción al Q-Learning

¿Qué es el Q-Learning?

El Q-Learning es un método basado en el valor y fuera de política que utiliza un enfoque de Diferencia Temporal para entrenar su función de valor de acción:

  • Fuera de política: hablaremos de eso al final de este capítulo.
  • Método basado en el valor: encuentra la política óptima de manera indirecta entrenando una función de valor o de valor de acción que nos dirá el valor de cada estado o cada par estado-acción.
  • Utiliza un enfoque de Diferencia Temporal: actualiza su función de valor de acción en cada paso en lugar de al final del episodio.

El Q-Learning es el algoritmo que utilizamos para entrenar nuestra Q-Función, una función de valor de acción que determina el valor de estar en un estado particular y tomar una acción específica en ese estado.

Dado un estado y una acción, nuestra Q-Función devuelve un valor de acción de estado (también llamado valor Q)

El Q proviene de “la Calidad” de esa acción en ese estado.

Internamente, nuestra Q-función tiene una tabla Q, una tabla donde cada celda corresponde a un par de valores de acción de estado. Piensa en esta tabla Q como la memoria o chuleta de nuestra Q-función.

Si tomamos este ejemplo de laberinto:

La tabla Q se inicializa. Por eso todos los valores son = 0. Esta tabla contiene, para cada estado, los cuatro valores de acción de estado.

Aquí vemos que el valor de acción de estado del estado inicial yendo hacia arriba es 0:

Por lo tanto, la función Q contiene una tabla Q que tiene el valor de cada par de acción y estado. Y dado un estado y una acción, nuestra función Q buscará en su tabla Q para obtener el valor.

Dado un par de estado y acción, nuestra función Q buscará en su tabla Q para obtener el valor del par estado-acción (el valor Q).

Si recapitulamos, Q-Learning es el algoritmo de RL que:

  • Entrena la función Q (una función valor-acción) que internamente es una tabla Q que contiene todos los valores de los pares estado-acción.
  • Dado un estado y una acción, nuestra función Q buscará en su tabla Q el valor correspondiente.
  • Cuando el entrenamiento haya terminado, tendremos una función Q óptima, lo que significa que tenemos una tabla Q óptima.
  • Y si tenemos una función Q óptima, tenemos una política óptima porque sabemos cuál es la mejor acción a tomar para cada estado.

Pero, al principio, nuestra tabla Q no tiene utilidad ya que da valores arbitrarios para cada par de estado-acción (la mayoría de las veces, inicializamos la tabla Q con valores de 0). Sin embargo, a medida que exploramos el entorno y actualizamos nuestra tabla Q, obtendremos aproximaciones cada vez mejores.

Aquí vemos que con el entrenamiento, nuestra tabla Q mejora ya que gracias a ella podemos conocer el valor de cada par de estado-acción.

Ahora que entendemos qué es Q-Learning, la función Q y la tabla Q, profundicemos en el algoritmo de Q-Learning.

El algoritmo de Q-Learning

Este es el pseudocódigo de Q-Learning; estudiemos cada parte y veamos cómo funciona con un ejemplo sencillo antes de implementarlo. ¡No te intimides, es más sencillo de lo que parece! Repasaremos cada paso.

Paso 1: Inicializamos la tabla Q

Necesitamos inicializar la tabla Q para cada par de estado-acción. La mayoría de las veces, la inicializamos con valores de 0.

Paso 2: Elegir una acción utilizando la Estrategia Epsilon-Greedy

La Estrategia Epsilon-Greedy es una política que maneja el equilibrio entre exploración y explotación.

La idea es que definimos epsilon ɛ = 1.0:

  • Con probabilidad 1 — ɛ: hacemos explotación (es decir, nuestro agente selecciona la acción con el mayor valor de par estado-acción).
  • Con probabilidad ɛ: hacemos exploración (intentando una acción aleatoria).

Al comienzo del entrenamiento, la probabilidad de hacer exploración será alta ya que ɛ es muy alto, por lo que la mayor parte del tiempo exploraremos. Pero a medida que avanza el entrenamiento y, en consecuencia, nuestra tabla Q mejora en sus estimaciones, reducimos progresivamente el valor de epsilon ya que necesitaremos menos exploración y más explotación.

Paso 3: Realizar la acción At, obtener la recompensa Rt+1 y el siguiente estado St+1

Paso 4: Actualizar Q(St, At)

Recuerda que en el Aprendizaje TD, actualizamos nuestra política o función de valor (dependiendo del método de RL que elijamos) después de un paso de interacción.

Para producir nuestro objetivo TD, utilizamos la recompensa inmediata Rt+1 más el valor descontado del siguiente mejor par estado-acción (a esto lo llamamos bootstrap).

Por lo tanto, nuestra fórmula de actualización de Q(St, At) es la siguiente:

Esto significa que para actualizar nuestro Q(St, At):

  • Necesitamos St, At, Rt+1, St+1.
  • Para actualizar nuestro valor Q en un par estado-acción dado, utilizamos el objetivo TD.

¿Cómo formamos el objetivo TD?

  1. Obtenemos la recompensa después de tomar la acción Rt+1.
  2. Para obtener el mejor valor del próximo estado-acción, utilizamos una política voraz para seleccionar la mejor acción siguiente. Ten en cuenta que esta no es una política ε-greedy, siempre tomará la acción con el valor estado-acción más alto.

Luego, cuando se realiza la actualización de este valor Q, comenzamos en un nuevo estado y seleccionamos nuestra acción utilizando nuevamente nuestra política ε-greedy.

Es por eso que decimos que este es un algoritmo off-policy.

Off-policy vs On-policy

La diferencia es sutil:

  • Off-policy: utilizando una política diferente para actuar y actualizar.

Por ejemplo, con Q-Learning, la política ε-greedy (política de actuación) es diferente a la política voraz que se utiliza para seleccionar el mejor valor estado-acción siguiente para actualizar nuestro valor Q (política de actualización).

Política de actuación

Es diferente de la política que utilizamos durante la parte de entrenamiento:

Política de actualización
  • On-policy: utilizando la misma política para actuar y actualizar.

Por ejemplo, con Sarsa, otro algoritmo basado en valores, la Política ε-Greedy selecciona el par estado-acción siguiente, no una política voraz.

Sarsa

Un ejemplo de Q-Learning

Para comprender mejor Q-Learning, veamos un ejemplo sencillo:

  • Eres un ratón en este laberinto diminuto. Siempre comienzas en el mismo punto de inicio.
  • El objetivo es comer la gran pila de queso en la esquina inferior derecha y evitar el veneno. Después de todo, ¿a quién no le gusta el queso?
  • El episodio termina si comemos el veneno, comemos la gran pila de queso o si pasamos más de cinco pasos.
  • La tasa de aprendizaje es 0.1
  • El gamma (tasa de descuento) es 0.99

La función de recompensa es la siguiente:

  • +0: Ir a un estado sin queso.
  • +1: Ir a un estado con un poco de queso.
  • +10: Ir al estado con una gran cantidad de queso.
  • -10: Ir al estado con veneno y, por lo tanto, morir.
  • +0: Si pasamos más de cinco pasos.

Para entrenar a nuestro agente para que tenga una política óptima (es decir, una política que vaya hacia la derecha, derecha, abajo), utilizaremos el algoritmo de Q-Learning.

Paso 1: Inicializamos la tabla Q

Por ahora, nuestra tabla Q no sirve de nada; necesitamos entrenar nuestra función Q utilizando el algoritmo de Q-Learning.

Hagámoslo durante 2 pasos de entrenamiento:

Paso de entrenamiento 1:

Paso 2: Elegir una acción utilizando la estrategia Epsilon Greedy

Dado que epsilon es grande (1.0), elijo una acción al azar, en este caso, voy hacia la derecha.

Paso 3: Realizar la acción At, obtener Rt+1 y St+1

Al ir hacia la derecha, obtengo un poco de queso, por lo tanto, R t + 1 = 1, y estoy en un nuevo estado.

Paso 4: Actualizar Q ( S t , A t )

Ahora podemos actualizar Q ( S t , A t ) utilizando nuestra fórmula.

Paso de entrenamiento 2:

Paso 2: Elegir una acción utilizando la estrategia Epsilon Greedy

Eligo una acción al azar nuevamente, ya que epsilon es grande (0.99) (ya que lo reducimos un poco porque a medida que avanza el entrenamiento, queremos menos exploración).

Tomé la acción hacia abajo. No es una buena acción, ya que me lleva al veneno.

Paso 3: Realizar la acción At, obtener Rt+1 y St+1

Debido a que voy al estado de veneno, obtengo R t + 1 = -10, y muero.

Paso 4: Actualizar Q ( S t , A t )

Como estamos muertos, comenzamos un nuevo episodio. Pero lo que vemos aquí es que con dos pasos de exploración, mi agente se volvió más inteligente.

A medida que continuamos explorando y explotando el entorno y actualizando los valores de Q utilizando el objetivo de TD, la tabla Q nos dará aproximaciones cada vez mejores. Y así, al final del entrenamiento, obtendremos una estimación de la función Q óptima.


Ahora que hemos estudiado la teoría del Q-Learning, vamos a implementarlo desde cero. Un agente de Q-Learning que entrenaremos en dos entornos:

  1. Frozen-Lake-v1 ❄️ (versión no resbaladiza): donde nuestro agente deberá ir desde el estado inicial (S) hasta el estado objetivo (G) caminando solo sobre baldosas congeladas (F) y evitando los agujeros (H).
  2. Un taxi autónomo 🚕 deberá aprender a navegar por una ciudad para transportar a sus pasajeros desde el punto A hasta el punto B.

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

La tabla de clasificación 👉 https://huggingface.co/spaces/chrisjay/Deep-Reinforcement-Learning-Leaderboard


¡Felicidades por terminar este capítulo! Hubo mucha información. Y felicidades por terminar los tutoriales. Acabas de implementar tu primer agente de RL desde cero y compartirlo en el Hub 🥳.

Implementar desde cero cuando estudias una nueva arquitectura es importante para comprender cómo funciona.

Es normal si aún te sientes confundido 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.

Y dado que la mejor manera de aprender y evitar la ilusión de competencia es ponerte a prueba. Hemos creado un cuestionario para ayudarte a descubrir dónde necesitas reforzar tu estudio. Comprueba tus conocimientos aquí 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit2/quiz2.md

Es esencial dominar estos elementos y tener bases sólidas antes de entrar a la parte divertida. ¡No dudes en modificar la implementación, probar formas de mejorarla y cambiar los entornos, la mejor manera de aprender es intentarlo por ti mismo/a!

Hemos publicado lecturas adicionales en el programa de estudios si deseas profundizar 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit2/README.md

En la próxima unidad, vamos a aprender sobre el Deep-Q-Learning.

¡Y no olvides compartirlo con tus amigos que quieran aprender 🤗!

Por último, 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 impresionante,

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

Aprendizaje Automático

Anunciando mejoras en la extracción de tablas con Amazon Textract

Amazon Textract es un servicio de aprendizaje automático (ML) que extrae automáticamente texto, escritura a mano y da...

Inteligencia Artificial

Financiamiento en Startups de IA Edición Sept-1 ConverSight, Voxel, AI21 y Gesund

En el paisaje en constante evolución de la tecnología, la Inteligencia Artificial (IA) se erige como una frontera mon...

Inteligencia Artificial

Google AI propone PixelLLM un modelo de visión y lenguaje capaz de localización de gran precisión y alineación de visión y lenguaje.

Los Modelos de Lenguaje Grande (LLMs) han utilizado con éxito el poder de los subcampos de Inteligencia Artificial (I...

Inteligencia Artificial

Construye una solución centralizada de monitoreo e informes para Amazon SageMaker utilizando Amazon CloudWatch

En esta publicación, presentamos un panel de observabilidad intercuentas que proporciona una vista centralizada para ...

Inteligencia Artificial

15+ Herramientas de IA para Desarrolladores (Septiembre 2023)

GitHub Copilot GitHub Copilot se presenta como un asistente de codificación con inteligencia artificial líder en el m...