Introducción a Q-Learning: aprendizaje por refuerzo

Este artículo es la segunda parte de mi serie "Aprendizaje por refuerzo profundo". La serie completa estará disponible tanto en Medium como en videos en mi canal de YouTube.

En la primera parte de la serie aprendimos los conceptos básicos del aprendizaje por refuerzo .

Q-learning es un algoritmo de aprendizaje basado en valores en el aprendizaje por refuerzo. En este artículo, aprendemos sobre Q-Learning y sus detalles:

  • ¿Qué es Q-Learning?
  • Matemáticas detrás de Q-Learning
  • Implementación usando python

Q-Learning: una descripción general simplista

Digamos que un robot tiene que cruzar un laberinto y llegar al punto final. Hay minas y el robot solo puede mover una ficha a la vez. Si el robot pisa una mina, el robot está muerto. El robot debe llegar al punto final en el menor tiempo posible.

El sistema de puntuación / recompensa es el siguiente:

  1. El robot pierde 1 punto en cada paso. Esto se hace para que el robot tome el camino más corto y alcance la meta lo más rápido posible.
  2. Si el robot pisa una mina, la pérdida de puntos es 100 y el juego termina.
  3. Si el robot obtiene energía ⚡️, gana 1 punto.
  4. Si el robot alcanza el objetivo final, el robot obtiene 100 puntos.

Ahora, la pregunta obvia es: ¿Cómo entrenamos a un robot para que alcance la meta final con el camino más corto sin pisar una mina?

Entonces, ¿cómo resolvemos esto?

Presentamos la Q-Table

Q-Table es solo un nombre elegante para una tabla de búsqueda simple donde calculamos las recompensas futuras máximas esperadas por acción en cada estado. Básicamente, esta tabla nos guiará hacia la mejor acción en cada estado.

Habrá cuatro números de acciones en cada mosaico sin borde. Cuando un robot está en un estado, puede moverse hacia arriba o hacia abajo, hacia la derecha o hacia la izquierda.

Entonces, modelemos este entorno en nuestra Q-Table.

En la Q-Table, las columnas son las acciones y las filas son los estados.

Cada puntuación de Q-table será la recompensa futura máxima esperada que obtendrá el robot si realiza esa acción en ese estado. Este es un proceso iterativo, ya que necesitamos mejorar la Q-Table en cada iteración.

Pero las preguntas son:

  • ¿Cómo calculamos los valores de la tabla Q?
  • ¿Los valores están disponibles o predefinidos?

Para conocer cada valor de la tabla Q, utilizamos el algoritmo Q-Learning.

Matemáticas: el algoritmo Q-Learning

Función Q

La función Q usa la ecuación de Bellman y toma dos entradas: estado ( s ) y acción ( a ).

Usando la función anterior, obtenemos los valores de Q para las celdas de la tabla.

Cuando comenzamos, todos los valores de la tabla Q son ceros.

Hay un proceso iterativo de actualización de valores. A medida que comenzamos a explorar el entorno , la función Q nos da cada vez mejores aproximaciones al actualizar continuamente los valores Q en la tabla.

Ahora, entendamos cómo se realiza la actualización.

Presentamos el proceso del algoritmo Q-learning

Cada uno de los cuadros de colores es un paso. Entendamos cada uno de estos pasos en detalle.

Paso 1: inicialice la Q-Table

Primero construiremos una Q-table. Hay n columnas, donde n = número de acciones. Hay m filas, donde m = número de estados. Inicializaremos los valores en 0.

En nuestro ejemplo de robot, tenemos cuatro acciones (a = 4) y cinco estados (s = 5). Entonces construiremos una tabla con cuatro columnas y cinco filas.

Pasos 2 y 3: elige y realiza una acción

Esta combinación de pasos se realiza durante un período de tiempo indefinido. Esto significa que este paso se ejecuta hasta el momento en que detengamos el entrenamiento o el ciclo de entrenamiento se detenga como se define en el código.

Elegiremos una acción (a) en el (los) estado (s) según la Q-Table. Pero, como se mencionó anteriormente, cuando el episodio comienza inicialmente, cada valor Q es 0.

Así que ahora entra en juego el concepto de compensación de exploración y explotación. Este artículo tiene más detalles.

Usaremos algo llamado estrategia épsilon codiciosa .

Al principio, las tasas de épsilon serán más altas. El robot explorará el entorno y elegirá acciones al azar. La lógica detrás de esto es que el robot no sabe nada sobre el medio ambiente.

A medida que el robot explora el entorno, la tasa de épsilon disminuye y el robot comienza a explotar el entorno.

Durante el proceso de exploración, el robot adquiere progresivamente más confianza en la estimación de los valores Q.

Para el ejemplo del robot, hay cuatro acciones para elegir : arriba, abajo, izquierda y derecha.Estamos comenzando la capacitación ahora: nuestro robot no sabe nada sobre el medio ambiente. Entonces el robot elige una acción aleatoria, digamos bien.

Ahora podemos actualizar los valores Q para estar al principio y moverse hacia la derecha usando la ecuación de Bellman.

Pasos 4 y 5: evaluar

Ahora hemos realizado una acción y hemos observado un resultado y una recompensa. Necesitamos actualizar la función Q (s, a).

En el caso del juego de robots, reiterar la estructura de puntuación / recompensa es:

  • poder = +1
  • mía = -100
  • final = +100

Repetiremos esto una y otra vez hasta que se detenga el aprendizaje. De esta forma se actualizará la Q-Table.

Implementación de Python de Q-Learning

El concepto y la implementación del código se explican en mi video.

Suscríbase a mi canal de YouTube Para más videos de IA: ADL .

Por fin ... recapitulemos

  • Q-Learning es un algoritmo de aprendizaje reforzado basado en valores que se utiliza para encontrar la política de selección de acciones óptima utilizando una función Q.
  • Nuestro objetivo es maximizar la función de valor Q.
  • La tabla Q nos ayuda a encontrar la mejor acción para cada estado.
  • Ayuda a maximizar la recompensa esperada seleccionando la mejor de todas las acciones posibles.
  • Q (estado, acción) devuelve la recompensa futura esperada de esa acción en ese estado.
  • Esta función se puede estimar utilizando Q-Learning, que actualiza de forma iterativa Q (s, a) utilizando la ecuación de Bellman.
  • Inicialmente exploramos el entorno y actualizamos la Q-Table. Cuando la Q-Table esté lista, el agente comenzará a explotar el entorno y comenzará a tomar mejores acciones.

La próxima vez trabajaremos en un ejemplo profundo de Q-learning .

Hasta entonces, ¿disfrutar de la IA ?.

Importante : como se indicó anteriormente, este artículo es la segunda parte de mi serie "Aprendizaje por refuerzo profundo". La serie completa estará disponible tanto en artículos en Medium como en videos en mi canal de YouTube.

Si le gustó mi artículo, haga clic en? para ayudarme a mantener la motivación para escribir artículos. Sígueme en M edium y otras redes sociales:

Si tiene alguna pregunta, hágamelo saber en un comentario a continuación o en Twitter .

Suscríbete a mi canal de YouTube para ver más videos de tecnología.