Aprendizaje por refuerzo con agentes Tensorflow [2022]

Publicado: 2021-01-01

El aprendizaje por refuerzo ha ganado una valiosa popularidad con el éxito relativamente reciente del método AlphaGo de DeepMind para vencer al campeón mundial de Go. El método AlphaGo fue educado en parte por aprendizaje reforzado en redes neuronales profundas.

Este estilo de aprendizaje es una característica distintiva del aprendizaje automático de los paradigmas clásicos supervisados ​​y no supervisados. En el aprendizaje por refuerzo, la red responde a los datos ambientales (llamados estado) utilizando redes neuronales profundas e influye en el comportamiento de un agente para tratar de optimizar una recompensa.

Esta técnica ayuda a una red a aprender a practicar deportes, como Atari u otros videojuegos, o algún otro desafío que pueda reescribirse como una forma de juego. En este tutorial, un modelo común de aprendizaje por refuerzo, presentaré los principios generales del aprendizaje Q y demostraré cómo incorporar el aprendizaje Q profundo en TensorFlow.

Tabla de contenido

Introducción al aprendizaje por refuerzo

Como se mencionó anteriormente, el aprendizaje por refuerzo consiste en unas pocas entidades o principios básicos. Ellos son: un entorno que crea una condición y recompensa, y una entidad que realiza acciones en el entorno dado. En el siguiente diagrama, se ve esta interacción:

La tarea del agente en tal entorno es analizar el estado y la información de incentivos que recibe y elegir un comportamiento que maximice la entrada que recibe de la recompensa. El agente aprende por contacto repetitivo con el mundo, o, en otras palabras, jugando repetidamente el juego.

Para tener éxito, es necesario que el agente:

1. Aprenda el vínculo entre los estados, el comportamiento y los incentivos resultantes

2. Determine cuál es el mejor movimiento para elegir (1)

La implementación (1) requiere definir un cierto conjunto de principios que se pueden usar para notificar (2) y (2) se conoce como la estrategia de operación. Uno de los métodos más comunes para aplicar (1) y (2) utilizando Deep Q es la red Deep Q y la política épsilon-greedy.

Aprende: Los 5 proyectos de TensorFlow más populares para principiantes

q aprendizaje

Q learning es una forma basada en valores de entregar datos para saber qué acción puede tomar un agente. Crear una tabla que resuma los beneficios de tomar acción durante varios juegos en un estado es un concepto originalmente intuitivo de generar principios sobre los cuales basar las acciones. Esto hará un seguimiento de cuáles son los movimientos más beneficiosos. Para empezar, consideremos un juego simple en cada estado con 3 estados y dos acciones potenciales; una tabla puede representar las recompensas de este juego:

Acción 1 Acción 2
Estado 1 0 10
Estado 2 10 0
Estado 3 0 10

Puede ver en la tabla anterior que para este juego simple, cuando el agente está en el Estado 1 y realiza la Acción 2, si realiza la Acción 1, recibirá una recompensa de 10 pero cero recompensa. En el Estado 2, la condición se invierte, y el Estado 3 eventualmente se asemeja al Estado 1. Si un agente explora este juego arbitrariamente y anota el comportamiento que obtiene la mayor recompensa en cualquiera de los tres estados (almacenando este conocimiento en una matriz, digamos), por lo que efectivamente se conocerá la forma práctica de la tabla anterior.

En otras palabras, si el agente realmente seleccionó el comportamiento que había aprendido en el pasado que le había brindado la mayor recompensa (aprendiendo alguna forma de la tabla anterior de manera efectiva), habría aprendido a jugar el juego de manera efectiva. Cuando es apropiado simplemente construir tablas por suma, ¿por qué necesitamos ideas sofisticadas como el aprendizaje Q y luego las redes neuronales?

Recompensa diferida

Bueno, la primera respuesta aparente es que el juego anterior es simplemente muy simple, con solo 3 estados y 2 actos por estado. Los verdaderos juegos son significativamente más complejos. El principio de recompensa diferida en el caso anterior es el otro concepto significativo que está ausente. Un agente tiene que aprender a ser capaz de tomar medidas para jugar correctamente los juegos más realistas, lo que puede no conducir necesariamente a una recompensa, pero puede resultar en una recompensa significativa más adelante.

Acción 1 Acción 2
Estado 1 0 5
Estado 2 0 5
Estado 3 0 5
Estado 4 20 0

Si la Acción 2 se realiza en todos los estados del juego mencionado anteriormente, el agente vuelve al Estado 1, es decir, vuelve al principio. En los estados 1 a 3, incluso obtiene un crédito de 5 al hacerlo. Por lo tanto, si se realiza la Acción 1 en todos los Estados 1 a 3, el agente viajará al siguiente Estado, pero no recibirá una recompensa hasta que ingrese al Estado 4, momento en el cual recibirá una recompensa de 20.

En otras palabras, un agente está mejor si no toma la Acción 2 para obtener una recompensa instantánea de 5, sino que puede elegir la Acción 1 para avanzar continuamente a través de los estados para obtener una recompensa de 20. El agente quiere poder para elegir actos que resulten en una recompensa retrasada cuando el valor de la recompensa retrasada es demasiado alto.

Lea también: Clasificación de imágenes de Tensorflow

La regla de aprendizaje Q

Esto nos anima a aclarar las reglas de aprendizaje de Q. En el aprendizaje Q profundo, la red neuronal necesita tomar el estado actual, s, como un vector y devolver un valor Q para cada comportamiento potencial, a, en ese estado, es decir, es necesario devolver Q(s, a) para ambos s y a. Esta Q(s, a) necesita ser revisada en el entrenamiento a través de la siguiente regla:

Q(s,a) = Q(s,a) + alp[r+γmáx Q(s',a ') – Q(s,a)] + alp[r+ γmáx Q(s',a')

Esta ley necesita un poco de desempaquetado para la actualización. En segundo lugar, puede ver que el nuevo valor de Q(s, a) requiere cambiar su valor existente insertando algunos bits adicionales en el lado derecho de la ecuación anterior. Cambiar de izquierda a derecha. Olvídate del alfa por un tiempo. Dentro de los corchetes, vemos que la primera palabra es r, que representa el premio obtenido por tomar medidas en los estados.

Esta es la recompensa instantánea; ninguna satisfacción diferida está involucrada todavía. La siguiente palabra es la estimación de incentivos diferidos. En primer lugar, tenemos el valor de γ que descuenta el efecto de recompensa retrasada, que siempre está entre 0 y 1. Más sobre eso en un segundo. El siguiente término maxa'Q(s, 'a') es el valor Q máximo disponible en la siguiente condición.

Hagamos las cosas un poco más fáciles: el agente comienza en estados, realiza la acción a, termina en estados y luego el código especifica el valor máximo de Q en estados, es decir, max a 'Q(s',a'). Entonces, ¿por qué se tiene en cuenta el sentido Max como 'Q(s',a')? Si tiene efecto y está en el estado s, se sabe que representa la recompensa total posible para el controlador.

Sin embargo, γ descuenta este valor para tener en cuenta que esperar un posible incentivo para siempre no es deseable para el agente; es mejor para el agente apuntar al premio más grande con la menor cantidad de tiempo. Observe que el valor de Q(s',a)' también retiene implícitamente el incentivo descontado más alto para la economía después de eso, es decir, Q(s',a)' porque mantiene la motivación descontada para el estado Q(s',a) ' y así.

Esto se debe a que el agente seleccionará la acción no solo sobre la base de la recompensa inmediata r, sino también sobre la base de posibles incentivos futuros descontados.

Aprendizaje profundo Q

Deep Q learning sigue la ley de actualización de Q learning a lo largo de la fase de entrenamiento. En otras palabras, se crea una red neuronal que toma el estado s como entrada, y luego la red se entrena para producir valores Q(s, a) apropiados para cada comportamiento en el estado s. Luego, la acción del agente se seleccionará tomando la acción con el mayor valor de Q(s, a) (tomando un argmax de la salida de la red neuronal). Esto se puede ver en el primer paso del siguiente diagrama:

Selección de acciones y pasos de entrenamiento: Deep Q learning

Una vez realizada esta transferencia y seleccionada una acción, el agente realizará la acción. Luego, el agente obtendrá retroalimentación sobre qué incentivo se le está dando para tomar la acción desde ese estado. De acuerdo con la Guía de aprendizaje de Q, el siguiente paso que queremos hacer ahora es capacitar a la red. En la segunda parte, esto se puede ver en el diagrama de arriba.

El vector de estado s es la matriz de entrada x para el entrenamiento de la red, y la muestra de entrenamiento de salida y es el vector Q(s, a) recopilado durante el proceso de selección de la acción. Sin embargo, uno de los valores de Q(s,a), correspondiente a la acción a, está configurado para tener un objetivo de r+γQ(s',a '), como se puede ver en la figura anterior. Al entrenar la red de esta manera para decirle al agente qué comportamiento será el mejor para seleccionar para su beneficio a largo plazo, el vector de salida Q(s, a) de la red se fortalecerá con el tiempo.

Ventajas del aprendizaje por refuerzo:

  • El aprendizaje por refuerzo se puede utilizar para resolver desafíos muy desafiantes que no se pueden superar con enfoques convencionales.
  • Esta estrategia se selecciona con el fin de producir resultados a largo plazo, que son muy difíciles de lograr.
  • Este patrón de aprendizaje es algo similar al aprendizaje de los seres humanos. Por lo tanto, está cerca de alcanzar la perfección.
  • El modelo corregiría los errores que se han producido durante la fase de prueba.
  • Si el modelo corrige un error, las posibilidades de que ocurra el mismo error son ligeramente menores.
  • Crearía el mejor paradigma para resolver un problema en particular.

Contras del aprendizaje por refuerzo

  • El aprendizaje por refuerzo como esquema es incorrecto en muchos aspectos diferentes, pero es precisamente esta cualidad lo que lo hace útil.
  • Demasiado aprendizaje por refuerzo puede provocar que los estados se vean abrumados, lo que puede reducir los resultados.
  • El aprendizaje por refuerzo no es preferible a ser utilizado para resolver problemas fundamentales.
  • El aprendizaje por refuerzo requiere una gran cantidad de inteligencia y una gran cantidad de computación. Tiene hambre de datos. Es por eso que encaja tan bien en los videojuegos, por lo que puedes jugar una y otra vez y parece posible obtener muchos detalles.
  • El aprendizaje por refuerzo asume que el universo es markoviano, lo cual no es. El modelo markoviano describe una secuencia de posibles eventos en los que la probabilidad de cada ocurrencia depende únicamente de la condición alcanzada en el evento anterior.

¿Qué sigue?

Si desea dominar el aprendizaje automático y aprender a capacitar a un agente para que juegue tres en raya, para entrenar un chatbot, etc., consulte el curso de Diploma PG de aprendizaje automático e inteligencia artificial de upGrad.

¿Qué es TensorFlow?

Python, el lenguaje de programación popularmente utilizado en el aprendizaje automático, viene con una amplia biblioteca de funciones. TensorFlow es una de esas bibliotecas de Python lanzadas por Google, que admite cálculos numéricos rápidos y eficientes. Es una biblioteca de código abierto creada y mantenida por Google que se usa ampliamente para desarrollar modelos de aprendizaje profundo. TensorFlow también se usa junto con otras bibliotecas de contenedores para simplificar el proceso. A diferencia de otras bibliotecas numéricas que también se utilizan en Deep Learning, TensorFlow se desarrolló tanto para la investigación y el desarrollo de aplicaciones como para las funciones del entorno de producción. Puede ejecutarse en máquinas con CPU individuales, dispositivos móviles y sistemas informáticos distribuidos.

¿Cuáles son algunas otras bibliotecas como TensorFlow en el aprendizaje automático?

Durante los primeros días, los ingenieros de aprendizaje automático solían escribir todo el código para diferentes algoritmos de aprendizaje automático manualmente. Ahora, escribir las mismas líneas de código cada vez para algoritmos similares, modelos estadísticos y matemáticos no solo requería mucho tiempo, sino que también era ineficiente y tedioso. Como solución alternativa, se introdujeron las bibliotecas de Python para reutilizar funciones y ahorrar tiempo. La colección de bibliotecas de Python es amplia y versátil. Algunas de las bibliotecas más utilizadas de Python son Theano, Numpy, Scipy, Pandas, Matplotlib, PyTorch, Keras y Scikit-learn, además de TensorFlow. Las bibliotecas de Python también son fácilmente compatibles con las bibliotecas de C/C++.

¿Cuáles son las ventajas de usar TensorFlow?

Las muchas ventajas de TensorFlow lo convierten en una opción muy popular para desarrollar modelos computacionales en aprendizaje profundo y aprendizaje automático. En primer lugar, es una plataforma de código abierto que admite formatos de visualización de datos mejorados con su presentación gráfica. Los programadores también pueden usarlo fácilmente para depurar nodos, lo que ahorra tiempo y elimina la necesidad de examinar la longitud total del código de la red neuronal. TensorFlow admite todo tipo de operaciones y los desarrolladores pueden crear cualquier tipo de modelo o sistema en esta plataforma. Es fácilmente compatible con otros lenguajes de programación como Ruby, C++ y Swift.