欢迎来到图解强化学习的世界博客主页卿云阁欢迎关注点赞收藏⭐️留言首发时间2026年5月27日✉️希望可以和大家一起完成进阶之路目录MADDPG算法的基础认识MADDPG的网络结构策略网络Actor主策略网络价值网络Critic主价值网络策略网络Target Actor目标策略网络价值网络Target Critic目标价值网络网络更新​编辑其它网络手动计算MADDPG算法的基础认识采用集中式训练、分布式执行框架解决多智能体环境非平稳问题每个智能体拥有独立 Actor所有智能体共享全局信息训练 Critic继承 DDPG 确定性策略 双网络主网络 目标网络软更新训练稳定MADDPG的网络结构策略网络Actor主策略网络数量3 个Agent0 / Agent1 / Agent2 各 1 个参数相互独立网络类型全连接神经网络确定性策略输出连续动作非概率分布输入单个智能体局部观测维度 18内容自身速度、自身位置、地标相对位置、其他智能体相对位置、通信向量输出单个智能体连续动作维度 5对应动作无动作、左移、右移、下移、上移 的连续控制量值域 ([0,1])功能与工作流程环境交互阶段接收自身 18 维观测直接输出 5 维动作训练时叠加高斯噪声做探索再截断到合法区间。网络更新阶段拆分全局 54 维状态分段送入对应 Actor生成新动作用于计算 Actor 损失。特点只关心自己的观测不感知全局信息保证部署时分布式运行。价值网络Critic主价值网络数量1 个3 个智能体全局共享唯一的价值评估网络输入全局联合状态54 维来源3 个智能体的局部观测直接拼接(18* 3 54)包含所有智能体位置、速度、相对地标、相对队友等全部全局信息。全局联合动作15 维来源3 个智能体的动作直接拼接 (5*3 15)包含所有智能体当前执行的动作。输出输出1 维标量 Q 值含义评估「当前全局状态 所有智能体联合动作」能获得的长期累积回报分数越高代表当前行为越优。功能与工作流程训练核心唯一负责打分的网络是连接所有智能体的桥梁。计算 Critic 损失拟合 TD 目标让 Q 值预测更精准。指导 Actor 更新以 Q 值为依据引导所有 Actor 朝着 “提升全局回报” 的方向优化。特点全局视角能感知智能体之间的协作、碰撞关系解决多智能体环境非平稳问题。策略网络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主318局部观测5动作反向传播梯度更新交互 训练Target Actor318局部观测5动作软更新跟随主 Actor仅训练Critic主169全局拼接1Q 值反向传播梯度更新仅训练Target Critic169全局拼接1Q 值软更新跟随主 Critic仅训练网络更新策略网络Actor主策略网络价值网络Target Critic目标价值网络其它网络手动计算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 ]Actor 生成动作[0.21, 0.77, 0.34, 0.11, 0.89]最终的动作[0.23, 0.74, 0.35, 0.09, 0.93]主价值网络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 ]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 ]rewards 1 个数字全局奖励rewards [-0.791]目标策略网络和目前价值网络的输入输出和上面类似损失函数的计算一步全局局面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_target 0.398 0.99 * 0.0 target 0.398计算评论家网络的损失critic_loss F.mse_loss(q, target)MSE (预测值 - 标准答案)² 的平均值计算评论家网络的损失critic_loss F.mse_loss(q, target)MSE (预测值 - 标准答案)² 的平均值预测分数 q 0.42标准答案 target 0.398误差 0.022误差平方 0.000484critic_loss 0.000484Actor 损失的计算Actor 训练让动作获得更高的分数所以 loss 是负的 Q 值actor_loss -torch.mean( 评论家对当前动作的打分 Q )假设有5个样本的话5个Q值[0.85, 1.20, 0.45, 0.90, 1.10]求和0.851.20.450.91.1 4.5平均值4.5 / 5 0.9 actor_loss -0.9