欢迎光临
我们一直在努力

图解强化学习 |手算DDPG

🌞欢迎来到图解强化学习的世界  🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

📆首发时间:🌹2026年5月22日🌹

✉️希望可以和大家一起完成进阶之路!


目录

DDPG算法的基础认识

DDPG的网络结构

网络更新

手算DDPG

DDPG算法的基础认识

DDPG 全称:Deep Deterministic Policy Gradient

深度确定性策略梯度,专门解决连续动作空间强化学习问题。


DDPG的网络结构

Actor 网络(策略网络):  

输入:状态 s               输出:确定性动作 a

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

输入:下一个状态 s'    输出:下一个确定性动作 a'

Critic 网络(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:状态 state(8 个数字,飞船状态)

state = [
0.12, # x 坐标
1.45, # y 高度
-0.05, # vx 水平速度
-0.30, # vy 垂直速度
0.08, # 角度
-0.02, # 角速度
0.00, # 左腿未触地
0.00 #右腿未触地
]

输入 2:动作 action(1 个数字,来自 Actor)

action = [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(正态分布)

如果在测试阶段:a=0.4

如果在训练阶段:a=0.4+0.07=0.47

                             a=clip(0.47, −1, 1)=0.47

     为了在训练时通过加噪声来探索环境、找到更好策略,同时在测试时直接使用确定性动作,保

证策略稳定可靠,所以设计了训练/测试两种模式。

网络更新

1️⃣ 计算目标 Q 值(target)

next_actions = target_actor(s') → 0.38

q_ = target_critic(s', next_actions) → 10.0

target = r + gamma * q_

target = 2.5 + 0.99 * 10.0

target = 2.5 + 9.9

target = 12.4

2️⃣ 计算当前 Q 值

q = critic(s, a) → 10.0

3️⃣ 计算 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.4

4️⃣ 计算 Actor 损失

new_actions = actor(s) → 0.4

q = critic(s, new_actions) → 10.0

actor_loss = -q

actor_loss = -10.0

反向传播:更新 Actor,让 q 越大越好!

5️⃣ 软更新目标网络

target_actor = 0.005 * actor + 0.995 * target_actor

target_critic = 0.005 * critic + 0.995 * target_critic

目标Q值 target = 12.4

Critic 损失 = 5.76

Actor 损失 = -10.0

                          DDPG 是「单步采样、按批次更新」的方式。

赞(0)
未经允许不得转载:171主机测评 » 图解强化学习 |手算DDPG
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址