MADDPG(2017):多智能体确定性策略梯度方法
导出时间:2025/12/19 13:30:33
1、研究背景和动机
一、研究背景:为什么“多智能体”这么难?
1️⃣ 从“一个人玩游戏”到“一群人一起玩”
在单智能体强化学习里,你可以把问题想成:
一个人玩游戏,对手是“固定规则的世界”
比如:
- 打 Atari
- 控制一个机器人走路
👉 世界不变,你学得越久越稳
但在**多智能体强化学习(Multi-Agent RL)**中,情况变成:
你在玩游戏,而“世界里其他角色也在学习、也在变”
比如:
- 多个机器人一起搬东西
- 多个自动驾驶车在路口博弈
- 多人对抗/合作游戏
👉 环境 = 其他智能体 + 它们的策略
而这些策略:
- 一直在更新
- 不可预测
- 会反过来影响你
2️⃣ 核心困难一:环境“不稳定”(非平稳)
在传统强化学习中,有一个隐含前提:
环境的规律是稳定的
但在多智能体中:
你刚学会“队友 A 会往左走”,下一轮他升级了策略,改成“往右走”。
从你的视角看:
环境规则在不断变化
📌 这叫:Non-stationarity(非平稳性)
论文明确指出:
- Q-learning / DQN 在多智能体下理论假设被破坏
- 连最常用的**经验回放(Replay Buffer)**都会失效
3️⃣ 核心困难二:策略梯度“噪声爆炸”
另一类方法是策略梯度(Policy Gradient / Actor-Critic)。
但在多智能体下会出现一个非常反直觉的问题:
智能体越多,梯度越不靠谱
直观解释:
- 奖励是大家一起造成的
- 但你只知道自己干了什么
- 你不知道:
- 队友这次帮了你?
- 还是坑了你?
结果就是:
- 梯度里混进了大量“别人的随机性”
- 信噪比急剧下降
论文给出了一个数学结论:
当智能体数量增加时,梯度“方向是对的”的概率会指数级下降
可以理解为:
人一多,锅也多,你根本不知道该不该背锅
二、已有方法为什么不够?
在 MADDPG 之前,常见思路大致有三种:
❌ 1. 把每个智能体当“单独的 RL”
即:
“各学各的,互不关心别人”
问题:
- 完全忽略“别人也在学习”
- 非平稳性最严重
- 实验效果很差
❌ 2. 完全中心化(一个超级大脑)
把所有智能体当成一个整体
问题:
- 动作空间爆炸
- 不可扩展
- 执行时不现实(机器人没法共享全部信息)
❌ 3. 强假设通信结构 / 可微模型
假设:
- 有可微通信信道
- 有已知环境模型
问题:
- 假设太强
- 不适用于真实复杂场景
三、MADDPG 的核心动机(一句话版)
“训练时可以‘作弊’,执行时必须‘守规矩’”
展开来说就是:
训练时:
- 允许你看到“所有人的动作和信息”
- 让学习变简单、稳定
执行时:
- 每个智能体只能用自己的局部观察
- 仍然是完全分布式的
这就是 MADDPG 最核心的设计哲学。
四、关键思想:集中式训练,分布式执行
🎯 一个形象类比
想象你在打篮球:
- 训练时
- 教练能看到全场
- 回放录像
- 告诉你:“你刚才那个跑位是错的,因为队友在这”
- 比赛时
- 你只能看到自己附近
- 没人暂停给你讲解
👉 MADDPG 就是“有教练的训练 + 无教练的比赛”
🧠 技术上怎么做?
MADDPG 基于 Actor–Critic:
Actor(演员)
- 每个智能体一个
- 只看自己的观察
- 负责“我现在该怎么动”
Critic(评论家)
- 每个智能体一个
- 能看到所有智能体的动作 + 状态
- 负责判断:
- “在这种大家都这么干的情况下,你这一步好不好?”
关键点:
Critic 解决非平稳性和高方差问题 Actor 保证执行阶段仍然现实可用
论文中明确说明:
- 一旦把“其他智能体的动作”作为 Critic 输入
- 环境在训练中就重新变“稳定”了
五、MADDPG 想解决的“根本问题”
总结为三点动机:
✅ 1. 让多智能体学习变“稳定”
- 解决非平稳性
- 可以安全使用经验回放
✅ 2. 降低策略梯度的噪声
- 不再“替别人背锅”
- 梯度方向更可靠
✅ 3. 同时适用于
- 合作
- 竞争
- 混合博弈(既合作又对抗)
这是当时很多方法做不到的。
六、你可以这样记住 MADDPG
如果你是小白,可以记住一句非常“人话”的总结:
MADDPG =“训练时开上帝视角的 Actor–Critic,多人一起学;上线后各走各的,但已经学会怎么配合/对抗。”
2、模型的核心思想和网络结构
二、模型的核心思想(一句话版)
每个智能体:自己做决定(Actor),但有人站在“上帝视角”帮它打分(Centralized Critic)。
再浓缩一点:
“我只管怎么动;你来告诉我,在大家都这么动的情况下,我这一步好不好。”
三、核心思想拆解(非常重要)
1️⃣ 为什么要“分工”?
在多智能体里,如果一个智能体自己判断好坏,会遇到这个问题:
“我这一步失败了,是我不行,还是队友瞎跑?”
MADDPG 的回答是:
- 决策(Actor)要简单 → 只看自己
- 评价(Critic)要聪明 → 看全局
2️⃣ Actor 和 Critic 的“职责边界”
模块
| 作用
| 能看到什么
|
Actor(演员)
| 决定“我现在怎么动”
| 只看自己的观测
|
Critic(评论家)
| 判断“这一步值不值”
| 看所有人的状态 + 动作
|
这是 MADDPG 最核心、最精妙的设计。
四、一个强烈建议你记住的类比(篮球版)
想象 3 个人一起打篮球:
🏀 比赛中(执行阶段)
- 每个人只能看到:
- 球
- 离自己近的队友/对手
- 不能“暂停看回放”
👉 这就是 Actor
🎥 训练中(训练阶段)
- 教练:
- 看全场录像
- 知道每个人当时在干嘛
- 教练说:
- “你这个跑位不对,不是你慢,是队友已经切进来了”
👉 这就是 Centralized Critic
MADDPG =有教练的训练 + 没教练的实战