标准 DDPG 通常是单智能体连续动作强化学习算法;同时训练 actor 和 critic,并不表示有两个智能体。MADDPG 是面向多智能体情境的扩展。判断一段代码属于哪种设置,应查看环境决策者数量以及网络接收哪些观察和动作,不能只数神经网络个数。
actor 与 critic 是两种职责
在简化表示中,DDPG 的 actor 根据状态或观察给出连续动作 a = μ(o);critic 根据观察和动作估计 Q(o, a)。前者决定做什么,后者帮助评估这个动作。目标网络是用于训练稳定性的延迟参数副本,也不算新的环境行动者。

例如自拟的小车任务:一个控制器观察位置、速度,输出一个加速度。这仍是一个智能体,即使训练代码中存在 actor、critic、target actor 与 target critic 四个网络。
MADDPG 增加了什么信息
MADDPG 原论文采用集中训练、分散执行的思路:每个智能体有自己的 actor,训练时 critic 可以利用其他智能体的动作及额外信息;执行时 actor 根据自己的可用观察选择动作。是否集中训练,要看 critic 实际接收的输入,而不是文件名里有没有写“central”。
| 检查项 | 单智能体 DDPG 的简化形式 | MADDPG 的典型形式 |
|---|---|---|
| 环境行动者 | 一个控制器 | 多个各自选择动作的智能体 |
| actor 输入与输出 | 自身观察到自身动作 | 各自局部观察到各自动作 |
| critic 训练输入 | 观察与自身动作 | 额外观察信息与联合动作 |
| 执行依赖 | 一个策略的可用输入 | 各 actor 所需的本地输入 |
这张表概括的是算法思路,具体实现对状态、观察和奖励的定义可能不同,需要核对实现代码。
用字段清单检查自己的项目
先在环境的一步调用处列出动作。如果只有一个动作向量由一个策略输出,即使向量有多个维度,也可能只是单智能体控制多个执行器。若分别存在 agent_0 与 agent_1 的动作,再检查是否由两个策略决策,而非同一个集中控制器统一输出。
继续追踪 critic 的训练输入。例如下面只是数据字段示意,不是某库接口:
单智能体样本:observation, action, reward, next_observation
多智能体样本:observations_by_agent, actions_by_agent,
rewards_by_agent, next_observations_by_agent
agent_0 critic 输入示例:o_0, o_1, a_0, a_1
agent_0 actor 执行输入示例:o_0
核对办法是记录一次训练批次中各字段的形状、归属和来源,再检查执行时能否只使用 actor 所需的观察运行。不要为了匹配集中 critic,给执行端偷偷补上现实拿不到的其他智能体信息。
两种常见误判
第一种是“有多个 actor 就必然是 MADDPG”。如果每个 actor 独立配自己的 DDPG,没有联合信息的 critic,通常应描述为独立训练的多控制器设置,不能仅凭名称等同原论文。第二种是“使用多个并行环境就是多智能体”。并行采样可以是同一个单智能体策略同时玩多个环境,决策关系并没有因此变成多智能体。
本文不提供某框架的完整 MADDPG 训练代码,也没有测试协作收益。标准 DDPG 面向连续动作,不能直接把离散动作编号当成连续动作输出使用;算法变体与适配需单独确认。
算法定义依据 2026 年 10 月 3 日读取的 Spinning Up DDPG 说明与 Multi-Agent Actor-Critic 原论文。本文的小车与字段示意为自拟教学例子。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32967.html