Path: blob/master/site/es-419/agents/tutorials/0_intro_rl.ipynb
25118 views
Copyright 2023 The TF-Agents Authors.
Introducción a las redes RL y Deep Q
Introducción
El Aprendizaje por Refuerzo (RL) es un marco general en el que los agentes aprenden a ejecutar acciones en un entorno con el fin de maximizar una recompensa. Los dos componentes principales son el entorno, que representa el problema a resolver, y el agente, que representa el algoritmo de aprendizaje.
El agente y el entorno interactúan constantemente entre sí. En cada paso de tiempo, el agente toma una acción en el entorno con base en su política , donde es la observación actual del entorno, y recibe una recompensa y la siguiente observación del entorno. El objetivo es mejorar la política para maximizar la suma de recompensas (rendimiento).
Nota: Es importante distinguir entre el state
del entorno y la observation
, que es la parte del state
del entorno que el agente puede ver, por ejemplo, en un juego de póquer, el estado del entorno está compuesto por las cartas de todos los jugadores y las cartas de la comunidad, pero el agente solo puede observar sus propias cartas y algunas de las cartas de la comunidad. En la mayoría de la literatura, estos términos se utilizan indistintamente y la observación también se denota como .
Se trata de un marco muy general y puede modelar una gran variedad de problemas de toma de decisiones secuenciales, como juegos, robótica, etc.
El entorno Cartpole
El entorno Cartpole es uno de los problemas clásicos de aprendizaje por refuerzo más conocidos (el "¡Hola, mundo!" del RL). Hay un poste unido a un carro, que puede moverse a lo largo de una pista sin fricción. El poste comienza en posición vertical y el objetivo es evitar que se caiga controlando el carro.
La observación del entorno es un vector en 4D que representa la posición y la velocidad del carro, y el ángulo y la velocidad angular del poste.
El agente puede controlar el sistema al tomar una de 2 medidas : empujar el carro a la derecha (+1) o a la izquierda (-1).
Se proporciona una recompensa por cada paso de tiempo que el poste permanezca en posición vertical. El episodio termina cuando se cumple una de las siguientes condiciones:
el poste se inclina por encima de algún ángulo límite
el carro se mueve fuera de los límites del mundo
pasan 200 pasos de tiempo.
El objetivo del agente es aprender una política para maximizar la suma de recompensas de un episodio \sum_{t=0}^{T} \gamma^t r_t\gamma[0, 1]$ que descuenta las recompensas futuras en relación con las inmediatas. Este parámetro nos ayuda a centrar la política, de manera que se preocupe más por obtener recompensas rápidamente.
El agente DQN
El algoritmo DQN (Deep Q-Network) fue desarrollado en 2015 por DeepMind. Fue capaz de resolver una amplia gama de juegos Atari (algunos a un nivel de superhombre) gracias a la combinación de aprendizaje por refuerzo y redes neuronales profundas a escala. El algoritmo se desarrolló mejorando un algoritmo clásico de RL llamado Q-Learning con redes neuronales profundas y una técnica conocida como repetición de experiencia.
Q-Learning
Q-Learning se basa en la noción de función Q. La función Q (también conocida como función de valor estado-acción) de una política , , mide el rendimiento esperado o la suma descontada de las recompensas obtenidas a partir del estado al tomar primero la acción y seguir después por la política . Definimos la función Q óptima como el rendimiento máximo que puede obtenerse a partir de la observación , ejecutando la acción y siguiendo la política óptima a partir de entonces. La función Q óptima obedece a la siguiente ecuación de optimalidad de Bellman:
Esto significa que el rendimiento a partir del estado y la acción corresponde a la suma de recompensas inmediatas y el rendimiento (descontado por ) que se obtiene al seguir la política óptima desde allí en adelante hasta el final del episodio (es decir, la recompensa máxima del siguiente estado ). La expectativa se calcula tanto sobre la distribución de recompensas inmediatas como sobre los posibles estados posteriores .
La idea básica de Q-Learning consiste en utilizar la ecuación de optimalidad de Bellman como actualización iterativa , y se puede demostrar que esto converge a la función óptima , es decir, como (consulte el estudio sobre DQN).
Deep Q-Learning
Para la mayoría de los problemas, no resulta práctico representar la función como una tabla con valores para cada combinación de y . Por ello, entrenamos un aproximador de funciones, como una red neuronal con parámetros , para estimar los valores de QQ(s, a; \theta) \approx Q^*(s, a)i$:
ParseError: KaTeX parse error: {equation} can be used only in display mode. donde
Aquí, se denomina objetivo de TD (diferencia temporal), y se denomina error de TD. representa la distribución del comportamiento, la distribución sobre las transiciones obtenidas del entorno.
Tenga en cuenta que los parámetros de la iteración anterior son fijos y no se actualizan. En la práctica se utiliza una instantánea de los parámetros de la red de unas pocas iteraciones atrás en lugar de la última iteración. Esta copia se denomina red objetivo.
Q-Learning es un algoritmo off-policy que aprende sobre la política codiciosa mientras emplea una política de comportamiento diferente para actuar en el entorno o recopilar datos. Esta política de comportamiento generalmente es una política -greedy que selecciona una acción codiciosa con probabilidad y una acción aleatoria con probabilidad para garantizar una buena cobertura del espacio estado-acción.
Repetición de experiencia
Para evitar la necesidad de calcular la expectativa completa en la pérdida DQN, podemos minimizarla mediante el uso del descenso de gradiente estocástico. Si la pérdida se calcula solo con la última transición , esto se reduce al Q-Learning estándar.
El estudio DQN de Atari introdujo una técnica llamada Repetición de Experiencia para que las actualizaciones de red fueran más estables. En cada paso de tiempo de la recopilación de datos, las transiciones se agregan a un búfer circular denominado búfer de repetición. Luego, durante el entrenamiento, en lugar de usar solo la última transición para calcular la pérdida y su gradiente, lo calculamos con ayuda de un minilote de transiciones extraídas del búfer de repetición. Esto tiene dos ventajas: una mayor eficiencia de los datos que se genera al reutilizar cada transición en muchas actualizaciones, y una mayor estabilidad como consecuencia de utilizar transiciones no correlacionadas en un lote.
DQN en Cartpole con TF-Agents
TF-Agents ofrece todos los componentes necesarios para entrenar un agente DQN, como el mismísimo agente, el entorno, las políticas, las redes, los búferes de repetición, los bucles de recopilación de datos y las métricas. Estos componentes se implementan como funciones de Python u operaciones gráficas de TensorFlow, y también disponemos de envoltorios para realizar conversiones entre ellos. Además, TF-Agents es compatible con el modo TensorFlow 2.0, que nos permite utilizar TF en modo imperativo.
A continuación, echemos un vistazo al tutorial de entrenamiento del agente DQN en el entorno Cartpole mediante el uso de TF-Agents.