Path: blob/master/site/es-419/agents/rlds_to_reverb.md
25115 views
RLDS to Reverb util en TF-Agents
RLDS to Reverb util es una herramienta de TF Agents que permite leer los episodios de RLDS, transformarlos en trayectorias y enviarlos a Reverb.
Conjunto de datos de RLDS
RLDS (Conjuntos de Datos de Aprendizaje por Refuerzo) es un ecosistema de herramientas que sirve para almacenar, recuperar y manipular datos episódicos en el contexto de la Toma de Decisiones Secuenciales, como el Aprendizaje por Refuerzo (RL), el Aprendizaje a partir de demostraciones, el RL fuera de línea o el Aprendizaje por imitación.
Cada paso cuenta con los siguientes campos (y, en algunos casos, con campos adicionales para metadatos del paso). A mod de ejemplo, se usan las especificaciones del conjunto de datos D4RL half-cheetah/v0-expert
'action':
TensorSpec(shape = (6,), dtype = tf.float32, name = None)
'discount':
TensorSpec(shape = (), dtype = tf.float32, name = None)
'is_first':
TensorSpec(shape = (), dtype = tf.bool, name = None)
'is_last':
TensorSpec(shape = (), dtype = tf.bool, name = None)
'is_terminal':
TensorSpec(shape = (), dtype = tf.bool, name = None)
'observation':
TensorSpec(shape = (17,), dtype = tf.float32, name = None)
'reward':
TensorSpec(shape = (), dtype = tf.float32, name = None)}, TensorShape([]))
API de RLDS to TF-Agents utils
Cómo crear especificación de trayectoria desde un conjunto de datos
Crea especificación de datos para inicializar el servidor de Reverb y Reverb Replay Buffer.
Crea una especificación de datos para el conjunto de datos de trayectoria correspondiente que se puede crear mediante el uso de rlds_data
que se proporciona como entrada. Esta especificación de datos es necesaria para inicializar un servidor de Reverb y Reverb Replay Buffer.
Argumentos:
rlds_data
: un conjunto de datos de RLDS es untf.data.Dataset
de episodios de RLDS, donde cada episodio contiene untf.data.Dataset
de pasos de RLDS y, de forma opcional, metadatos de episodios. Un paso de RLDS es un diccionario de tensores que contieneis_first
,is_last
,observation
,action
,reward
,is_terminal
ydiscount
(y, en algunos casos, metadatos del paso).
Devuelve:
Una especificación de trayectoria que se puede usar para crear un conjunto de datos de trayectoria con
rlds_data
como entrada.
Genera:
ValueError
: si no existen los pasos RLDS enrlds_data
.
Cómo convertir datos RLDS en trayectorias de TF Agents
Convierte los datos RLDS en un conjunto de datos de trayectorias. Actualmente, solo se admite la conversión a una trayectoria de dos pasos.
Convierte los rlds_data
proporcionados en un conjunto de datos de trayectorias de TF Agents al aplanarlos y convertirlos en lotes y luego en tuplas de pares superpuestos de pasos RLDS adyacentes.
Los datos del RLDS se amortiguan al final con un paso de tipo first
para garantizar que la trayectoria creada con el último paso del último episodio tenga un tipo de paso siguiente válido.
Argumentos:
rlds_data
: un conjunto de datos de RLDS es untf.data.Dataset
de episodios de RLDS, donde cada episodio contiene untf.data.Dataset
de pasos de RLDS y, de forma opcional, metadatos de episodios. Un paso de RLDS es un diccionario de tensores que contieneis_first
,is_last
,observation
,action
,reward
,is_terminal
ydiscount
(y, opcionalmente, metadatos del paso).policy_info_fn
: una función opcional para crear policy.info que se usa para generar trayectorias de TF-Agents.
Devuelve:
Un tipo de conjunto de datos
tf.data.Dataset
, cuyos elementos son trayectorias de TF Agents correspondientes a los pasos RLDS que se proporcionan enrlds_data
.
Genera:
ValueError
: si no existen los pasos RLDS enrlds_data
.InvalidArgumentError
: si el conjunto de datos RLDS proporcionado tiene episodios con las siguientes características:Que terminan incorrectamente, es decir, que no terminan en el último paso.
Que finalizan incorrectamente, es decir, con un paso final que no es el último paso.
Que comienzan incorrectamente, es decir, un último paso no va seguido de un primer paso. Tenga en cuenta que la función se encarga del último paso del último episodio y que el usuario no necesita asegurarse de que el último paso del último episodio venga seguido de un primer paso.
Cómo enviar datos RLDS a Reverb
Envía los datos de RLDS al servidor de Reverb como trayectorias de TF Agents. El observador de reverberación deberá instanciarse antes de llamar a la interfaz y proporcionarse como parámetro.
Envía el rlds_data
proporcionado al servidor de Reverb mediante el uso de reverb_observer
tras convertirlo en trayectorias de TF Agents.
Tenga en cuenta que la especificación de datos que se usa para inicializar el búfer de repetición y el servidor de reverberación para crear el reverb_observer
debe coincidir con la especificación de los datos para rlds_data
.
Argumentos:
rlds_data
: un conjunto de datos de RLDS es untf.data.Dataset
de episodios de RLDS, donde cada episodio contiene untf.data.Dataset
de pasos de RLDS y, de forma opcional, metadatos de episodios. Un paso de RLDS es un diccionario de tensores que contieneis_first
,is_last
,observation
,action
,reward
,is_terminal
ydiscount
(y, opcionalmente, metadatos del paso).reverb_observer
: un observador de reverberación para grabar datos de trayectorias en Reverb.policy_info_fn
: una función opcional para crear policy.info que se usa para generar trayectorias de TF-Agents.
Devuelve:
Un
int
que representa la cantidad de trayectorias que se enviaron correctamente a RLDS.
Genera:
ValueError
: si no existen los pasos RLDS enrlds_data
.ValueError
: si la especificación de datos que se usa para inicializar el búfer de repetición y el servidor de reverberación para crear elreverb_observer
no coincide con la especificación de los datos para el conjunto de datos de trayectoria que se puede crear mediante el uso derlds_data
.InvalidArgumentError
: si el conjunto de datos RLDS proporcionado tiene episodios con las siguientes características:Que terminan incorrectamente, es decir, que no terminan en el último paso.
Que finalizan incorrectamente, es decir, con un paso final que no es el último paso.
Que comienzan incorrectamente, es decir, un último paso no va seguido de un primer paso. Tenga en cuenta que la función se encarga del último paso del último episodio y que el usuario no necesita asegurarse de que el último paso del último episodio venga seguido de un primer paso.
Cómo se corresponden los pasos de RLDS con las trayectorias de TF Agents
La siguiente secuencia corresponde a pasos de RLDS en los pasos del tiempo t, t+1 and t+2. Cada paso contiene una observación (o), una acción (a), una recompensa (r) y un descuento (d). Los elementos de un mismo paso se agrupan entre paréntesis.
En RLDS,
o_t
corresponde a la observación a tiempo ta_t
corresponde con la acción a tiempo tr_t
corresponde con la recompensa recibida por haber ejecutado la acción en observacióno_t
d_t
corresponde con el descuento que se aplica a la recompensar_t
…
Cuando is_terminal = True
, la observación corresponde a un estado final, por lo que la recompensa, el descuento y la acción carecen de sentido. En función del entorno, la observación final también puede carecer de sentido.
Si un episodio termina en un paso donde is_terminal = False
, significa que este episodio ha sido truncado. En ese caso, en función del entorno, la acción, la recompensa y el descuento también podrían estar vacíos.
Proceso de conversión
Aplanar el conjunto de datos
El conjunto de datos RLDS es un conjunto de datos de episodios que son a su vez conjuntos de datos de pasos de RLDS. Primero se aplana a un conjunto de datos de pasos.
Crear pares superpuestos de pasos adyacentes
El conjunto de datos de RLDS aplanado luego se divide en lotes y se convierte en un conjunto de datos de pares superpuestos de pasos RLDS adyacentes.
Convertir en trayectorias de TF-Agents
Luego, el conjunto de datos se convierte en trayectorias de TF Agents.