TD3 / TD3_NB

这一组方法体现了双 critic、目标动作加噪声和延迟策略更新这些经典稳定化技巧。

选择算法对

小白先看

如果把 DDPG 理解成“critic 指导 actor”,那 TD3 可以看成“让这个指导过程更稳一些”。TD3_NB 则在此基础上再加入 BC 正则。

TD3:双 critic,目标动作加噪声,actor 延迟更新。

TD3_NB:在 TD3 主线上加入 BC 项和 reward scaling。

很适合用来展示“经典稳定化技巧 + 离线增强”的组合。

方法流程

  1. 读取完整 transition 数据。
  2. 划分训练集与验证集。
  3. 计算状态标准化;TD3_NB 还计算 reward 统计量。
  4. 构建 actor、critic 与 target networks。
  5. 先更新 critic,再按 policy_delay 更新 actor。
  6. 保存训练日志、图像与最佳模型。

核心设计

双 critic

通俗理解:
TD3 像找两个老师给同一个动作打分,然后采用更低的分数。这样模型不会因为某个老师过于乐观就误以为动作特别好。

技术对应:
两者都使用两个 Q 网络,并在目标值中取 min(Q1, Q2),这是 TD3 用来降低 Q 值高估的核心技巧。

目标动作扰动

通俗理解:
给目标动作加一点小噪声,相当于检查“附近动作是不是也还可以”。这样 actor 不容易钻某个 critic 评分尖峰的空子。

技术对应:
两者都会对 target action 加 policy_noise,并用 noise_clip 截断,再将动作限制在合法范围内,用于平滑 target critic 的估计。

延迟更新

通俗理解:
critic 要先多学几步,把评分标准变稳一点,actor 再根据这个评分去改动作。否则 actor 太早跟着不稳定评分跑,训练会抖。

技术对应:
actor 不会每一步都更新,而是按 policy_delay 延迟更新;critic 更新更频繁,actor 和 target networks 按固定间隔更新。

NB 增强

通俗理解:
NB 版在“追求高 Q 值”的同时,加上“别偏离数据动作太远”的提醒,更适合不能在线试错的离线数据训练。

技术对应:
TD3_NB 在 actor 更新中组合 q_term 与 bc_term,并支持 reward_scale,让策略优化、行为克隆约束和奖励尺度处理同时参与训练。

参数说明

常用参数

data_path / save_dir路径参数
batch_size批大小
lr_actor / lr_critic学习率
gamma / tau折扣与软更新
policy_noise / noise_clip目标动作噪声
policy_delay延迟更新步长
hidden隐藏层结构

进阶参数

max_action动作范围上限
TD3_NB.alpha_bc / bc_coefBC 正则参数
TD3_NB.reward_scalereward 标准化
grad_clip / weight_decay训练稳定性参数

建议先理解常用参数,再看进阶参数。

代码块讲解

AIcodes/TD3.py -> TD3Trainer

Base 版本训练器,实现双 critic 与延迟更新。

AIcodes/TD3.py -> train_step

目标动作加噪声并更新 critic,再按延迟更新 actor。

AIcodes/TD3_NB.py -> TD3NBTrainer

NB 版本训练器,在 actor 更新中引入 BC 项。

AIcodes/TD3_NB.py -> train_step

将 q_term 与 bc_term 组合成 actor_loss。

输入输出与产物

输入

  • 代码文件:AIcodes/TD3.py、AIcodes/TD3_NB.py
  • 数据文件:halfcheetah_medium-v2.hdf5
  • 完整 transition 数据

输出与产物

  • checkpoints/TD3/ 或 checkpoints/TD3_NB/
  • best_model.pt
  • train_config.json
  • training_log.csv
  • critic_loss.png / actor_loss.png / q_value.png

Base / NB 对比

对比项TD3TD3_NB
核心主线经典 TD3 稳定化训练TD3 + BC 正则
critic 设计双 critic双 critic
actor 更新纯 Q 导向更新Q 项 + BC 项
额外增强目标动作加噪声、延迟更新再加 reward_scale 与 BC 正则

小结

  • TD3 可以看成更稳的 DDPG:它用双 critic、目标动作加噪声和延迟更新,尽量减少训练中的 Q 值高估和策略抖动。
  • 目标动作扰动让模型不要只盯着某个很尖锐的高分动作,延迟更新则让 critic 先学稳一点,再指导 actor。
  • TD3_NB 在 TD3 主线基础上加入 BC 正则和 reward scaling,让 actor 在追求高 Q 值时仍然靠近离线数据动作。
  • 这一组适合展示“经典稳定化技巧 + 离线约束”的组合:先让评价更稳,再让策略别偏离数据太远。