Una introducción a Q-Learning Parte 1

Introducción a Q-Learning Parte 1

Unidad 2, parte 1 del curso de Aprendizaje por Reforzamiento Profundo con Hugging Face 🤗

⚠️ Una versión actualizada de este artículo está 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í.


⚠️ Una versión actualizada de este artículo está 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í.

En el primer capítulo de este curso, aprendimos sobre el Aprendizaje por Reforzamiento (RL), el proceso de RL y los diferentes métodos para resolver un problema de RL. También entrenamos a nuestro primer agente lunar para aterrizar correctamente en la Luna 🌕 y lo subimos al Hugging Face Hub.

Así que hoy, vamos a profundizar en uno de los métodos de Aprendizaje por Reforzamiento: los métodos basados en valores y estudiar nuestro primer algoritmo de RL: Q-Learning.

También implementaremos nuestro primer agente de RL desde cero: un agente de Q-Learning y lo 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 agujeros (H).
  2. Un taxi autónomo necesitará aprender a navegar por una ciudad para transportar a sus pasajeros desde el punto A hasta el punto B.

Esta unidad se divide en 2 partes:

En la primera parte, aprenderemos sobre los métodos basados en valores y la diferencia entre Monte Carlo y Temporal Difference Learning.

Y en la segunda parte, estudiaremos nuestro primer algoritmo de RL: Q-Learning, e implementaremos nuestro primer agente de RL.

Esta unidad es fundamental si deseas poder trabajar en Aprendizaje Profundo con Q-Learning (unidad 3): el primer algoritmo de RL profundo que pudo jugar juegos de Atari y superar el nivel humano en algunos de ellos (breakout, space invaders…).

¡Así que empecemos!

  • ¿Qué es RL? Un breve resumen
  • Los dos tipos de métodos basados en valores
    • La función de Valor de Estado
    • La función de Valor de Acción
  • La Ecuación de Bellman: simplificar nuestra estimación de valores
  • Aprendizaje de Monte Carlo vs Aprendizaje de Diferencia Temporal
    • Monte Carlo: aprendizaje al final del episodio
    • Aprendizaje de Diferencia Temporal: aprendizaje en cada paso

¿Qué es RL? Un breve resumen

En RL, construimos un agente que puede tomar decisiones inteligentes. Por ejemplo, un agente que aprende a jugar un videojuego. O un agente de trading que aprende a maximizar sus beneficios tomando decisiones inteligentes sobre qué acciones comprar y cuándo vender.

Pero, para tomar decisiones inteligentes, nuestro agente aprenderá del entorno al interactuar con él a través de prueba y error y recibir recompensas (positivas o negativas) como retroalimentación única.

Su objetivo es maximizar su recompensa acumulada esperada (debido a la hipótesis de la recompensa).

El proceso de toma de decisiones del agente se llama la política π: dado un estado, una política producirá una acción o una distribución de probabilidades sobre las acciones. Es decir, dado una observación del entorno, una política proporcionará una acción (o múltiples probabilidades para cada acción) que el agente debe tomar.

Nuestro objetivo es encontrar una política óptima π *, es decir, una política que conduzca a la mejor recompensa acumulada esperada.

Y para encontrar esta política óptima (y por lo tanto resolver el problema de RL), existen dos tipos principales de métodos de RL:

  • Métodos basados en políticas : Entrenar directamente la política para aprender qué acción tomar dado un estado.
  • Métodos basados en valores : Entrenar una función de valor para aprender qué estado es más valioso y utilizar esta función de valor para tomar la acción que lo lleva.

Y en este capítulo, nos adentraremos más en los métodos basados en valores.

Los dos tipos de métodos basados en valores

En los métodos basados en valores, aprendemos una función de valor que asocia un estado con el valor esperado de estar en ese estado.

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

Si olvidaste qué es el descuento, puedes leer esta sección .

Pero, ¿qué significa actuar según nuestra política? Después de todo, no tenemos una política en los métodos basados en valores, ya que entrenamos una función de valor y no una política.

Recuerda que el objetivo de un agente de RL es tener una política óptima π.

Para encontrarla, aprendimos que existen dos métodos diferentes:

  • Métodos basados en políticas: Entrenar directamente la política para seleccionar qué acción tomar dado un estado (o una distribución de probabilidad sobre las acciones en ese estado). En este caso, no tenemos una función de valor.

La política toma un estado como entrada y devuelve qué acción tomar en ese estado (política determinista).

Y en consecuencia, no definimos manualmente el comportamiento de nuestra política; es el entrenamiento el que lo definirá.

  • Métodos basados en valores: Indirectamente, mediante el entrenamiento de una función de valor que devuelve el valor de un estado o de un par estado-acción. Dada esta función de valor, nuestra política tomará acción.

Pero, como no entrenamos nuestra política, necesitamos especificar su comportamiento. Por ejemplo, si queremos una política que, dada la función de valor, tome acciones que siempre conduzcan a la mayor recompensa, crearemos una Política Avara.

Dado un estado, nuestra función de valor de acción (que entrenamos) devuelve el valor de cada acción en ese estado, luego nuestra política avara (que definimos) selecciona la acción con el mayor valor de par estado-acción.

En consecuencia, cualquier método que utilices para resolver tu problema, tendrás una política, pero en el caso de los métodos basados en valores no la entrenas, tu política es solo una función simple que especificas (por ejemplo, política avara) y esta política utiliza los valores dados por la función de valor para seleccionar sus acciones.

Entonces, la diferencia es:

  • En los métodos basados en políticas, la política óptima se encuentra entrenando la política directamente.
  • En los métodos basados en valores, encontrar una función de valor óptima conduce a tener una política óptima.

De hecho, la mayor parte del tiempo, en los métodos basados en valores, utilizarás una Política Epsilon-Avara que maneja el equilibrio entre exploración y explotación; hablaremos de ello cuando hablemos de Q-Learning en la segunda parte de esta unidad.

Entonces, tenemos dos tipos de funciones basadas en el valor:

La función de valor de estado

Escribimos la función de valor de estado según una política π de la siguiente manera:

Para cada estado, la función de valor de estado devuelve el retorno esperado si el agente comienza en ese estado, y luego sigue la política para siempre (para todos los pasos futuros si así lo prefieres).

Si tomamos el estado con valor -7: es el retorno esperado comenzando en ese estado y tomando acciones según nuestra política (política codiciosa), entonces derecha, derecha, derecha, abajo, abajo, derecha, derecha.

La función de valor de acción

En la función de valor de acción, para cada par estado-acción, la función de valor de acción devuelve el retorno esperado si el agente comienza en ese estado y realiza la acción, y luego sigue la política para siempre después.

El valor de tomar la acción a en el estado s bajo una política π es:

Vemos que la diferencia es:

  • En la función de valor de estado, calculamos el valor de un estado S t S_t S t ​
  • En la función de valor de acción, calculamos el valor del par estado-acción ( S t , A t S_t, A_t S t ​ , A t ​ ) y, por lo tanto, el valor de tomar esa acción en ese estado.
Nota: No llenamos todos los pares estado-acción para el ejemplo de la función de valor de acción

En cualquier caso, sea cual sea la función de valor que elijamos (función de valor de estado o función de valor de acción), el valor es el retorno esperado.

Sin embargo, el problema es que esto implica que para calcular CADA valor de un estado o un par estado-acción, necesitamos sumar todas las recompensas que un agente puede obtener si comienza en ese estado.

Esto puede ser un proceso tedioso, y ahí es donde la ecuación de Bellman nos ayuda.

La ecuación de Bellman: simplificar nuestra estimación de valor

La ecuación de Bellman simplifica nuestro cálculo de valor de estado o valor de estado-acción.

Con lo que hemos aprendido hasta ahora, sabemos que si calculamos V ( S t ) V(S_t) V ( S t ​ ) (valor de un estado), necesitamos calcular el retorno comenzando en ese estado y luego seguir la política para siempre después. (Nuestra política que definimos en el siguiente ejemplo es una Política Codiciosa, y para simplificar, no descontamos la recompensa).

Entonces, para calcular V ( S t ) V(S_t) V ( S t ​ ) , necesitamos hacer la suma de las recompensas esperadas. Por lo tanto:

Para calcular el valor del Estado 1: la suma de las recompensas si el agente comenzó en ese estado y luego siguió la política codiciosa (tomando acciones que conducen a los mejores valores de los estados) para todos los pasos de tiempo.

Luego, para calcular V ( S t + 1 ) V(S_{t+1}) V ( S t + 1 ​ ) , necesitamos calcular el retorno comenzando en ese estado S t + 1 S_{t+1} S t + 1 ​ .

Para calcular el valor del Estado 2: la suma de recompensas si el agente comenzó en ese estado y luego siguió la política durante todos los pasos de tiempo.

Como puedes ver, ese es un proceso bastante tedioso si necesitas hacerlo para cada valor de estado o valor de estado-acción.

En lugar de calcular el retorno esperado para cada estado o cada par estado-acción, podemos usar la ecuación de Bellman.

La ecuación de Bellman es una ecuación recursiva que funciona de la siguiente manera: en lugar de comenzar para cada estado desde el principio y calcular el retorno, podemos considerar el valor de cualquier estado como:

La recompensa inmediata R t + 1 R_{t+1} R t + 1 ​ + el valor descontado del estado siguiente ( g a m m a ∗ V ( S t + 1 ) ).

Para simplificar aquí no descontamos, por lo que gamma = 1.

Si volvemos a nuestro ejemplo, el valor del Estado 1 = retorno acumulativo esperado si comenzamos en ese estado.

Para calcular el valor del Estado 1: la suma de recompensas si el agente comenzó en ese estado 1 y luego siguió la política durante todos los pasos de tiempo.

Lo cual es equivalente a V ( S t ) = recompensa inmediata R t + 1 R_{t+1} R t + 1 ​ + valor descontado del estado siguiente ( g a m m a ∗ V ( S t + 1 ) ).

Para simplificar, aquí no descontamos, por lo que gamma = 1.

  • El valor de V ( S t + 1 ) = recompensa inmediata R t + 2 R_{t+2} R t + 2 ​ + valor descontado del estado siguiente ( g a m m a ∗ V ( S t + 2 ) ).
  • Y así sucesivamente.

Para resumir, la idea de la ecuación de Bellman es que en lugar de calcular cada valor como la suma del retorno esperado, lo cual es un proceso largo. Esto es equivalente a la suma de la recompensa inmediata + el valor descontado del estado siguiente.

Aprendizaje Monte Carlo vs Aprendizaje de Diferencia Temporal

Lo último de lo que necesitamos hablar antes de adentrarnos en el Aprendizaje Q es las dos formas de aprendizaje.

Recuerda que un agente de RL aprende interactuando con su entorno. La idea es que usando la experiencia obtenida, dada la recompensa que obtiene, actualizará su valor o su política.

Aprendizaje Monte Carlo y Aprendizaje de Diferencia Temporal son dos estrategias diferentes en cómo entrenar nuestra función de valor o nuestra función de política. Ambos utilizan la experiencia para resolver el problema de RL.

Por un lado, Monte Carlo utiliza un episodio completo de experiencia antes de aprender. Por otro lado, Diferencia Temporal utiliza solo un paso ( S t , A t , R t + 1 , S t + 1 ) para aprender.

Explicaremos ambos usando un ejemplo de método basado en valores.

Monte Carlo: aprendizaje al final del episodio

Monte Carlo espera hasta el final del episodio, calcula G t (retorno) y lo usa como un objetivo para actualizar V ( S t ).

Por lo tanto, requiere un episodio completo de interacción antes de actualizar nuestra función de valor.

Tomemos un ejemplo:

  • Siempre comenzamos el episodio en el mismo punto de partida.

  • El agente toma acciones utilizando la política. Por ejemplo, utilizando una estrategia Epsilon Greedy, una política que alterna entre exploración (acciones aleatorias) y explotación.

  • Obtenemos la recompensa y el siguiente estado.

  • Terminamos el episodio si el gato se come al ratón o si el ratón se mueve > 10 pasos.

  • Al final del episodio, tenemos una lista de Estados, Acciones, Recompensas y Estados Siguientes.

  • El agente sumará las recompensas totales G t (para ver qué tan bien lo hizo).

  • Luego actualizará V ( s t ) basado en la fórmula

  • Luego comenzará un nuevo juego con este nuevo conocimiento

Ejecutando más y más episodios, el agente aprenderá a jugar mejor y mejor.

Por ejemplo, si entrenamos una función de valor de estado utilizando Monte Carlo:

  • Recién comenzamos a entrenar nuestra función de valor, por lo que devuelve un valor de 0 para cada estado
  • Nuestra tasa de aprendizaje (lr) es 0.1 y nuestra tasa de descuento es 1 (= sin descuento)
  • Nuestro ratón explora el entorno y toma acciones aleatorias

  • El ratón dio más de 10 pasos, por lo que el episodio termina.

  • Tenemos una lista de estado, acción, recompensas, estado_siguiente, necesitamos calcular el retorno G t
  • G t = R t + 1 + R t + 2 + R t + 3 …
  • G t = 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 0
  • G t = 3
  • Ahora podemos actualizar V ( S 0 ):

  • Nuevo V ( S 0 ) = V ( S 0 ) + l r ∗ [ G t — V ( S 0 ) ] V(S_0) = V(S_0) + lr * [G_t — V(S_0)] V ( S 0 ​ ) = V ( S 0 ​ ) + l r ∗ [ G t ​ — V ( S 0 ​ ) ]
  • Nuevo V ( S 0 ) = 0 + 0.1 ∗ [ 3 – 0 ] V(S_0) = 0 + 0.1 * [3 – 0] V ( S 0 ​ ) = 0 + 0 . 1 ∗ [ 3 – 0 ]
  • Nuevo V ( S 0 ) = 0.3 V(S_0) = 0.3 V ( S 0 ​ ) = 0 . 3

Aprendizaje de diferencia temporal: aprendiendo en cada paso

  • Por otro lado, la diferencia temporal espera solo una interacción (un paso) S t + 1 S_{t+1} S t + 1 ​
  • para formar un objetivo de TD y actualizar V ( S t ) V(S_t) V ( S t ​ ) usando R t + 1 R_{t+1} R t + 1 ​ y g a m m a ∗ V ( S t + 1 ) gamma * V(S_{t+1}) g a m m a ∗ V ( S t + 1 ​ ) .

La idea con TD es actualizar la V ( S t ) V(S_t) V ( S t ​ ) en cada paso.

Pero debido a que no jugamos durante un episodio completo, no tenemos G t G_t G t ​ (retorno esperado). En su lugar, estimamos G t G_t G t ​ agregando R t + 1 R_{t+1} R t + 1 ​ y el valor descontado del próximo estado.

Esto se llama bootstrapping. Se llama así porque TD basa su parte de actualización en una estimación existente V ( S t + 1 ) V(S_{t+1}) V ( S t + 1 ​ ) y no una muestra completa G t G_t G t ​ .

Este método se llama TD(0) o TD de un solo paso (actualiza la función de valor después de cada paso individual).

Si tomamos el mismo ejemplo,

  • Recién comenzamos a entrenar nuestra función de Valor, por lo que devuelve un valor de 0 para cada estado.
  • Nuestra tasa de aprendizaje (lr) es 0.1 y nuestra tasa de descuento es 1 (sin descuento).
  • Nuestro ratón explora el entorno y realiza una acción aleatoria: ir hacia la izquierda
  • Recibe una recompensa R t + 1 = 1 R_{t+1} = 1 R t + 1 ​ = 1 ya que come un pedazo de queso

Ahora podemos actualizar V ( S 0 ) V(S_0) V ( S 0 ​ ) :

Nuevo V ( S 0 ) = V ( S 0 ) + l r ∗ [ R 1 + g a m m a ∗ V ( S 1 ) − V ( S 0 ) ] V(S_0) = V(S_0) + lr * [R_1 + gamma * V(S_1) – V(S_0)] V ( S 0 ​ ) = V ( S 0 ​ ) + l r ∗ [ R 1 ​ + g a m m a ∗ V ( S 1 ​ ) − V ( S 0 ​ ) ]

Nuevo V(S0) = 0 + 0.1 * [1 + 1 * 0–0]

Nuevo V(S0) = 0.1

Entonces acabamos de actualizar nuestra función de valor para el Estado 0.

Ahora continuamos interactuando con este entorno con nuestra función de valor actualizada.

Si resumimos:

  • Con Monte Carlo, actualizamos la función de valor a partir de un episodio completo, por lo que utilizamos el retorno descontado real y preciso de este episodio.
  • Con TD learning, actualizamos la función de valor a partir de un paso, por lo que reemplazamos G t que no tenemos con un retorno estimado llamado objetivo TD.

Entonces, antes de adentrarnos en Q-Learning, resumamos lo que acabamos de aprender:

Tenemos dos tipos de funciones basadas en el valor:

  • Función de valor del estado: devuelve el retorno esperado si el agente comienza en un estado dado y actúa de acuerdo con la política para siempre después.
  • Función de valor de la acción: devuelve el retorno esperado si el agente comienza en un estado dado, realiza una acción dada en ese estado y luego actúa de acuerdo con la política para siempre después.
  • En los métodos basados en el valor, definimos la política manualmente porque no la entrenamos, entrenamos una función de valor. La idea es que si tenemos una función de valor óptima, tendremos una política óptima.

Hay dos tipos de métodos para aprender una política para una función de valor:

  • Con el método de Monte Carlo, actualizamos la función de valor a partir de un episodio completo, por lo que utilizamos el retorno descontado real y preciso de este episodio.
  • Con el método TD Learning, actualizamos la función de valor a partir de un paso, por lo que reemplazamos Gt que no tenemos con un retorno estimado llamado objetivo TD.


Así que eso es todo por hoy. ¡Felicidades por terminar esta primera parte del capítulo! Había mucha información.

Es normal que aún te sientas confundido con todos estos elementos. Esto fue lo mismo para mí y para 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 escrito un cuestionario para ayudarte a identificar dónde necesitas reforzar tu estudio. Verifica tus conocimientos aquí 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit2/quiz1.md

En la segunda parte, estudiaremos nuestro primer algoritmo de RL: Q-Learning, e implementaremos nuestro primer agente de RL en dos entornos:

  1. Frozen-Lake-v1 (versión sin deslizamiento): donde nuestro agente deberá 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 deberá aprender a navegar por una ciudad para transportar a sus pasajeros desde el punto A hasta el punto B.

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

Finalmente, queremos mejorar y actualizar el curso de forma 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

Ciencias de la Computación

Prodigio de preadolescencia se gradúa de la Universidad de Santa Clara.

Kairan Quazif, de 14 años, es la persona más joven en graduarse de la Universidad de Santa Clara en California, habie...

Inteligencia Artificial

Conoce a Baichuan 2 Una serie de modelos de lenguaje multilingües a gran escala que contienen 7B y 13B de parámetros, entrenados desde cero, con 2.6T tokens.

Los modelos de lenguaje grandes han experimentado avances significativos y alentadores en los últimos años. Los model...

Inteligencia Artificial

La GPU NVIDIA H100 Tensor Core utilizada en la nueva serie de máquinas virtuales de Microsoft Azure ya está disponible de forma general

Los usuarios de Microsoft Azure ahora pueden recurrir a la última tecnología de computación acelerada de NVIDIA para ...

Inteligencia Artificial

ChatGPT se adentra en el lado robótico la última maravilla mecánica de Boston Dynamics ahora responde verbalmente

En un desarrollo innovador, la empresa de ingeniería Boston Dynamics ha integrado ChatGPT, un sofisticado modelo de l...

Noticias de Inteligencia Artificial

Enfoque de OpenAI hacia la seguridad en la inteligencia artificial.

¿Qué pasará con los enfoques de seguridad en los sistemas de IA después de que el CEO de OpenAI, Sam Altman, testific...

Inteligencia Artificial

Descifrando el código del contexto Técnicas de vectorización de palabras en PNL

Te mudaste a una nueva ciudad lejos de tu país, donde casualmente te encontraste con alguien en una cafetería. Una jo...