欢迎来到图解强化学习的世界博客主页卿云阁欢迎关注点赞收藏⭐️留言首发时间2026年5月22日✉️希望可以和大家一起完成进阶之路目录DDPG算法的基础认识DDPG的网络结构网络更新手算DDPGDDPG算法的基础认识DDPG 全称Deep Deterministic Policy Gradient深度确定性策略梯度专门解决连续动作空间强化学习问题。DDPG的网络结构Actor 网络策略网络输入状态 s 输出确定性动作 aTarget Actor 网络目标策略网络输入下一个状态 s 输出下一个确定性动作 aCritic 网络Q 网络输入状态 s 动作 a 输出Q 值 Q (s,a)Target Critic 网络目标 Q 网络输入下一个状态 s 下一个动作 a 输出目标 Q 值 Q_target (s,a)网络更新Critic的更新目的让在线 Critic预测的 Q 值尽可能贴合真实长期收益。1使用经验回放缓冲区Experience Replay从中采样一批经验 (s, a, r, s)即当前状态、动作、奖励、下一个状态。2计算目标 Q 值y_i使用 Target Actor 网络 根据下一个状态 s 生成下一个动作 a再使用 Target Critic 网络 估计 Q_target(s, a)最终结合折扣因子计算目标 Q 值y_i r γ * Q_target(s, a)3使用均方误差损失函数MSELoss更新 在线 Critic 网络 的参数使得 Critic 网络预测的Q (s,a) 尽可能逼近 目标 Q 值 y_i。Actor的更新目的让在线 Actor 输出的策略动作尽可能最大化在线 Critic 评估的 Q 值持续优化决策策略。1从经验回放缓冲区中采样一批状态样本 s。2将当前状态 s 输入在线 Actor 网络得到网络输出的策略动作 (a(s))。3将状态 s 与 Actor 输出动作 a 输入在线 Critic 网络得到当前策略对应的评估Q 值(Q(s,a))。4依据确定性策略梯度原理更新在线 Actor 网络参数通过最大化 Critic 输出的 Q 值不断优化策略使智能体在当前状态下输出更优的连续动作。目标Actor和目标Critic软更新Polyak Averaging每训练一步把当前网络的参数缓慢 “挪一点点” 到目标网络目标网络参数始终更稳定、更平滑。目标网络保留 99.5% 自己原来的参数只吸收 0.5% 来自当前网络的新参数。完整的结构手算DDPG演员网络策略网络输入state [ 0.12, # x 横坐标 1.45, # y 高度 -0.05, # vx 水平速度 -0.30, # vy 垂直速度 0.08, # 角度 -0.02, # 角速度 0.00, # 左腿未触地 0.00 # 右腿未触地 ]输出action tanh(0.73) ≈ 0.62评论家网络价值网络输入 1状态 state8 个数字飞船状态state [ 0.12, # x 坐标 1.45, # y 高度 -0.05, # vx 水平速度 -0.30, # vy 垂直速度 0.08, # 角度 -0.02, # 角速度 0.00, # 左腿未触地 0.00 #右腿未触地 ]输入 2动作 action1 个数字来自 Actoraction [0.62] # 范围一定在 [-1, 1]最终输出q_value 12.73输入8 个状态数字 1 个动作数字输出1 个 Q 值分数评价这个动作好不好动作选择choose_action观测状态随便给一组 8 维数字 observation [0.1, 0.2, 0.05, -0.3, 0.02, -0.01, 0, 0]Actor 输出前向传播后假设算出 0.4噪声标准差action_noise 0.1随机噪声假设抽到 0.07正态分布如果在测试阶段a0.4如果在训练阶段a0.40.070.47aclip(0.47, −1, 1)0.47为了在训练时通过加噪声来探索环境、找到更好策略同时在测试时直接使用确定性动作保证策略稳定可靠所以设计了训练/测试两种模式。网络更新1️⃣ 计算目标 Q 值targetnext_actions target_actor(s) → 0.38q_ target_critic(s, next_actions) → 10.0target r gamma * q_target 2.5 0.99 * 10.0target 2.5 9.9target 12.42️⃣ 计算当前 Q 值q critic(s, a) → 10.03️⃣ 计算 Critic 损失均方误差critic_loss MSE(q, target) (q - target)²critic_loss (10.0 - 12.4)²critic_loss (-2.4)²critic_loss 5.76反向传播更新 Critic让 q 逼近 12.44️⃣ 计算 Actor 损失new_actions actor(s) → 0.4q critic(s, new_actions) → 10.0actor_loss -qactor_loss -10.0反向传播更新 Actor让 q 越大越好5️⃣ 软更新目标网络target_actor 0.005 * actor 0.995 * target_actortarget_critic 0.005 * critic 0.995 * target_critic目标Q值 target 12.4Critic 损失 5.76Actor 损失 -10.0DDPG 是「单步采样、按批次更新」的方式。