본문으로 이동
CoMLRL
Multi-LLM RL

다중 에이전트 Actor-Critic

translategemma:4b 자동 번역 영어 원문

Actor-Critic (AC) 방법은 널리 사용되는 정책 경사 방법으로, critics을 사용하여 훈련을 지원합니다. AC 방법은 REINFORCE보다 낮은 분산을 얻고 샘플 효율성을 개선할 수 있지만, 이를 위해서는 안정적인 훈련을 보장하기 위해 critic을 신중하게 설계하고 조정해야 합니다. 다중 에이전트 강화 학습 (MARL)에서, Actor-Critic 방법에는 다중 에이전트 Actor-Critic (MAAC) 및 독립 에이전트 Actor-Critic (IAC)가 포함됩니다.

두 방법 모두 에이전트를 공동으로 실행하고 공동 응답을 보상 함수로 평가하지만, critics을 다르게 사용합니다. MAAC은 공동 기록에 대해 하나의 critic을 훈련하여 모든 에이전트가 동일한 TD 오류를 공유합니다. IAC은 각 에이전트에 대해 해당 에이전트의 기록에 대해 하나의 critic을 훈련하여 각 에이전트가 자체 TD 오류를 갖도록 합니다.

Actor-critic 훈련 흐름 MAAC의 중앙 집중식 critic은 모든 에이전트에 동일한 TD 오류를 제공합니다; IAC의 독립적인 critics은 각 에이전트에 자신만의 오류를 제공합니다.

MAAC#

다중 에이전트 Actor-Critic (MAAC)는 에이전트 간에 중앙 집중식 Critic (CC)를 사용하여 공통 응답의 값을 평가합니다. 이는 \( V_{\boldsymbol{\phi}}(\mathbf{h}_t) \) 및 critic_type="v" 또는 공통 역사-행동 쌍 \( Q_{\boldsymbol{\psi}}(\mathbf{h}_t, \mathbf{a}_t) \) 및 critic_type="q"과 함께 수행됩니다. critic는 에이전트의 프롬프트를 단일 텍스트 시퀀스로 결합하여 받습니다. Q 모드는 생성된 완료도 포함합니다. 각 에이전트의 정책 경사는 다음과 같습니다:

\[ \nabla_{\theta_i} J(\theta_i) = \mathbb{E}_{\boldsymbol{\pi}}\left[\sum_{t=0}^{H-1} \nabla_{\theta_i} \log \pi_{\theta_i}(a_{i,t}|h_{i,t})\,\boldsymbol{\delta}_t\right] \]

여기서 \( \boldsymbol{\delta}_t = r_t + \gamma V_{\boldsymbol{\phi}}(\mathbf{h}_{t+1}) - V_{\boldsymbol{\phi}}(\mathbf{h}_{t}) \)이고, critic은 다음과 같이 업데이트됩니다:

\[ \mathcal{L}(\boldsymbol{\phi}) = \mathbb{E}_{\boldsymbol{\pi}}\left[\sum_{t=0}^{H-1} \big(r_t + \gamma V_{\phi}(\mathbf{h}_{t+1}) - V_{\phi}(\mathbf{h}_{t})\big)^2\right]. \]

여기에 \( r_t \) 다음은 선택적으로 참조를 포함한 처리된 보상이 있습니다-KL 활성화되면 벌금이 차감됩니다; 보상은 여러 에이전트 간에 공유하거나 각 에이전트에 공급될 수 있습니다. 최종 수집된 턴, 조기 종료되었거나 단 턴인 경우 포함 rollout, 보상을 유일한 목표로 사용하며, 초기화 없이 사용합니다. 완료 로그 확률은 생성된-token 로그 확률의 합입니다; 프롬프트 및 후행 패딩 tokens 제외됩니다. 손실은 샘플별로 평균됩니다. 버퍼는 업데이트하기 전에 에이전트 및 턴별로 그룹화되며 advantage_normalization 각 그룹 내의 TD 오류를 정규화합니다. 목표 및 이점은 업데이트 중에 고정됩니다. 공유된 critic 각 에이전트의 배치와 순차적으로 업데이트되며 value_loss_coef 손실을 스케일링합니다.

Q 모드에서, 구현은 동일한 TD-잔류 actor 가중치를 사용하며, 부스팅에 샘플링된 다음 액션을 사용합니다. Q 또는 상태만으로 가중된 별도의 actor 목표를 구현하지 않습니다.

MAACConfig 매개변수
  • num_agents: 에이전트 수
  • num_turns: 턴 수
  • critic_type: Critic 목표 유형 (v는 V(h)용, q는 Q(h,a)용)
  • num_train_epochs: 훈련용 epochs 수
  • agent_learning_rate: 에이전트의 학습률
  • critic_learning_rate: 공유된 critic의 학습률
  • value_loss_coef: critic 손실에 대한 가중치
  • advantage_normalization: 업데이트 전에 이점을 정규화할지 여부
  • rollout_buffer_size: 각 업데이트 전에 수집할 샘플 수
  • train_batch_size: 각 업데이트 내 미니 배치 크기
  • max_new_tokens: 완료당 생성할 최대 tokens 수
  • temperature: 샘플링용 온도
  • top_p: 핵 샘플링용 Top-p
  • top_k: 샘플링용 Top-k
  • num_generations: 각 프롬프트당 에이전트당 생성 횟수
  • external_prompt_passthrough: 다중 턴 훈련에서 외부 프롬프트를 직접 사용하는지 여부
  • discount: 다음 턴의 critic 예측에 대한 할인 계수, TD 대상에서 기록된 expected_return은 할인되지 않은 보상 합계를 사용
  • early_termination_threshold: 턴의 평균 처리된 보상이 이 임계값을 초과하면 rollout이 종료됨; None은 조기 중지를 비활성화
  • eval_interval: 평가 간격 (학습 배치 단위)
  • eval_num_samples: 간격당 평가 샘플 수
  • eval_batch_size: DataLoader 배치 크기 평가
  • logging_steps: 공동 작용 보상 평가의 최소 횟수 (학습 메트릭 로그)
  • parallel_training: none 단일 장치 또는 mp 명시적 에이전트/critic 장치 배치
  • agent_devices, critic_devices: 장치 할당, mp 모드에서 필요
  • reference_kl_enabled, reference_kl_coef: 동결된 참조 KL 보상 페널티 활성화 여부 및 가중치 (기본적으로 비활성화)
  • reference_devices: 참조 모델에 대한 선택적 장치 배치
MAACTrainer 매개변수
  • agent_model 또는 agents: 동종 에이전트의 Actor 모델 식별 문자열, 또는 에이전트 모델 목록 (다중 에이전트 agent_model는 문자열이어야 함)
  • critic_model 또는 critics: 필요한 단일 공유 critic, 식별자, 모델 인스턴스 또는 1개 요소 목록으로 제공
  • tokenizer: 공유 tokenizer 또는 agents를 사용하는 경우 에이전트별 목록, agents 또는 모델 인스턴스와 함께 필요, 그렇지 않으면 agent_model에서 로드
  • reward_func: 보상을 반환하는 콜러블 (필수)
  • reward_processor: 선택적 보상 후처리
  • formatters: 단일 콜러블 또는 에이전트별 프롬프트 형식화에 대한 목록
  • args: MAACConfig의 인스턴스 (선택 사항)
  • train_dataset: 학습 데이터셋 (필수)
  • eval_dataset: 선택 사항 평가 데이터셋
  • model_config: 모델 로딩 옵션; critic_value_head_hidden_dim는 중앙 집중식 critic의 value head를 구성 (선택 사항)
  • wandb_config: Weights & Biases 로깅 구성 (선택 사항)
  • metrics_callback: 선택 사항 콜백 함수로 rollout 샘플을 가져와 스칼라 지표의 딕셔너리를 반환
  • external_transition: num_turns > 1에서 필요한 트랜지션 함수

MAAC는 수집된 샘플에 대해 중요 샘플링 또는 정책 비율 클리핑 없이 업데이트합니다. MAACConfig에는 value_clip_range 옵션이 없습니다. 공유된 critic는 첫 번째 에이전트의 tokenizer를 사용하며, 이는 critic 모델과 호환되어야 합니다.

trainer는 고정된 학습 DataLoader 배치 크기 1을 사용합니다. num_turns > 1, external_transition 및 num_generations=1가 필요합니다. train_batch_size는 기본적으로 rollout_buffer_size로 설정되며, 실제 업데이트는 각 에이전트/턴 그룹의 사용 가능한 샘플을 사용하며, 버퍼가 플러시될 때 더 작은 그룹도 사용합니다.

IAC#

독립적인 Actor-Critic (IAC)는 여러 에이전트의 공동 응답을 사용하여 각 에이전트의 정책을 독립적으로 최적화합니다. 각 에이전트는 자체 actor 및 critic를 유지하며, 다른 에이전트는 환경의 일부로 사용됩니다. 보상은 공유하거나 에이전트별로 설정할 수 있습니다. critic는 V 모드에서 해당 에이전트의 프롬프트/역사를 기반으로 하거나, Q 모드에서 프롬프트 및 완료를 기반으로 합니다. 각 에이전트의 정책 경사는 다음과 같습니다:

\[ \nabla_{\theta_i} J(\theta_i) = \mathbb{E}_{\boldsymbol{\pi}}\left[\sum_{t=0}^{H-1} \nabla_{\theta_i} \log \pi_{\theta_i}(a_{i,t}|h_{i,t})\,\delta_{i,t}\right] \]

어디 \( \delta_{i,t} = r_t + \gamma V_{\phi_i}(h_{i,t+1}) - V_{\phi_i}(h_{i,t}) \). The actor 동일한 샘플 평균 손실 및 완료를 사용-token 합계로 MAAC, 각 에이전트/턴 그룹 내에서 선택적 정규화를 포함합니다. Q-모드 actor 또한 이를 사용합니다 TD 오류.

CoMLRL는 다음 두 가지 IAC 변형을 지원합니다:

  • 독립적인 Critic 사용: 가치 추정을 위한 별도의 모델을 사용합니다. Actor 및 critic 매개변수는 개별적으로 최적화되므로, 각 에이전트에 대한 추가 모델을 저장하는 비용이 발생합니다.

  • 공유 모델: 작은 value head를 트랜스포머 backbone에 연결하여 actor 모델의 히스토리(또는 히스토리-액션) 표현을 공유하여 공간 요구 사항을 줄입니다.

critics는 다음 TD 오류를 최소화하여 업데이트됩니다:

\[ \mathcal{L}(\phi_i) = \mathbb{E}_{\boldsymbol{\pi}}\left[\sum_{t=0}^{H-1} \big(r_t + \gamma V_{\phi_i}(h_{i,t+1}) - V_{\phi_i}(h_{i,t})\big)^2\right]. \]

공유 모델(use_separate_critic=False)을 사용하는 경우, actor 및 value head는 actor 손실과 critic 손실을 value_loss_coef로 가중하여 최적화합니다. value_clip_range=None가 아닌 경우, 학습 안정성을 개선하기 위해 값 클리핑이 적용됩니다:

\[ L(\phi_i) = \max\Big( (V_{\phi_i}(h_t) - \hat{V}_t)^2,\ (V_{\phi_i}^{\text{clip}}(h_t) - \hat{V}_t)^2 \Big) \\ V_{\phi_i}^{\text{clip}}(h_t) = V_{\phi_i}^{\text{old}}(h_t) + \mathrm{clip}(V_{\phi_i}(h_t) - V_{\phi_i}^{\text{old}}(h_t), -\epsilon, \epsilon), \]

여기서 \( \hat{V}_t \)는 TD 대상, \( \epsilon \)는 value_clip_range이고, 오류는 미니 배치에 걸쳐 평균됩니다. 독립형 critics는 클리핑되지 않은 제곱 오류를 사용합니다.

IACConfig 매개변수
  • num_agents: 에이전트 수
  • num_turns: 턴 수
  • num_train_epochs: 훈련 epochs 수
  • agent_learning_rate: 에이전트 학습률
  • critic_learning_rate: 독립형 critics의 학습률; 공유 모델은 agent_learning_rate를 actor 및 value head 모두에 사용
  • value_loss_coef: 값 손실에 대한 계수
  • value_clip_range: 공유 모델 모드에서 값 클리핑 범위; None는 클리핑을 비활성화
  • advantage_normalization: 이점 정규화 여부
  • rollout_buffer_size: 업데이트 전에 수집할 샘플 수
  • train_batch_size: 정책 업데이트에 대한 미니 배치 크기
  • max_new_tokens: 생성할 최대 새로운 tokens
  • temperature: 샘플링에 대한 온도
  • top_p: 핵심 샘플링에 대한 Top-p
  • top_k: 샘플링에 대한 Top-k
  • num_generations: 각 프롬프트당 에이전트당 생성할 세대의 수
  • use_separate_critic: 별도의 critic 모델 사용 여부
  • critic_type: Critic 대상 유형 (v는 V(h)에 대한, q는 Q(h,a)에 대한)
  • critic_value_head_hidden_dim: critic 및 value head 에 대한 숨겨진 차원
  • value_head_hidden_dim: 공유 모델 모드에서 value head 에 대한 숨겨진 차원
  • external_prompt_passthrough: 다중 턴 훈련에서 외부 프롬프트를 직접 사용하는지 여부
  • discount: TD 목표에 대한 할인 계수; expected_return 는 할인되지 않은 보상 합계를 사용
  • early_termination_threshold: rollout 는 특정 턴의 평균 처리된 보상이 이 임계값을 초과할 때 종료됩니다; None 는 조기 중단을 비활성화
  • eval_interval: 평가 간격 (학습 배치 단위)
  • eval_num_samples: 간격당 평가 샘플 수
  • eval_batch_size: 평가 DataLoader 배치 크기
  • logging_steps: 학습 메트릭 로그 간 최소 공동 액션 보상 평가 횟수
  • parallel_training: none 단일 장치 또는 mp 명시적 에이전트/critic 장치 배치
  • agent_devices, critic_devices: 장치 할당; mp 는 agent_devices 및, 별도의 critics 에 대해서는 critic_devices 를 필요로
  • reference_kl_enabled, reference_kl_coef: 동결된 참조 KL 보상 벌의 활성화 여부 및 가중치 (기본적으로 비활성화)
  • reference_devices: 참조 모델에 대한 선택적 장치 배치
IACTrainer 매개변수
  • agent_model 또는 agents: 동종 에이전트의 모델 식별 문자열, 또는 에이전트 모델 목록 (다중 에이전트 agent_model는 문자열이어야 함)
  • critic_model 또는 critics: Critic 식별자, 모델 인스턴스, 또는 critic 모델 목록 (use_separate_critic=True 사용 시)
  • tokenizer: 공유된 tokenizer, 또는 agents를 사용하는 경우 에이전트별 목록; agents 또는 모델 인스턴스와 함께 필요, 그렇지 않으면 agent_model에서 로드
  • reward_func: 부동 소수점 숫자 목록을 반환하는 콜러블 (필수)
  • reward_processor: 보상에 적용할 선택적 프로세서
  • formatters: 데이터 세트 항목을 프롬프트로 변환하기 위한 단일 콜러블 또는 에이전트별 콜러블 목록
  • args: IACConfig 인스턴스 (선택 사항)
  • train_dataset: 훈련 데이터 세트 (필수)
  • eval_dataset: 평가 데이터 세트 (선택 사항)
  • model_config: 모델 구성 딕셔너리 (선택 사항)
  • wandb_config: Weights & Biases 로깅 구성 (선택 사항)
  • metrics_callback: rollout 샘플을 가져와 스칼라 메트릭의 딕셔너리를 반환하는 선택 사항 콜백
  • external_transition: 다중 턴 훈련에 필요한 선택 사항 전이 함수

IAC 는 중요 샘플링 또는 정책-비율 클리핑 없이 수집된 샘플에 대한 업데이트를 수행합니다. 공유 모델 모드 (use_separate_critic=False) 에서, value heads 는 actor 모델에 연결되며, critic_model 또는 critics 를 전달하면 오류가 발생하고, value_clip_range 는 이 모드에서만 적용됩니다. 에이전트는 동종 또는 이종일 수 있습니다. 별도의 critic 모드 (use_separate_critic=True) 에서, 사용자는 critics 길이 num_agents 의 목록 또는 단일 critic_model 소스를 사용하여 브로드캐스팅할 수 있습니다. 서로 다른 모델 인스턴스 또는 각 critic 에 대해 별도로 로드된 식별자는 독립적인 매개변수를 유지하며, 미리 로드된 모델 객체를 브로드캐스팅하면 해당 매개변수를 재사용합니다. 각 critic 는 actor 의 token IDs 를 소비하므로, 다른 critic 모델은 해당 actor 의 tokenizer 와 호환되어야 합니다.

The trainer 고정된 훈련을 사용합니다 DataLoader 배치 크기가 1입니다. For num_turns > 1, an external_transition 그리고 num_generations=1 필요합니다. train_batch_size 기본값으로 rollout_buffer_size; 실제 업데이트는 각 에이전트/턴 그룹의 사용 가능한 샘플을 활용하며, 버퍼가 비워질 때 더 작은 그룹도 포함합니다..