多智能体强化学习:MADDPG算法原理与实践
1. 多智能体强化学习的关键挑战
在传统的单智能体强化学习(RL)环境中,智能体通过与固定环境互动来学习最优策略。但当多个智能体同时存在时,环境会因其他智能体的行为而动态变化,这带来了三个核心难题:
环境非平稳性:每个智能体的策略都在持续更新,导致其他智能体感知的环境状态转移概率不断变化。用数学表达,对于智能体i,其状态转移函数P(s'|s,a_i)在单智能体场景中是固定的,但在多智能体场景中变为P(s'|s,a_i,a_-i),其中a_-i表示其他智能体的联合动作。
信用分配问题:当多个智能体共同获得团队奖励时,难以确定每个个体的贡献程度。例如在足球比赛中,虽然进球得分是团队成果,但需要区分传球者、助攻者和射门者的各自贡献。
策略收敛困难:独立学习的智能体容易陷入"策略震荡"——当一个智能体改变策略时,其他智能体需要重新适应,形成恶性循环。这类似于金融市场中交易算法之间的相互影响。
经典案例:在简单的网格世界追逐游戏中,两个独立训练的DQN智能体追捕目标时,会出现"绕圈跑"现象——因为每个智能体都试图优化自己的即时奖励,而忽略了协作堵截的最优策略。
2. MADDPG算法架构解析
2.1 核心设计思想
MADDPG(Multi-Agent Deep Deterministic Policy Gradient)采用"集中训练,分散执行"的范式,其创新点主要体现在:
集中式Critic设计:每个智能体的Q函数接收全局状态s和所有智能体的联合动作(a_1,...,a_N)作为输入,但在执行时仅需要本地观察o_i。这种设计在训练时提供全局信息,而在实际部署时保持分布式执行的可行性。
策略集成训练:在训练阶段,每个智能体不仅学习自己的策略,还维护其他智能体策略的估计版本。具体实现是通过经验回放池存储元组(s,o_1,...,o_N,a_1,...,a_N,r_1,...,r_N,s'),其中包含所有智能体的观察和动作。
参数共享机制:对于同质化智能体(如无人机群),可以采用共享的Actor-Critic网络参数,大幅降低训练复杂度。此时需要为每个智能体添加可区分的ID编码作为网络输入。
2.2 算法数学表述
对于N个智能体,MADDPG的目标函数可表示为:
J(θ_i) = 𝔼[Q_i^π(s,a_1,...,a_N)|a_i=π_i(o_i)]
其中Q_i^π是智能体i的集中式动作价值函数,π={π_1,...,π_N}是所有智能体的策略集合。对应的梯度更新为:
∇θ_i J(θ_i) ≈ 𝔼[∇θ_i π_i(a_i|o_i) ∇a_i Q_i^π(s,a_1,...,a_N)|a_i=π_i(o_i)]
Critic的更新采用TD误差最小化:
L(φ_i) = 𝔼[(Q_i^π(s,a_1,...,a_N) - y)^2] y = r_i + γ Q_i^π'(s',π'_1(o'_1),...,π'_N(o'_N))
其中π'和Q'表示目标网络参数,通过软更新(τ通常取0.01)保持训练稳定性: θ'_i ← τθ_i + (1-τ)θ'_i
3. 关键实现细节
3.1 网络结构设计
典型实现包含以下组件:
Actor网络:
- 输入层:智能体局部观察o_i(如LIDAR数据)
- 隐藏层:3层全连接(256-128-64单元)
- 输出层:动作空间维度(tanh激活)
- 批归一化层:加速训练收敛
Critic网络:
- 状态输入分支:全局状态s(如地图信息)
- 动作连接层:所有智能体动作的拼接
- 特征融合层:多层感知机输出Q值
实际编码建议:使用LayerNormalization替代BatchNorm,因为多智能体场景中batch内样本差异可能很大。
3.2 经验回放优化
针对多智能体特点的特殊处理:
优先级采样:对包含重要交互事件的transition(如碰撞、合作成功)赋予更高采样概率。采用如下优先级计算:
p_i = |δ_i| + ε + c*N_i
其中δ_i是TD误差,N_i是该transition被采样次数,c是衰减系数。
轨迹切片存储:存储连续K步的transition片段(通常K=10),便于学习时序依赖。这在追捕任务中尤为重要,因为策略往往需要多步配合。
重要性加权:对不同智能体的experience进行非均匀采样,对表现较差的智能体给予更多训练机会。
4. 实战调参技巧
4.1 超参数设置基准
基于PyTorch实现的典型配置:
| 参数 | 推荐值 | 作用说明 |
|---|---|---|
| γ | 0.95-0.99 | 折扣因子,长期任务取较高值 |
| τ | 0.01-0.05 | 目标网络更新系数 |
| buffer_size | 1e6-5e6 | 经验回放池大小 |
| batch_size | 512-1024 | 批处理大小 |
| lr_actor | 1e-4-5e-4 | Actor学习率 |
| lr_critic | 5e-4-1e-3 | Critic学习率 |
| noise_scale | 0.1-0.3 | 动作探索噪声幅度 |
| noise_decay | 0.9995-0.9999 | 噪声衰减率 |
4.2 训练稳定技巧
梯度裁剪:对Critic网络的梯度进行L2范数限制(通常设1.0),防止因多个智能体耦合导致的梯度爆炸。
策略延迟更新:每更新Critic网络d次(d通常取2-5)才更新一次Actor网络,这在竞争性环境中尤为重要。
探索策略:采用自适应噪声方案:
- 初始阶段:高噪声鼓励探索(σ_init=0.5)
- 中期:按指数衰减(σ_decay=0.999)
- 后期:保持基础噪声(σ_min=0.05)
多阶段课程学习:
- 阶段1:固定其他智能体,训练单个智能体基础能力
- 阶段2:逐步增加活跃智能体数量
- 阶段3:全量智能体联合训练
5. 典型问题诊断
5.1 性能下降场景排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 回报震荡 | 智能体间策略冲突 | 增加Critic网络容量 |
| 收敛至次优解 | 探索不足 | 调整噪声参数或采用ε-greedy |
| 训练速度慢 | 信用分配不清 | 设计差异奖励函数 |
| 过拟合 | 样本相关性高 | 增大回放缓冲区 |
5.2 实际部署注意事项
通信延迟补偿:在分布式执行时,若存在通信延迟Δt,需要在策略网络中加入时间序列建模(如LSTM层)来预测其他智能体的状态。
异构智能体处理:当智能体能力不同时(如速度、传感范围差异),应在Critic输入中加入智能体类型编码。
可扩展性优化:对于大规模智能体群(N>50),可采用以下技术:
- 邻居注意力机制:只关注邻近智能体
- 参数共享分组:将智能体划分为多个同质组
- 层次化Critic:局部Q函数与全局Q函数结合
6. 进阶应用方向
混合合作-竞争场景:在足球等既有合作又有竞争的环境中,可采用分层MADDPG:
- 高层策略:团队协作目标
- 底层策略:个体动作控制
部分可观测扩展:当全局状态不可获取时,使用变分自编码器(VAE)从局部观察重构潜在状态表示。
迁移学习应用:
- 跨任务迁移:在模拟器中训练后迁移到真实机器人
- 智能体数量扩展:用小规模训练的策略初始化大规模系统
结合图神经网络:用GNN建模智能体间的拓扑关系,特别适用于交通控制等场景。此时Critic网络可替换为Graph Attention网络。
