Aprendizaje por Refuerzo, el otro tipo de Machine Learning

0
aprendizaje por refuerzo

Una breve introducción al aprendizaje por refuerzo

Este es el primero de una serie de artículos sobre aprendizaje por refuerzo y OpenAI Gym.

Introducción

Supongamos que re jugando un videojuego. Entras en una habitación con dos puertas. Detrás de la puerta 1 hay 100 monedas de oro, seguidas por un pasaje. Detrás de la puerta 2 hay 1 moneda de oro, seguida de un segundo pasaje en una dirección diferente. Una vez que pasas por una de las puertas, no hay vuelta atrás. ¿Cuál de las puertas debería elegir?

Si tomó su decisión basándose únicamente en maximizar su recompensa inmediata (o puntaje), entonces su respuesta sería la Puerta 1. Sin embargo, el objetivo de la mayoría de los videojuegos no es maximizar su puntaje en una sola sección del juego, sino para maximizar su puntuación para todo el juego.

Después de todo, podría haber 1000 monedas de oro al final del pasillo detrás de la Puerta 2. Todo lo que saben.

La única forma de responder realmente a esta pregunta es jugar el juego varias veces; intente una puerta diferente cada vez; y luego, en función de la información que haya recopilado, determine su estrategia óptima.

El escenario que acabo de describir es un ejemplo clásico de aprendizaje por refuerzo, el tipo de Machine Learning “otro” que a menudo se pasa por alto. En este post, lo guiaré a través de las características básicas de aprendizaje por refuerzo e introduciré Q-learning, el algoritmo fundamental de aprendizaje por refuerzo.

¿Qué es el aprendizaje por refuerzo?

El aprendizaje por refuerzo, junto con el aprendizaje supervisado y el aprendizaje no supervisado, es uno de los tres tipos básicos de Machine Learning.

En el aprendizaje supervisado, se te da un conjunto de datos etiquetado y el objetivo es utilizar ese conjunto de datos para determinar una regla general que te permita etiquetar cualquier nuevo punto de datos que puedas encontrar.

Por ejemplo, al usar un dataset o conjunto de datos de imágenes de mascotas etiquetadas, creará un modelo que le permitirá etiquetar cualquier imagen nueva de mascotas que pueda encontrar:

aprendizaje por refuerzo - Conjunto de datos de imágenes de mascotas etiquetadas.
Conjunto de datos de imágenes de mascotas etiquetadas.

 

En el aprendizaje no supervisado, se le entregan datasets sin etiquetar y el objetivo es para sacar conclusiones sobre la estructura subyacente de los datos, simplemente examinando las relaciones que existen entre los puntos de datos.

Por ejemplo, identificando grupos de imágenes de aspecto similar en los dígitos escritos a mano del MNIST:

aprendizaje por refuerzo - dígitos escritos a mano

Sin embargo, en el aprendizaje por refuerzo, en lugar de presentar un conjunto de datos por adelantado. Normalmente se te presenta un “entorno” inicialmente desconocido (como un laberinto, la bolsa de valores de EEUU o incluso el mundo real) y debe recopilar datos hablando de acciones en ese entorno (por ejemplo, elegir cuál de las dos puertas atravesar en un videojuego) y observar las consecuencias.

Los tipos de problemas a los que se aplica aprendizaje por refuerzo se denominan “secuenciales problemas de decisión” y el objetivo final es determinar la secuencia óptima de acciones que maximizarán su ganancia a largo plazo.

El hecho de que el entorno sea inicialmente desconocido es importante, porque si el entorno fuera totalmente conocido, entonces no lo haría”. t debe interactuar con él para recopilar información al respecto.

Las características clave de los problemas de aprendizaje por refuerzo son entonces:

  • Un entorno inicialmente desconocido : debe explorar el entorno en orden t o obtener información al respecto;
  • Retroalimentación retrasada : después de tomar una acción, puede tomar algún tiempo darse cuenta de las consecuencias a largo plazo de esa acción; y
  • Toma de decisiones secuencial : la recompensa general recibida suele ser el resultado de una secuencia de acciones múltiples en lugar de una acción independiente.

Se ha realizado mucha investigación en el desarrollo de algoritmos para resolver problemas de aprendizaje por refuerzo. Uno de los más conocidos es Q-learning.

Q-Learning

Los algoritmos de aprendizaje por refuerzo vienen en dos variedades: “basado en modelo” y “sin modelo”.

Con aprendizaje por refuerzo “basado en modelo” , determinamos el curso de acción óptimo (también conocido como la política óptima) utilizando un modelo predeterminado de nuestro entorno (que puede o no ser exacto). Mientras que con aprendizaje por refuerzo “sin modelo”, nuestro objetivo es determinar la política óptima mediante la interacción con el entorno.

Los algoritmos de aprendizaje por refuerzo sin modelo pueden, a su vez, dividirse en dos tipos: “dentro de la política” y “fuera de la política”. En relación con la forma en que interactuamos con el entorno para recopilar información al respecto.

Con los algoritmos de “política”, tomamos decisiones sobre nuestras acciones basadas en nuestra “mejor” política en el momento de tomar la decisión y luego usamos la información recopilada de esa acción para mejorar la mejor política.

Con algoritmos “fuera de política”, por otro lado, nuestro comportamiento en i interactuar con (o explorar) el entorno puede no estar relacionado con lo que creemos que es el mejor óptimo en el momento de tomar la acción.

Por ejemplo, podemos elegir deliberadamente tomar una acción que sabemos que es subóptima en el corto plazo para determinar si resulta en una mayor recompensa a largo plazo.

Q-Learning es un algoritmo de aprendizaje por refuerzo “sin modelo, sin política”.

Q-learning funciona mediante la construcción de un tabla de valores Q, Q(s, a), que representa la recompensa esperada (a largo plazo) descontada de tomar acción a en el estado del entorno s y luego mejorar iterativamente en esta tabla mediante interactuando con el entorno hasta que se encuentre la tabla Q óptima.

Inicialmente, todos los valores en la tabla Q se establecen iguales a pequeños números aleatorios (con la excepción de los valores Q (s, a) para los estados terminales, que son iguales a 0).

Cada vez que se realiza una acción en el entorno, un (estado, acción, recompensa, nuevo estado) Se produce la tupla. Esto representa el estado del medio ambiente inmediatamente anterior a la acción, s la acción tomada en ese estado, a la recompensa inmediata recibida después de esa acción r y el nuevo estado del entorno después de la acción, s ‘.

Estas tuplas (estado, acción, recompensa, nuevo estado) se utilizan para actualizar iterativamente los valores en la tabla Q.

Donde el valor Q (s, a) actualizado, denotado como Q'(s, a), se establece igual al promedio ponderado del valor Q (s, a) antiguo y al valor Q implícito en la nueva observación.

Es decir, la suma de (i) la recompensa inmediata y (ii) la recompensa con descuento esperada recibida a partir del nuevo estado. Asumiendo que siempre elige la acción óptima.

Esto se puede expresar mediante la siguiente regla de actualización:

Q'(s, a) = (1 - w) * Q(s, a) + w * (r+d * Q(s',argmax a': Q(s', a')))

Donde:

  • w es el peso aplicado a la nueva información (también conocida como tasa de aprendizaje); y
  • d es la tasa de descuento, que permite el hecho de que $ 1 recibido ahora es más valioso que $ 1 recibido en el futuro.

Una vez que se encuentra la tabla Q óptima, la acción óptima en un estado dado es la acción lo que maximiza Q (s, a) para ese estado (es decir, argmax a: Q (s, a)).

El rendimiento de este algoritmo depende de la elección de la estrategia de exploración utilizada para interactuar con el entorno. Si nunca visite un estado particular del medio ambiente o tome una acción particular en ese estado. Entonces nunca sabrá las consecuencias de tomar esa acción en ese estado.

Sin embargo, no solo queremos moverse al azar a través de nuestro medio ambiente tampoco. Idealmente, una vez que hayamos recopilado información sobre nuestro entorno. Nos gustaría aprovechar esta información al centrar nuestra exploración futura en los estados y las acciones que creemos que resultarán en la mayor recompensa. Una forma de hacerlo es usar la estrategia codiciosa de épsilon.

Bajo la estrategia codiciosa de épsilon, en un estado dado, s la mejor acción codiciosa (es decir, la acción que maximiza las Q (s, a) para ese estado) se elige con probabilidad (1 – épsilon), y de lo contrario se selecciona una acción aleatoria.

A menudo, épsilon se decae con el tiempo. Esto fomenta la exploración del entorno en las primeras iteraciones del algoritmo. Pero luego, a medida que avanza el tiempo, reduce la cantidad de exploración, lo que nos permite centrarnos más en explotar esa información.

Si se visitan todos los pares de estado-acción, hay un número suficientemente grande varias veces. Se garantiza que el algoritmo Q-learning finalmente convergerá en la tabla óptima, aunque el tiempo de convergencia es otro asunto.

Ejemplo

Considere el siguiente laberinto (tomado de aquí )):

aprendizaje por refuerzo - laberinto inicial.

Tu objetivo es entrenar a un robot para encontrar el camino óptimo a través de este laberinto. Comenzando desde la celda (0, 0) y terminando en la celda (6, 6), sin un conocimiento previo del entorno.

aprendizaje por refuerzo - robot

Para animar al robot a encontrar la ruta más corta, se aplica una pequeña penalización de 0.04 unidades cada vez que el robot se mueve a una celda vacía (blanca).

Los obstáculos se ubican alrededor del laberinto (marcado en gris). Lo que resulta en una mayor penalización de 0.75 unidades si el robot entra en una celda contiene Ing. uno de ellos.

El robot solo puede moverse hacia arriba, hacia abajo, hacia la izquierda o hacia la derecha (es decir, no se permiten movimientos diagonales). Sin embargo, hay un nivel de incertidumbre asociado con cada movimiento.

De modo que solo hay un 80% de probabilidad de que el robot se mueva en la dirección deseada y un 20% de probabilidad de que el robot se mueva en ángulo recto con la dirección deseada (dividido de manera uniforme entre los dos posibilidades).

El robot no puede moverse fuera de los límites del laberinto. Si intenta hacerlo, se topa con la pared y su posición permanece sin cambios.

Si el robot llega con éxito al final de el laberinto, recibe una recompensa de 1 unidad.

Suponiendo una tasa de descuento de 0.9, una tasa de aprendizaje de 0.3 y una estrategia de exploración codiciosa de épsilon con épsilon (constante) igual a 0.5. Después de 50,000 iteraciones del algoritmo de Q-Learning. Conseguimos la siguiente política:

 

aprendizaje por refuerzo - Q-Learning.

 

El diagrama muestra la dirección óptima para que el robot tome cada cuadrado de la cuadrícula:

aprendizaje por refuerzo - laberinto resultado.

El código de Python para encontrar esta solución se puede encontrar aquí.

Aprendizaje por refuerzo en el mundo real

Aunque puede que no parezca obvio en el ejemplo anterior, los investigadores han encontrado numerosas maneras de aplicar aprendizaje por refuerzo al mundo real. El aprendizaje por refuerzo se ha utilizado con éxito para desarrollar sistemas automatizados de comercio de acciones. Optimizar las reacciones químicas, entrenar autos de auto conducción y enseñar a una computadora a jugar videojuegos mejor que cualquier humano, entre otras cosas.

Sin embargo, para aquellos que buscan iniciarse en el aprendizaje por refuerzo. Uno de los obstáculos más grandes históricamente ha sido conseguir un entorno interesante y desafiante en el que experimentar.

Esta es la razón por la que aprendizaje por refuerzo es el miembro menos conocido de la familia de aprendizaje automático. Sin embargo, desde la introducción de OpenAI Gym, esto ya no es el caso.

OpenAI Gym es un paquete de Python que incluye una selección de entornos de aprendizaje por refuerzo. Que van desde entornos simples de “juguete”, como el descrito en el ejemplo. Para entornos más desafiantes, incluidos los entornos de robótica simulada y los entornos de videojuegos de Atari.

aprendizaje por refuerzo - Ejemplos de algunos de los entornos disponibles en OpenAI Gym.
Ejemplos de algunos de los entornos disponibles en OpenAI Gym.

Este paquete hace posible que los informáticos, tanto los aficionados como los profesionales. Para experimentar con una gama de diferentes algoritmos de aprendizaje por refuerzo, e incluso, potencialmente, para desarrollar los suyos propios.

Resumen

El aprendizaje por refuerzo es la rama del aprendizaje automático que se relaciona con el aprendizaje de la interacción con un entorno donde la retroalimentación puede ser retrasada. En este tutorial, discutimos las características básicas de aprendizaje por refuerzo e introducimos uno de los más conocidos de todos los algoritmos de aprendizaje por refuerzo, Q-learning.

Q-learning implica la creación de una tabla de valores Q(s, a) para todas las acciones de estado pares y luego optimizando esta tabla interactuando con el entorno. Se garantiza que el algoritmo converge siempre que cada par de estado-acción sea visitado un número suficientemente grande de veces.

Pero, ¿Qué sucede cuando el número de estados y/o acciones posibles se hace tan grande que ya no es posible?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *