REINFORCE は、サンプリングされた報酬を使用してポリシーを直接最適化するポリシー勾配手法のクラスです。 これらの手法は、シンプルさと効率性から、LLM の微調整によく使用されます。例としては、GRPO、Dr. GRPO、RLOO、ReMax、TreeRPO、および REINFORCE++ などがあります。 REINFORCE は、複数の LLM エージェントが各ターンで応答し、それらの共同応答に共有された報酬を与えるマルチエージェント設定に拡張できます。
すべて MAREINFORCE trainers 1回の学習ループを共有します。各 rollout ノードにおいて、すべてのエージェントは \( K \) 応答をサンプリングし、 trainer インデックスに一致する共同応答を1つの共有された報酬で評価し、各エージェントは結果の共有された利点に基づいて自身の対数確率を重み付けしてからバッファされたオプティマイザステップを実行.
MAREINFORCE#
マルチエージェント REINFORCE (MAREINFORCE) のポリシー勾配のサロゲート、利点正規化または参照正規化の前に、次のように表すことができます:
REINFORCE の手法は、価値推定のために critic モデルを使用しません。 そのポリシー勾配の推定は、確率的なサンプリングと長期的な信用割り当てにより、高い分散を持つ可能性があります。 この分散を軽減するための一般的なアプローチには、アクションに依存しないベースラインを使用するか、より多くのサンプルを平均することを含みます。 たとえば、各共同履歴 \( \mathbf{h}_t \) における \( K \) のサンプルを平均することが挙げられます。
MAGRPO#
マルチエージェント グループ相対的ポリシー最適化 (MAGRPO) は、MAREINFORCE のインスタンスであり、GRPO にインスパイアされており、グループ平均ベースラインは \( K \) のサンプルの平均リターンです。 デフォルトの aligned の共同モードでは、アドバンテージ正規化前のサロゲートは次のとおりです:
含まれているサンプルのグループ平均は、上記の一般的な式で想定されているアクションに依存しないベースラインではありません。 マルチターンでのトレーニングでは、各ブランチのリターンは、その子ノードの即時報酬と平均リターンであり、割引は適用されません。 cross モードでは、各エージェントの完了は、その完了を含むすべての共同組み合わせのリターンの合計を受け取ります。
デフォルトでは、advantage_normalization=True は各ノードの生成グループ内で、集団の標準偏差を使用して利点を中心化およびスケーリングし、最小の分母として 1e-6 を使用します。 参照 KL の正規化が有効になっている場合、サンプリングされた参照ペナルティは、ベースラインと正規化の適用前に返却値から差し引かれます。
現在の
MAGRPOTrainer損失スライスには、最終的な完了 token が含まれていないため、その実装されたシーケンススコアは、上記のサロゲートにおける完全なシーケンスの対数確率とは異なります。 標準的な設定はjoint_mode="cross"です。 承認された"crossed"のエイリアスは、カルテシアンな組み合わせを生成しますが、同じ完了ごとの集約を適用しません。
num_agents: 設定されたエージェントの数、これは trainer の設定と一致する必要がありますnum_turns: episode ごとのターン数num_train_epochs: epochs の学習回数agent_learning_rate: 学習率logging_steps: ステップごとのログ記録間隔num_generations: 各エージェントに対してプロンプトごとにサンプリングする世代数max_new_tokens: 生成する最大 tokens の数temperature: サンプリング用の温度top_p: Top-p をサンプリングに使用top_k: Top-k をサンプリングに使用discount: 保持された設定フィールド; 現在の MAGRPO 実装は、この値を使いませんjoint_mode: 共同行動の構成 (インデックス対応のaligned、カルマン積のcross)early_termination_threshold: 学習ブランチは、ノードの平均即時報酬がこの閾値を超えると拡張を停止します (デフォルト-0.2;Noneは早期終了を無効化)rollout_buffer_size: 各エージェントごとに更新する前にバッファリングするノードサンプルの数train_batch_size: 各最適化ステップあたりのノードサンプルの数; デフォルトはrollout_buffer_sizeadvantage_normalization: 各ノードの生成グループ内で利潤を中央揃えおよびスケーリングするかどうか (デフォルトTrue)eval_interval: 評価は、epoch の最初のバッチを含む、N で割り切れるバッチインデックスで実行されます;0は定期評価を無効化eval_num_samples: 評価実行あたりのサンプルの数eval_batch_size: DataLoader バッチサイズ評価external_prompt_passthrough: マルチターン学習で外部プロンプトを直接使用するかどうかadvantage_mode: ベースラインモード (mean,max,rloo,raw)parallel_training: エージェント実行モード (noneまたはmp)agent_devices: エージェントのデバイス配置;parallel_training="mp"の使用には明示的に必要reference_kl_enabled: froze-reference KL ペナルティを有効にするかどうか (デフォルトFalse)reference_kl_coef: 参照ペナルティの重み (デフォルト0.1)reference_devices: 参照モデルのオプションなデバイス配置
agent_modelまたはagents: 同種エージェント用のモデル識別子文字列、またはモデル識別子のリストまたはプリロードされたモデル; プリロードされたモデルはagentsを通じて提供num_agents:agent_modelから作成されるエージェントの数 (デフォルト2),argsと独立して構成。agentsのみ提供された場合、その長さがエージェント数を決定tokenizer: 共有の tokenizer または 1 つ/エージェント; モデル識別子についてはオプション、プリロードされたモデルについては必須reward_func: 浮動小数点数のリストを返す関数 (必須)reward_processor: 報酬に適用するオプションなプロセッサ (例: スケーリング)formatters: プロンプトフォーマット用の単一関数またはエージェントごとに関数リストargs:MAGRPOConfigのインスタンス (オプション)train_dataset:train()を呼び出す際に必要なデータセットeval_dataset: 評価用データセット (任意)model_config: モデル構成辞書 (任意)wandb_config: Weights & Biases のログ構成 (任意)external_transition: ターン間の遷移を提供する関数;num_turns > 1(デフォルトは2) を使用する場合に必要eval_logger: 任意タスクメトリクスコールバック、eval_logger(agent_completions_turns=..., batch_items=..., prompts=...)で呼び出されます; 評価された各アイテムごとに 1 つのメトリクス辞書を返し、eval_aggregatorと共に使用eval_aggregator: 任意コールバック、eval_aggregator(metrics, num_turns=...)で呼び出されます; 戻されるturn_k/...のメトリクスはeval/でログされます。 評価用コールバックは両方とも提供する必要があります
MAGRPO はサンプルを rollout バッファに収集し、更新時にログ確率を再計算しますが、重要サンプリングや比率クリッピングは行いません。したがって、サンプルは、同じバッファまたは rollout ツリーからの以前の更新よりも古い可能性があります。trainer に critic モデルがないため、
value_clip_rangeは適用されません。
trainer は、固定された学習バッチサイズ 1 を使用し、
num_generations=2およびtrain_batch_size=rollout_buffer_sizeを含む、少なくとも DataLoader のサイズが必要です。 デフォルトでは、各エージェントは、1 つの最適化ステップでバッファされたノードサンプルの損失を平均します。 より小さなミニバッチは、複数の最適化ステップを生成します。 バッファの一部は、各 epoch の末尾でフラッシュされます。
その他のバリエーション#
CoMLRL は異なるベースラインを持つ他の MAREINFORCE バリエーションも提供します:
- MARLOO: マルチエージェント REINFORCE 1 つのノードのサンプルグループ内の他の世代の平均リターン、つまり他のエージェントの平均リターンをベースラインとして使用します。
- MAReMax: 複数エージェントの REINFORCE、グループ最大値 (
MAReMaxConfigおよびMAReMaxTrainer) を使用。ベースラインは、ノードでの最大サンプリングされたグループの戻り値です。この実装では、別個の貪欲なベースライン応答を生成しません。
MAREINFORCETrainer,MARLOOTrainer, およびMAReMaxTrainerは、以下から派生comlrl.trainers.reinforce.MAGRPOTrainer. それらの対応する構成クラスは継承MAGRPOConfig, デフォルト値でadvantage_mode値はraw,rloo, およびmax, それぞれ。それらは同じ trainer インターフェースと構成フィールド.
4 つの trainers は、共有された戻り値から引かれるベースラインのみが異なります。1 つのノード (\( K=4 \)) での共同応答の場合、アニメーションは正規化前の利点の比較を示しています: MAREINFORCE は元の戻り値を保持し、REINFORCE のようにします; MAGRPO はグループの平均を差し引きます (GRPO のように); MARLOO は他の \( K-1 \) の戻り値の平均を差し引きます (RLOO のように)、これは MAGRPO の利点を \( K/(K-1) \) でスケーリングします; および MAReMax はグループの最大値を差し引くため、どの応答にも正の利点はありません。
これらの変数の式は、正規化前の利点を記述しています。すべての変数は
advantage_normalization=Trueを継承し、元の戻り値と最大ベースラインの利点を再中心化します。標準偏差のフロアと数値精度を除き、4 つのモードは同じ正規化された利点を提供します。ユーザーは、上記のベースラインの違い (元の戻り値の推定値を含む MAREINFORCE) を維持するために、advantage_normalization=Falseを設定できます。