多智能体深度强化学习:MAPPO、MADDPG 和 MASAC 的详细介绍
多智能体深度强化学习(Multi-Agent Deep Reinforcement Learning, MADRL)是一类方法,旨在解决多个智能体在动态环境中交互、学习和优化的问题。以下是三种主流算法:MAPPO、MADDPG 和 MASAC 的详细说明及伪代码。
1. MAPPO (Multi-Agent Proximal Policy Optimization)
核心思想
- MAPPO 是将单智能体的 PPO 算法扩展到多智能体场景。
- 利用共享的策略网络或集中值函数(Centralized Value Function)来支持集中训练分散执行(Centralized Training and Decentralized Execution, CTDE)框架。
- 能有效处理多智能体之间的协作任务,适用于离散和连续动作空间。
特点
- 稳定性强:通过裁剪策略更新幅度,防止梯度爆炸。
- 扩展性高:适用于多个智能体的协同优化。
- 共享策略:智能体可以共享策略,提升样本利用效率。
MAPPO 伪代码
# 初始化策略网络π(θ)、集中值函数V(ϕ)、经验回放缓冲区D
Initialize: Policy network π(θ), Centralized Value network V(ϕ), Replay buffer D
for each episode do
Initialize environment, get initial joint observation o_joint
for each time step t do
for each agent i do
Sample action a_i ~ π(o_i | θ)
end for
Execute joint action {a_1, ..., a_N}, observe reward r and next joint observation o'_joint
Store transition (o_joint, {a_1, ..., a_N}, r, o'_joint) in D
end for
for each training step do
Sample mini-batch of transitions from D
Compute advantage A = r + γV(o'_joint) - V(o_joint)
# 更新策略网络
Update θ using PPO clipped surrogate objective:
L(θ) = min(r(θ) * A, clip(r(θ), 1-ϵ, 1+ϵ) * A)
# 更新值函数
Update ϕ by minimizing value loss:
L(ϕ) = (r + γV(o'_joint) - V(o_joint))²
end for
end for
2. MADDPG (Multi-Agent Deep Deterministic Policy Gradient)
核心思想
- MADDPG 是 DDPG 的多智能体扩展版本,适用于连续动作空间。
- 每个智能体独立维护其策略(actor)和值函数(critic),但训练时利用全局信息(所有智能体的观测和动作)来更新 critic。
- 提供了合作和竞争场景的灵活性,尤其适合复杂的高维连续动作问题。
特点
- 集中训练:使用全局信息优化值函数。
- 分散执行:每个智能体仅依赖自身的观测执行决策。
- 高效学习:适合连续动作空间中多智能体的学习任务。
MADDPG 伪代码
# 初始化每个智能体的 actor π_i(θ_i)、critic Q_i(ϕ_i) 和经验缓冲区D
Initialize: Actor networks π_i(θ_i), Critic networks Q_i(ϕ_i) for each agent i
Initialize: Replay buffer D
for each episode do
Initialize environment, get initial observations {o_i} for agents i = 1, ..., N
for each time step t do
for each agent i do
Select action a_i ~ π_i(o_i | θ_i) + exploration_noise
end for
Execute actions {a_1, ..., a_N}, observe rewards {r_i} and next observations {o'_i}
Store transition ({o_i}, {a_1, ..., a_N}, {r_i}, {o'_i}) in D
end for
for each training step do
Sample mini-batch of transitions from D
for each agent i do
# 计算目标动作
Compute target actions {a'_j} using target actor π'_j
Compute target Q value:
y_i = r_i + γQ'_i(o'_i, {a'_1, ..., a'_N} | ϕ'_i)
# 更新 critic
Update ϕ_i by minimizing:
L(ϕ_i) = (Q_i(o_i, {a_1, ..., a_N} | ϕ_i) - y_i)²
# 更新 actor
Update θ_i using policy gradient:
∇_θ_i J(θ_i) = ∇_a Q_i(o_i, {a_1, ..., a_N}) ∇_θ π_i(o_i | θ_i)
end for
end for
end for
3. MASAC (Multi-Agent Soft Actor-Critic)
核心思想
- MASAC 是 SAC(Soft Actor-Critic)的多智能体扩展。
- 通过引入熵项(Entropy Term),鼓励智能体探索更广泛的策略空间。
- 适用于高维连续动作空间,能够处理合作和部分竞争的场景。
特点
- 熵正则化:通过最大化策略的熵,增强鲁棒性和探索能力。
- 灵活性强:支持部分合作和竞争任务。
- 高效训练:结合离线数据和在线学习,提升样本利用率。
MASAC 伪代码
# 初始化每个智能体的 actor π_i(θ_i)、critic Q_i(ϕ_i)、温度参数 α 和经验缓冲区 D
Initialize: Actor π_i(θ_i), Critic Q_i(ϕ_i), temperature α for each agent i
Initialize: Replay buffer D
for each episode do
Initialize environment, get initial observations {o_i} for agents i = 1, ..., N
for each time step t do
for each agent i do
Sample action a_i ~ π_i(o_i | θ_i) + exploration_noise
end for
Execute actions {a_1, ..., a_N}, observe rewards {r_i} and next observations {o'_i}
Store transition ({o_i}, {a_1, ..., a_N}, {r_i}, {o'_i}) in D
end for
for each training step do
Sample mini-batch of transitions from D
for each agent i do
# 计算目标 Q 值
Compute target actions {a'_j} using target actor π'_j
Compute target Q value:
y_i = r_i + γ * (Q'_i(o'_i, a'_i) - α log π'_i(a'_i | o'_i))
# 更新 critic
Update ϕ_i by minimizing:
L(ϕ_i) = (Q_i(o_i, a_i | ϕ_i) - y_i)²
# 更新 actor
Update θ_i using soft policy gradient:
∇_θ_i J(θ_i) = ∇_a [α log π_i(a | o) - Q_i(o, a)] ∇_θ π_i(o | θ_i)
# 更新温度参数
Adjust α to control entropy:
L(α) = -α * (log π_i(a | o) + target_entropy)
end for
end for
end for
对比与应用场景总结
特性 | MAPPO | MADDPG | MASAC |
---|---|---|---|
动作空间 | 离散或连续 | 连续 | 连续 |
探索机制 | 剪裁策略变化 | 添加噪声 | 最大化熵 |
适用场景 | 多智能体协作任务 | 连续动作的合作或竞争任务 | 高维连续动作场景,鼓励探索 |
训练框架 | CTDE | CTDE | CTDE |
优点 | 稳定性高,适合复杂任务 | 高效学习,适合竞争场景 | 强探索性,适合复杂协作场景 |
参考方向
这三种算法的设计各有侧重,可根据具体任务选择。MAPPO 更适合协作性任务;MADDPG 针对竞争任务表现优异;MASAC 适合高维连续动作的复杂任务,特别是需要平衡探索和利用的场景。