Actor-Critic (AC) Methoden sind weit verbreitete Policy-Gradient-Methoden, die critics zur Unterstützung des Trainings verwenden. AC-Methoden können eine geringere Varianz und eine bessere Stichprobeneffizienz als REINFORCE erreichen, erfordert dies aber eine sorgfältige Gestaltung und Abstimmung von critic, um ein stabiles Training zu gewährleisten. Im Multi-Agent Reinforcement Learning (MARL) umfassen Actor-Critic-Methoden Multi-Agent Actor-Critic (MAAC) und Independent Actor-Critic (IAC).
Beide führen die Agenten gemeinsam aus und bewerten ihre gemeinsame Antwort mit der Belohnungsfunktion, aber sie verwenden critics unterschiedlich. MAAC trainiert einen critic auf der gemeinsamen Historie, sodass jeder Agent seinen TD-Fehler teilt. IAC trainiert einen critic pro Agent auf der Historie dieses Agenten, sodass jeder Agent seinen eigenen TD-Fehler erhält.
MAAC#
Multi-Agent Actor-Critic (MAAC) verwendet eine zentralisierte Critic (CC) über die Agenten hinweg, um die Werte von gemeinsamen Historien \( V_{\boldsymbol{\phi}}(\mathbf{h}_t) \) mit critic_type="v" oder von gemeinsamen Historie-Aktionspaaren \( Q_{\boldsymbol{\psi}}(\mathbf{h}_t, \mathbf{a}_t) \) mit critic_type="q" zu bewerten. Die critic empfängt die Agenten-Prompts, die zu einer einzelnen Textsequenz zusammengefügt wurden; der Q-Modus umfasst auch ihre generierten Vervollständigungen. Der Policy-Gradient jedes Agenten ist:
wobei \( \boldsymbol{\delta}_t = r_t + \gamma V_{\boldsymbol{\phi}}(\mathbf{h}_{t+1}) - V_{\boldsymbol{\phi}}(\mathbf{h}_{t}) \) und die critic aktualisiert wird durch:
Hier ist \( r_t \) das verarbeitete Belohnungsmodell, wobei die optionale Referenz-KL-Strafe bei Aktivierung abgezogen wird; Belohnungen können zwischen Agenten geteilt oder pro Agent bereitgestellt werden. Die finale, gesammelte Runde, einschließlich einer frühzeitig beendeten oder einer Ein-Runden-rollout, verwendet die Belohnung allein als Ziel, ohne Bootstrapping. Die Wahrscheinlichkeit des Abschlusses ist die Summe der generierten token-Log-Wahrscheinlichkeiten; der Prompt und das nachfolgende Padding tokens werden ausgeschlossen. Der Verlust wird dann über Samples gemittelt. Puffer werden nach Agent und Runde gruppiert, bevor sie aktualisiert werden, und advantage_normalization normalisiert die TD-Fehler innerhalb jeder solchen Gruppe. Ziele und Vorteile bleiben während der Aktualisierung unverändert. Das gemeinsam genutzte critic wird sequentiell mit jeder Agenten-Batch aktualisiert, und value_loss_coef skaliert seinen Verlust.
Im Q-Modus verwendet die Implementierung das gleiche TD-Residual-actor-Gewicht mit einer abgetasteten nächsten Aktion im Bootstrapping. Es implementiert kein separates actor-Ziel, das direkt durch Q oder eine Zustands-basierte Baseline für Q gewichtet wird.
num_agents: Anzahl der Agentennum_turns: Anzahl der Rundencritic_type: Critic-Zieltyp (vfür V(h),qfür Q(h,a))num_train_epochs: Anzahl der Trainings-epochsagent_learning_rate: Lernrate für Agentencritic_learning_rate: Lernrate für das gemeinsam genutzte criticvalue_loss_coef: Gewicht für critic-Verlustadvantage_normalization: Ob Vorteile vor der Aktualisierung normalisiert werden sollenrollout_buffer_size: Anzahl der Samples, die pro Agent vor einer Aktualisierung gesammelt werdentrain_batch_size: Mini-Batch-Größe innerhalb jeder Aktualisierungmax_new_tokens: Maximaler tokens, der pro Vervollständigung generiert werden kanntemperature: Temperatur für das Samplingtop_p: Top-p für Nucleus-Samplingtop_k: Top-k für Samplingnum_generations: Anzahl der Generationen pro Prompt pro Agentexternal_prompt_passthrough: Ob externe Prompts direkt im mehrstufigen Training verwendet werden sollendiscount: Diskontfaktor für die Vorhersage des nächsten Schritts critic in TD-Zielen;expected_returnverwendet nicht diskontierte Summen von Belohnungenearly_termination_threshold: Ein rollout endet nach einer Runde, deren durchschnittliche verarbeitete Belohnung diesen Schwellenwert überschreitet;Nonedeaktiviert das frühe Stoppeneval_interval: Evaluationsintervall (in Trainings-Batches)eval_num_samples: Anzahl der Evaluationssamples pro Intervalleval_batch_size: Bewertung DataLoader Batch-Größelogging_steps: Minimal Anzahl von gemeinsamen Aktions-Belohnungsbewertungen im Trainings-Metrik-Logparallel_training:nonefür ein Gerät odermpfür explizite Agenten-/critic-Geräteplatzierungagent_devices,critic_devices: Gerätezuweisungen, erforderlich immp-Modusreference_kl_enabled,reference_kl_coef: Ob die eingefrorene KL-Belohnungsstrafe aktiviert ist und ihr Gewicht (standardmäßig deaktiviert)reference_devices: Optionale Geräteplatzierung für Referenzmodelle
agent_modeloderagents: Actor-Modell-Identifier-String für homogene Agenten oder Liste von Agentenmodellen (für Multi-Agentenagent_modelmuss ein String sein)critic_modelodercritics: Erforderliche einzelne gemeinsame critic, die als Identifier, Modellinstanz oder 1-Element-Liste angegeben wirdtokenizer: Gemeinsame tokenizer oder eine Agenten-Liste, wennagentsverwendet wird; erforderlich mitagentsoder einer Modellinstanz, andernfalls ausagent_modelgeladenreward_func: Aufruf, der Belohnungen zurückgibt (erforderlich)reward_processor: Optionale Belohnungs-Post-Processorformatters: Einzelner Aufruf oder Liste für Agenten-spezifische Prompt-Formatierungargs: Instanz vonMAACConfig(optional)train_dataset: Trainingsdatensatz (erforderlich)eval_dataset: Optionaler Evaluationsdatensatzmodel_config: Optionen zum Laden des Modells;critic_value_head_hidden_dimkonfiguriert die zentrale critic’s value head (optional)wandb_config: Weights & Biases-Protokollierungskonfiguration (optional)metrics_callback: Optionaler Callback, der rollout-Beispiele entgegennimmt und ein Wörterbuch mit Skalarwerten zurückgibtexternal_transition: Benötigte Übergangsfunktion, wennnum_turns > 1
MAAC aktualisiert die gesammelten Beispiele ohne Importance Sampling oder Policy-Ratio Clipping.
MAACConfighat keinevalue_clip_range-Option. Das gemeinsame critic verwendet das tokenizer des ersten Agenten, das mit dem critic-Modell kompatibel sein muss.
Das trainer verwendet eine feste Trainings-DataLoader-Batchgröße von 1. Für
num_turns > 1sindexternal_transitionundnum_generations=1erforderlich.train_batch_sizeverwendet standardmäßigrollout_buffer_size; tatsächliche Updates verwenden die verfügbaren Beispiele in jeder Agenten-/Turn-Gruppe, einschließlich kleinerer Gruppen, wenn Puffer geleert werden.
IAC#
Unabhängiger Actor-Critic (IAC) optimiert die Politik jedes Agenten unabhängig, während er gemeinsame Antworten aus mehreren Agenten verwendet. Jeder Agent behält seine eigene actor und critic bei, und andere Agenten dienen als Teil der Umgebung. Belohnungen können geteilt oder agentenspezifisch sein. Das critic ist auf den Prompt/die Historie des Agenten im V-Modus oder auf den Prompt und die Vervollständigung im Q-Modus angewiesen. Der Policy-Gradient für jeden Agenten ist:
wobei \( \delta_{i,t} = r_t + \gamma V_{\phi_i}(h_{i,t+1}) - V_{\phi_i}(h_{i,t}) \). Das actor verwendet den gleichen sample-averaged Loss und Completion-token-Summe wie MAAC, mit optionaler Normalisierung innerhalb jeder Agenten-/Turn-Gruppe. Das Q-Modus actor verwendet auch diesen TD-Fehler.
CoMLRL unterstützt zwei Varianten von IAC:
Unabhängiges Critic: Verwendet ein unabhängiges Modell zur Wertschätzung. Die Parameter von Actor und critic werden separat optimiert, was mit dem Speichern eines zusätzlichen Modells pro Agent verbunden ist.
Gemeinsames Modell: Fügt ein kleines value head zu dem Transformer backbone hinzu und teilt die historischen Darstellungen (oder Darstellungen von Historie-Aktion) des actor, um den Speicherbedarf zu reduzieren.
Die critics werden aktualisiert, indem der TD-Fehler minimiert wird:
Bei Verwendung eines gemeinsamen Modells (use_separate_critic=False) optimieren actor und value head den actor-Verlust sowie den critic-Verlust, gewichtet durch value_loss_coef. Es wird ein Wert-Clipping angewendet, um die Trainingsstabilität zu verbessern, es sei denn, value_clip_range=None.
wobei \( \hat{V}_t \) das Ziel ist TD, \( \epsilon \) ist value_clip_range, und die Fehler werden über den Mini-Batch gemittelt. Separate critics verwenden den ungeklappten quadratischen Fehler.
num_agents: Anzahl der Agentennum_turns: Anzahl der Turnsnum_train_epochs: Anzahl der Trainings-epochsagent_learning_rate: Lernrate für Agentencritic_learning_rate: Lernrate für das separate critics; gemeinsame Modelle verwendenagent_learning_ratefür actor und value headvalue_loss_coef: Koeffizient für Wertverlustvalue_clip_range: Wert-Clipping-Bereich im gemeinsamen-Modus;Nonedeaktiviert Clippingadvantage_normalization: Ob Vorteile normalisiert werden sollenrollout_buffer_size: Anzahl der Samples, die vor einem Update gesammelt werdentrain_batch_size: Mini-Batch-Größe für Policy-Updatesmax_new_tokens: Maximale Anzahl neuer tokens, die generiert werden könnentemperature: Temperatur für Samplingtop_p: Top-p für Nucleus-Samplingtop_k: Top-k für Samplingnum_generations: Anzahl der Generationen pro Prompt pro Agentuse_separate_critic: Ob ein separates critic-Modell verwendet werden sollcritic_type: Critic Zieltyp (vfür V(h),qfür Q(h,a))critic_value_head_hidden_dim: Versteckte Dimension für critic value headvalue_head_hidden_dim: Versteckte Dimension für value head im shared-model Modusexternal_prompt_passthrough: Ob externe Prompts direkt im mehrstufigen Training verwendet werden sollendiscount: Diskontfaktor in TD-Zielen;expected_returnverwendet ungezogene Belohnungssummenearly_termination_threshold: Ein rollout endet, wenn der durchschnittliche verarbeitete Belohnungswert einer Runde diesen Schwellenwert überschreitet;Nonedeaktiviert das frühe Stoppeneval_interval: Evaluationsintervall (in Trainingsbatches)eval_num_samples: Anzahl der Evaluationsbeispiele pro Intervalleval_batch_size: Evaluationsgröße für DataLoaderlogging_steps: Minimale Anzahl von gemeinsamen-Aktions-Belohnungs-Evaluierungen zwischen Trainingsmetrik-Logsparallel_training:nonefür ein Gerät odermpfür explizite Platzierung von Agenten/criticagent_devices,critic_devices: Gerätezuweisungen;mperfordertagent_devicesund, für separate critics,critic_devicesreference_kl_enabled,reference_kl_coef: Ob die deaktivierte KL-Belohnungsstrafe aktiviert ist und ihr Gewicht (standardmäßig deaktiviert)reference_devices: Optionale Geräteplatzierung für Referenzmodelle
agent_modeloderagents: Modell-Identifier-String für homogene Agenten, oder Liste von Agentenmodellen (multi-Agentagent_modelmuss ein String sein)critic_modelodercritics: Critic-Identifier, Modellinstanz, oder Liste von critic-Modellen, wennuse_separate_critic=Trueverwendet wirdtokenizer: Gemeinsame tokenizer, oder eine Liste pro Agent, wennagentsverwendet wird; erforderlich mitagentsoder einer Modellinstanz, andernfalls ausagent_modelgeladenreward_func: Aufruf, der eine Liste von Fließkommazahlen zurückgibt (erforderlich)reward_processor: Optionale Prozessor für die Anwendung auf Belohnungenformatters: Einzelner Aufruf oder Liste von Agenten-Aufrufen zur Formatierung von Datensatz-Elementen in Promptsargs: Instanz vonIACConfig(optional)train_dataset: Trainingsdatensatz (erforderlich)eval_dataset: Evaluationsdatensatz (optional)model_config: Modellkonfigurations-Dictionary (optional)wandb_config: Konfiguration für das Protokollieren von Weights & Biases (optional)metrics_callback: Optionaler Callback, der rollout-Beispiele entgegennimmt und ein Dictionary mit Skalarwerten zurückgibtexternal_transition: Optionaler Übergangsfunktion erforderlich für das mehrstufige Training
IAC Aktualisierungen der gesammelten Samples ohne Importance Sampling oder Policy-Ratio-Clipping. Im gemeinsamen-Modus (
use_separate_critic=False), value heads sind an die actor Model angehängt; das Übergeben voncritic_modelodercriticsführt zu einem Fehler, undvalue_clip_rangegilt nur in diesem Modus. Agenten können homogen oder heterogen sein. Im separaten-critic Modus (use_separate_critic=True), können Benutzer einecriticsListe mit der Längenum_agentsoder eine einzelnecritic_modelQuelle für die Verbreitung angeben. Unterschiedliche Model-Instanzen oder ein Identifier, der separat geladen wurde für jedes critic behalten ihre Parameter unabhängig; das Verbreiten eines vorgefertigten Model-Objekts verwendet seine Parameter wieder. Jedes critic verbraucht seine actor’s token IDs, sodass ein anderes critic Model kompatibel mit diesem actor’s tokenizer.
trainer verwendet eine feste Trainings-DataLoader-Batchgröße von 1. Für
num_turns > 1sindexternal_transitionundnum_generations=1erforderlich.train_batch_sizeverwendet standardmäßigrollout_buffer_size; tatsächliche Updates verwenden die verfügbaren Samples in jeder Agenten-/Turn-Gruppe, einschließlich kleinerer Gruppen, wenn Puffer geleert werden.