图解强化学习 |手算MADDPG

简介: MADDPG是一种多智能体强化学习算法,采用“集中式训练、分布式执行”框架:各智能体拥有独立Actor网络(基于局部观测输出连续动作),共享一个Critic网络(利用全局状态与联合动作评估Q值)。通过双网络结构(主网+目标网)和软更新机制,提升训练稳定性,有效缓解多智能体环境的非平稳性问题。(239字)

MADDPG算法的基础认识

采用集中式训练、分布式执行框架,解决多智能体环境非平稳问题

每个智能体拥有独立 Actor;所有智能体共享全局信息训练 Critic

继承 DDPG 确定性策略 + 双网络(主网络 + 目标网络)软更新,训练稳定

image.gif


MADDPG的网络结构

策略网络:Actor(主策略网络)

数量:3 个(Agent0 / Agent1 / Agent2 各 1 个,参数相互独立)

网络类型:全连接神经网络,确定性策略(输出连续动作,非概率分布)

输入:单个智能体局部观测,维度 = 18

               内容:自身速度、自身位置、地标相对位置、其他智能体相对位置、通信向量

输出:单个智能体连续动作,维度 = 5

               对应动作:无动作、左移、右移、下移、上移 的连续控制量,值域 ([0,1])

功能与工作流程

环境交互阶段:接收自身 18 维观测,直接输出 5 维动作;训练时叠加高斯噪声做探索,再截断到

合法区间。

网络更新阶段:拆分全局 54 维状态,分段送入对应 Actor,生成新动作用于计算 Actor 损失。

特点:只关心自己的观测,不感知全局信息,保证部署时分布式运行。

image.gif

价值网络:Critic(主价值网络)

数量:1 个(3 个智能体全局共享,唯一的价值评估网络)

输入:

全局联合状态:54 维

来源:3 个智能体的局部观测直接拼接(18* 3 = 54),包含所有智能体位置、速度、相对地标、相对

队友等全部全局信息。

全局联合动作:15 维

来源:3 个智能体的动作直接拼接 (5*3 = 15),包含所有智能体当前执行的动作。

输出

输出:1 维标量 Q 值

含义:评估「当前全局状态 + 所有智能体联合动作」能获得的长期累积回报,分数越高代表当前

行为越优。

功能与工作流程

训练核心:唯一负责打分的网络,是连接所有智能体的桥梁。

计算 Critic 损失:拟合 TD 目标,让 Q 值预测更精准。

指导 Actor 更新:以 Q 值为依据,引导所有 Actor 朝着 “提升全局回报” 的方向优化。

特点:全局视角,能感知智能体之间的协作、碰撞关系,解决多智能体环境非平稳问题。

image.gif

策略网络:Target Actor(目标策略网络)

基础信息

数量:3 个,和主 Actor 一一对应

结构:和对应主 Actor完全一致(层数、神经元、激活函数、维度全相同)

参数来源:不独立训练,仅由主 Actor软更新同步参数

输入 & 输出

和主 Actor 完全一致:

输入:单智能体局部观测(18 维)

输出:单智能体连续动作(5 维)

功能与工作流程

仅用于训练阶段,环境交互 / 部署时不使用。

作用:生成下一时刻目标动作,配合 Target Critic 计算 TD 目标,切断梯度、平滑训练,防止单步

更新幅度过大导致震荡、发散。

更新规则(软更新)

价值网络:Target Critic(目标价值网络)

数量:1 个,和主 Critic 成对存在

结构:和主 Critic 完全一致,输入 69 维,输出 1 维 Q 值

参数来源:由主 Critic 软更新同步,不单独反向传播训练

输入 & 输出和主 Critic 完全一致:全局状态 (54) + 联合动作 (15) → 输出 Q 值

功能与工作流程

仅训练阶段使用,专门计算TD 目标值 y。

输入:下一时刻全局状态 + 所有 Target Actor 生成的下一时刻联合动作。

更新规则:和 Target Actor 共用一套软更新公式

网络名称 数量 输入维度 输出维度 训练 / 更新方式 运行阶段
Actor(主) 3 18(局部观测) 5(动作) 反向传播梯度更新 交互 + 训练
Target Actor 3 18(局部观测) 5(动作) 软更新(跟随主 Actor) 仅训练
Critic(主) 1 69(全局拼接) 1(Q 值) 反向传播梯度更新 仅训练
Target Critic 1 69(全局拼接) 1(Q 值) 软更新(跟随主 Critic) 仅训练

网络更新

策略网络:Actor(主策略网络)

image.gif

价值网络:Target Critic(目标价值网络)

image.gif

image.gif

其它网络

image.gif

image.gif


手动计算

agent_0_Actor(主策略网络)

输入观测(18 维):

[ -0.122, -0.156, -0.343, 0.371, 0.590, -0.136,
  0.622, -0.635, -0.316, -0.383, -0.077, -0.410,
  0.080, -1.219, 0,0,0,0 ]

image.gif

Actor 生成动作

[0.21, 0.77, 0.34, 0.11, 0.89]

image.gif

最终的动作

[0.23, 0.74, 0.35, 0.09, 0.93]

image.gif

主价值网络

states = 全局状态 54 维

3 个智能体观测拼在一起:

states = [
    # agent_0 (18维)
    -0.122, -0.156, -0.343, 0.371, 0.590, -0.136,
    0.622, -0.635, -0.316, -0.383, -0.077, -0.410,
    0.080, -1.219, 0, 0, 0, 0,
    
    # agent_1 (18维)
    0.175, 0.145, -0.420, -0.039, 0.667, 0.274,
    0.699, -0.224, -0.239, 0.026, 0.077, 0.410,
    0.157, -0.808, 0, 0, 0, 0,
    
    # agent_2 (18维)
    -0.028, 0.555, -0.263, -0.847, 0.510, 1.083,
    0.542, 0.583, -0.396, 0.835, -0.080, 1.219,
    -0.157, 0.808, 0, 0, 0, 0
]

image.gif

actions = 全局动作 15 维    3 个智能体动作拼在一起:

actions = [
    # agent_0 (5维)
    0.23, 0.74, 0.35, 0.09, 0.93,
    
    # agent_1 (5维)
    0.44, 0.12, 0.88, 0.56, 0.23,
    
    # agent_2 (5维)
    0.65, 0.33, 0.21, 0.90, 0.10
]

image.gif

rewards = 1 个数字

全局奖励:

rewards = [-0.791]

image.gif

目标策略网络和目前价值网络的输入输出和上面类似

损失函数的计算

一步全局局面(54) + 下一步全局动作(15) → 送入 Target Critic → 得到未来奖励 q_ → 如果

结束,q_=0 → 最终标准答案 target = 当前奖励 + 0.99×q_

q_ = self.target_critic(next_states, next_actions).view(-1)
q_[dones] = 0.0
target = rewards + self.gamma * q_

image.gif

target = 0.398 + 0.99 * 0.0
target = 0.398

image.gif

计算评论家网络的损失

critic_loss = F.mse_loss(q, target)

image.gif

MSE = (预测值 - 标准答案)² 的平均值

计算评论家网络的损失

critic_loss = F.mse_loss(q, target)

image.gif

MSE = (预测值 - 标准答案)² 的平均值

预测分数 q = 0.42

标准答案 target = 0.398

误差 = 0.022

误差平方 = 0.000484

critic_loss = 0.000484

Actor 损失的计算

Actor 训练:让动作获得更高的分数,所以 loss 是负的 Q 值!

actor_loss = -torch.mean( 评论家对当前动作的打分 Q )

假设有5个样本的话:

5个Q值:[0.85, 1.20, 0.45, 0.90, 1.10]

求和:0.85+1.2+0.45+0.9+1.1 = 4.5

平均值:4.5 / 5 = 0.9        actor_loss = -0.9

目录
相关文章
|
安全 架构师
【企业架构】什么是 TOGAF? 企业架构方法论
【企业架构】什么是 TOGAF? 企业架构方法论
|
5月前
|
机器学习/深度学习 存储 人工智能
图解人工智能的数学基础(线性代数)
本文系统讲解线性代数核心概念,涵盖向量(定义、几何/坐标表示、内积)、矩阵(含义、运算、秩、逆、相似、分解)、行列式(几何意义与变换关系)、线性方程组、特征值与特征向量、二次型、向量空间及范数等,强调其在AI与神经网络中的实际应用。
648 7
|
5月前
|
机器学习/深度学习 人工智能 算法
图解强化学习 |手算近端策略优化算法(PPO)
PPO(近端策略优化)是当前最主流的强化学习算法,以训练稳定、上手简单、泛化性强著称。它通过Actor-Critic双网络架构,结合PPO-Clip损失函数限制策略更新幅度,并利用GAE优势估计提升样本效率,广泛应用于游戏AI、机器人控制、大模型对齐等领域。
1346 3
|
5月前
|
机器学习/深度学习 算法 机器人
图解强化学习 |手算SAC算法
SAC(Soft Actor-Critic)是最稳定、强大的连续动作强化学习算法,广泛应用于机器人控制与决策任务。其核心是最大熵强化学习:通过双Q网络抑制过估计,柔性策略网络增强探索,自适应温度系数α动态平衡利用与探索,兼顾最优性与鲁棒性。(239字)
805 1
|
5月前
|
前端开发 安全 Java
【AgentScope Java新手村系列】(12)计划模式
计划模式 — enablePlanMode() 让 LLM 强制先写计划再执行,内置 plan_enter/write/exit 与 todo_write 工具。
573 0
|
7月前
|
数据采集 SQL 数据管理
数据治理不是“做报表”:从混乱到可控,我是怎么把一家公司数据救活的?
数据治理不是“做报表”:从混乱到可控,我是怎么把一家公司数据救活的?
374 0
|
9月前
|
人工智能 自然语言处理 算法
企业如何把智能客服系统用好?(2026年2月)
瓴羊Quick Service是阿里旗下新一代AI智能客服,深度融合大模型与业务场景,具备深度语义理解、动态知识图谱、情感感知、全渠道协同、对话数据分析及低代码配置六大能力,让客服真正“会思考、懂业务、有温度”,助力企业提升服务效能与客户价值。(239字)
空口资源 | 带你读《5G 空口设计与实践进阶 》之十四
NR对空口物理资源的划分包括 3 个维度,即时域、频域和空域。为了满足各种差异化应用场景的要求,NR 在对“时—频—空”物理资源的管理上,除继承 LTE 的基础外,也进行了大量的革新,包括自适应的波形、更为灵活的帧结构、可配置的参数集、部分带宽等。
空口资源 | 带你读《5G 空口设计与实践进阶 》之十四
|
网络协议 安全 CDN
你的连接不是专用连接 攻击者可能试图从 github.com 窃取你的信息 通过修改DNS连接解决无法连接问题
你的连接不是专用连接 攻击者可能试图从 github.com 窃取你的信息 通过修改DNS连接解决无法连接问题
2992 0
|
自然语言处理 前端开发 Serverless
基于阿里云通义千问开发编程辅助与代码生成工具
随着软件开发需求的增加,编程辅助与代码生成工具成为开发者提高效率的利器。这类工具能够根据用户描述生成代码片段、协助调试、生成自动化脚本等,大大减少重复性劳动。阿里云通义千问作为一款先进的大语言模型,具备强大的自然语言处理和代码生成能力,非常适合用于开发这样的工具。
4016 3