这一组页面按照当前代码命名来展示,但从实现上看,二者都已经不是最原始的 DDPG,而是离线场景下做过增强的 actor-critic 版本。
可以把它理解成“用 critic 告诉 actor 什么动作更好”。这一对方法的重点,是看代码里如何在 DDPG 主线上加入更稳的离线训练约束。
DDPG:当前脚本实现更接近 advantage-weighted 的离线 actor-critic。
DDPG_NB:当前脚本实现更接近 BC 正则化的 DDPG/TD3-lite。
这一对的价值主要在于展示两种不同的增强思路。
通俗理解:
DDPG 这组方法也需要知道“做了动作以后发生了什么”,所以它看的不是单独一行状态,而是一条完整的交互记录。
技术对应:
两者都使用 observations、actions、rewards、next_observations、terminals,并据此计算 critic 的 TD 目标和 actor 的更新方向。
通俗理解:
actor 负责提出动作,critic 负责判断动作值不值。target network 像一个更新慢一点的参考答案,防止当前网络一边改一边把目标也带偏。
技术对应:
两者都采用 actor + 双 critic + target network 的结构,critic 使用 state-action 输入,target actor/critic 通过 tau 做软更新。
通俗理解:
Base 版更像“优先模仿那些看起来更有优势的动作”:如果某个数据动作比当前策略动作更值得做,它的学习权重就更高。
技术对应:
DDPG.py 中 actor 更新采用 advantage-weighted BC 风格,根据 data action 与 policy action 的 Q 值差构造 advantage,再计算加权行为克隆损失。
通俗理解:
NB 版更像给 actor 同时提两个要求:一方面动作要让 critic 觉得好,另一方面不要离数据集里的真实动作太远。
技术对应:
DDPG_NB.py 中 actor loss 由 q_term 与 bc_term 组合而成,并用 alpha_bc 自适应缩放 Q 项,使策略优化和行为克隆约束共同生效。
| hdf5_file | 数据集路径 |
|---|---|
| batch_size | 批大小 |
| num_epochs | 训练轮数 |
| lr_actor / lr_critic | 学习率 |
| gamma / tau | 折扣与软更新 |
| hidden | 隐藏层结构 |
| output_dir | 输出目录 |
| reward_scale | 是否做 reward 标准化 |
|---|---|
| policy_noise / noise_clip | 目标动作扰动 |
| policy_delay | 延迟更新 actor |
| DDPG.aw_lambda / weight_clip | 优势加权参数 |
| DDPG_NB.alpha_bc / bc_coef | BC 正则参数 |
建议先理解常用参数,再看进阶参数。
Base 版本的核心 agent,actor 更新使用 advantage-weighted BC。
先更新 critic,再按权重更新 actor。
NB 版本的核心 agent,actor 更新使用 q_loss + bc_loss。
通过 alpha_bc 自适应缩放 Q 项,再叠加行为克隆项。
| 对比项 | DDPG | DDPG_NB |
|---|---|---|
| actor 更新方式 | advantage-weighted BC | Q 项 + BC 项的组合更新 |
| 增强重点 | 根据 advantage 调整样本权重 | 直接给 actor 加 BC 正则 |
| 可解释重点 | 为什么高优势样本更重要 | 为什么要让 actor 不偏离数据动作太远 |
| 工程理解 | 更偏“加权学习” | 更偏“约束学习” |