Los métodos Actor-Critic (AC) son ampliamente utilizados métodos de gradiente de política que utilizan critics para apoyar el entrenamiento. Los métodos AC pueden lograr una varianza más baja y una mejor eficiencia de muestreo que REINFORCE, pero esto requiere un diseño y ajuste cuidadosos de critic para garantizar un entrenamiento estable. En el Aprendizaje por Refuerzo Multiagente (MARL), Actor-Critic incluyen Multiagente Actor-Critic (MAAC) y Independiente Actor-Critic (IAC).
Ambos lanzan los agentes conjuntamente y puntúan su respuesta conjunta con la función de recompensa, pero utilizan critics de forma diferente. MAAC entrena un critic con la historia conjunta, de modo que cada agente comparte su TD error. IAC entrena un critic por agente con la historia de ese agente, de modo que cada agente obtiene su propio TD error.
MAAC#
El Aprendizaje Multiagente Actor-Critic (MAAC) utiliza un Centralizado Critic (CC) en los agentes para evaluar los valores de las historias conjuntas \( V_{\boldsymbol{\phi}}(\mathbf{h}_t) \) con critic_type="v", o de las parejas historia-acción conjuntas \( Q_{\boldsymbol{\psi}}(\mathbf{h}_t, \mathbf{a}_t) \) con critic_type="q". El critic recibe las indicaciones de los agentes unidas en una secuencia de texto única; el modo Q también incluye sus completaciones generadas. El gradiente de política de cada agente es:
donde \( \boldsymbol{\delta}_t = r_t + \gamma V_{\boldsymbol{\phi}}(\mathbf{h}_{t+1}) - V_{\boldsymbol{\phi}}(\mathbf{h}_{t}) \), y el critic se actualiza por:
Aquí, \( r_t \) es la recompensa procesada, con la penalización de referencia KL opcional restada cuando está habilitada; las recompensas pueden compartirse entre agentes o suministrarse por agente. La última vuelta recopilada, incluyendo una vuelta terminada prematuramente o de una sola vuelta rollout, utiliza la recompensa como objetivo, sin bootstrapping. La probabilidad del registro de finalización es la suma de las probabilidades de registro de las recompensas generadas token; se excluyen el prompt y el relleno tokens. La pérdida luego se promedia en muestras. Los búferes se agrupan por agente y vuelta antes de actualizar, y advantage_normalization normaliza los errores TD dentro de cada grupo. Los objetivos y ventajas permanecen fijos durante la actualización. El objetivo compartido critic se actualiza secuencialmente con cada lote de agentes, y value_loss_coef escala su pérdida.
En modo Q, la implementación utiliza el mismo peso TD-residual actor, con una acción siguiente muestreada en el bootstrapping. No implementa un objetivo actor separado ponderado directamente por Q o una línea de base solo de estado para Q.
num_agents: Número de agentesnum_turns: Número de vueltascritic_type: Tipo de objetivo Critic (vpara V(h),qpara Q(h,a))num_train_epochs: Número de muestras de entrenamiento epochsagent_learning_rate: Tasa de aprendizaje para agentescritic_learning_rate: Tasa de aprendizaje para el objetivo compartido criticvalue_loss_coef: Peso en la pérdida criticadvantage_normalization: Si se normalizan las ventajas antes de las actualizacionesrollout_buffer_size: Número de muestras a recopilar por agente antes de una actualizacióntrain_batch_size: Tamaño del mini-batch dentro de cada actualizaciónmax_new_tokens: Máximo tokens a generar por finalizacióntemperature: Temperatura para muestreotop_p: Top-p para muestreo nucleartop_k: Top-k para muestreonum_generations: Número de generaciones por prompt por agenteexternal_prompt_passthrough: Si utilizar prompts externos directamente en el entrenamiento multi-turnodiscount: Factor de descuento para la predicción critic del siguiente turno en los objetivos TD;expected_returnutiliza recompensas sin descontarearly_termination_threshold: Un rollout termina después de un turno cuyo promedio de recompensa procesada excede este umbral;Nonedeshabilita la parada tempranaeval_interval: Intervalo de evaluación (en lotes de entrenamiento)eval_num_samples: Número de muestras de evaluación por intervaloeval_batch_size: Tamaño del lote de evaluación DataLoaderlogging_steps: Número mínimo de evaluaciones de recompensa de acciones conjuntas entre los registros de métricas de entrenamientoparallel_training:nonepara un dispositivo omppara la colocación explícita del agente/critic dispositivoagent_devices,critic_devices: Asignación de dispositivos, requerida en el modompreference_kl_enabled,reference_kl_coef: Si la penalización de recompensa de referencia congelada KL está habilitada, y su peso (deshabilitado por defecto)reference_devices: Ubicación de dispositivo opcional para modelos de referencia
agent_modeloagents: Cadena identificadora del modelo Actor para agentes homogéneos, o lista de modelos de agente (el agente multi-agenteagent_modeldebe ser una cadena)critic_modelocritics: Único compartido critic, suministrado como identificador, instancia de modelo o lista de 1 elementotokenizer: tokenizer compartido, o lista por agente cuando se utilizaagents; requerido conagentso una instancia de modelo, de lo contrario, cargado deagent_modelreward_func: Función que devuelve recompensas (requerido)reward_processor: Procesador de recompensas opcionalformatters: Función única o lista para el formato de indicaciones por agenteargs: Instancia deMAACConfig(opcional)train_dataset: Conjunto de datos de entrenamiento (obligatorio)eval_dataset: Conjunto de datos de evaluación (opcional)model_config: Opciones de carga del modelo;critic_value_head_hidden_dimconfigura la configuración del critic del value head (opcional)wandb_config: Configuración de registro de Weights & Biases (opcional)metrics_callback: Callback opcional que toma muestras de rollout y devuelve un diccionario de métricas escalaresexternal_transition: Función de transición requerida cuando se utilizanum_turns > 1
MAAC actualiza las muestras recopiladas sin muestreo de importancia ni recorte de ratio de política.
MAACConfigno tiene opciónvalue_clip_range. El conjunto compartido critic utiliza el primer agente tokenizer, que debe ser compatible con critic
El trainer utiliza un entrenamiento fijo DataLoader tamaño del lote de 1. Para
num_turns > 1, anexternal_transitionynum_generations=1son necesarios.train_batch_sizepor defectorollout_buffer_size; las actualizaciones actuales utilizan las muestras disponibles en cada grupo de agente/turno, incluyendo grupos más pequeños cuando se vacían los búferes.
IAC#
Agente independiente Actor-Critic (IAC) optimiza la política de cada agente de forma independiente, utilizando respuestas conjuntas de múltiples agentes. Cada agente mantiene su propio actor y critic, y otros agentes sirven como parte del entorno. Las recompensas pueden ser compartidas o específicas del agente. critic se basa en el prompt/historial del agente en modo V, o en su prompt y finalización en modo Q. El gradiente de política para cada agente es:
donde \( \delta_{i,t} = r_t + \gamma V_{\phi_i}(h_{i,t+1}) - V_{\phi_i}(h_{i,t}) \). actor utiliza la misma pérdida promedio de muestra y la suma de finalizaciones de token como MAAC, con una normalización opcional dentro de cada grupo de agente/turno. actor en modo Q también utiliza este TD error.
CoMLRL soporta dos variantes de IAC:
Modelo separado Critic: Utiliza un modelo independiente para la estimación de valores. Los parámetros de Actor y critic se optimizan por separado, a costa de almacenar un modelo adicional por agente.
Modelo compartido: Adjunta un pequeño value head al transformador backbone, compartiendo las representaciones de historia (o historia-acción) del modelo actor para reducir los requisitos de espacio.
Los critics se actualizan minimizando el error de TD:
Cuando se utiliza un modelo compartido (use_separate_critic=False), actor y value head optimizan la pérdida de actor más la pérdida de critic ponderada por value_loss_coef. A menos que value_clip_range=None, se aplica un recorte de valor para mejorar la estabilidad del entrenamiento:
donde \( \hat{V}_t \) es el objetivo de TD, \( \epsilon \) es value_clip_range, y los errores se promedian en el mini-batch. Los modelos separados de critics utilizan el error cuadrático sin recortar.
num_agents: Número de agentesnum_turns: Número de turnosnum_train_epochs: Número de pasos de entrenamiento de epochsagent_learning_rate: Tasa de aprendizaje para los agentescritic_learning_rate: Tasa de aprendizaje para critics separado; los modelos compartidos utilizanagent_learning_ratepara actor y value headvalue_loss_coef: Coeficiente para la pérdida de valorvalue_clip_range: Rango de recorte de valor en modo de modelo compartido;Nonedeshabilita el recorteadvantage_normalization: Si normalizar las ventajasrollout_buffer_size: Número de muestras a recolectar antes de una actualizacióntrain_batch_size: Tamaño del mini-batch para actualizaciones de la políticamax_new_tokens: Número máximo de tokens a generartemperature: Temperatura para muestreotop_p: Top-p para muestreo nucleartop_k: Top-k para muestreonum_generations: Número de generaciones por prompt por agenteuse_separate_critic: Si utilizar un modelo critic separadocritic_type: Tipo de objetivo Critic (vpara V(h),qpara Q(h,a))critic_value_head_hidden_dim: Dimensión oculta para critic value headvalue_head_hidden_dim: Dimensión oculta para value head en modo de modelo compartidoexternal_prompt_passthrough: Si utilizar indicaciones externas directamente en el entrenamiento de múltiples turnosdiscount: Factor de descuento en los objetivos de TD;expected_returnutiliza sumas de recompensas sin descuentoearly_termination_threshold: Un rollout termina cuando la recompensa promedio procesada del turno excede este umbral;Nonedesactiva la parada tempranaeval_interval: Intervalo de evaluación (en lotes de entrenamiento)eval_num_samples: Número de muestras de evaluación por intervaloeval_batch_size: Tamaño del lote de evaluación DataLoaderlogging_steps: Número mínimo de evaluaciones de recompensa de acción conjunta entre los registros de métricas de entrenamientoparallel_training:nonepara un dispositivo omppara la colocación explícita del agente/criticagent_devices,critic_devices: Asignaciones de dispositivos;mprequiereagent_devicesy, para dispositivos separados critics,critic_devicesreference_kl_enabled,reference_kl_coef: Si se habilita la penalización de recompensa de referencia congelada KL y su peso (deshabilitado por defecto)reference_devices: Dispositivo de referencia opcional
agent_modeloagents: Cadena identificadora de modelo para agentes homogéneos, o lista de modelos de agente (el agente multi-agent_modeldebe ser una cadena)critic_modelocritics: Identificador de Critic, instancia de modelo, o lista de modelos de critic cuando se utilizause_separate_critic=Truetokenizer: tokenizer compartido, o lista por agente cuando se utilizaagents; requerido conagentso una instancia de modelo, de lo contrario, cargado desdeagent_modelreward_func: Función que devuelve una lista de flotantes (requerida)reward_processor: Procesador opcional para aplicar a las recompensasformatters: Función única o lista de funciones por agente para formatear los elementos del conjunto de datos en indicacionesargs: Instancia deIACConfig(opcional)train_dataset: Conjunto de datos de entrenamiento (requerido)eval_dataset: Conjunto de datos de evaluación (opcional)model_config: Diccionario de configuración del modelo (opcional)wandb_config: Configuración para el registro de Weights & Biases (opcional)metrics_callback: Callback opcional que recibe muestras de rollout y devuelve un diccionario de métricas escalaresexternal_transition: Función de transición opcional requerida para el entrenamiento de múltiples turnos
IAC actualiza muestras sin muestreo de importancia ni recorte de ratio de política. En modo de modelo compartido (
use_separate_critic=False), los value heads están asociados a los modelos actor; pasarcritic_modelocriticsgenera un error, yvalue_clip_rangesolo se aplica en este modo. Los agentes pueden ser homogéneos o heterogéneos. En modo separado (critic) (use_separate_critic=True), los usuarios pueden proporcionar una lista decriticsde longitudnum_agentso una única fuentecritic_modelpara la transmisión. Instancias de modelo distintas o un identificador cargado por separado para cada critic mantienen sus parámetros independientes; reusar los parámetros de un objeto de modelo pre-cargado. Cada critic consume el actor de su token IDs, por lo que un modelo diferente critic debe ser compatible con el actor’s tokenizer.
El trainer utiliza un entrenamiento fijo DataLoader tamaño del lote de 1. Para
num_turns > 1, anexternal_transitionynum_generations=1son necesarios.train_batch_sizepor defectorollout_buffer_size; las actualizaciones actuales utilizan las muestras disponibles en cada grupo de agente/turno, incluyendo grupos más pequeños cuando se vacían los búferes.