TD3 —— 双延迟深度确定性策略梯度算法文献解读

TD3(Twin Delayed Deep Deterministic Policy Gradient)文献解读

基本信息

  • 论文标题: Addressing Function Approximation Error in Actor-Critic Methods
  • 作者: Scott Fujimoto, Herke van Hoof, David Meger
  • 发表时间: 2018年10月(ICML 2018)
  • 作者单位: McGill University, University of Amsterdam
  • 开源代码: https://github.com/sfujim/TD3

一、研究背景与关键科学问题

1.1 研究背景

强化学习(Reinforcement Learning, RL)中的 Actor-Critic 框架是解决连续控制问题的主流方法之一。其中,深度确定性策略梯度算法(Deep Deterministic Policy Gradient, DDPG)作为 DPG 算法的深度扩展,在高维连续动作空间任务中展现了优异的性能。然而,DDPG 在实际训练过程中存在严重的稳定性问题,限制了其在复杂任务中的应用。

1.2 关键科学问题

本文聚焦于 Actor-Critic 框架中的**函数近似误差(Function Approximation Error)**问题,具体包括以下三个核心挑战:

(1)Q值高估偏差(Overestimation Bias)

在基于价值学习的强化学习算法中(如 DQN),函数近似误差会导致 Q 值的高估,进而产生次优策略。本文证明:这一问题在 Actor-Critic 框架中同样存在,且后果更为严重

  • 理论根源: Q-learning 中最大化噪声价值估计会诱导持续的高估(Thrun & Schwartz, 1993)。在函数近似设置下,由于估计器的不精确性,这种噪声不可避免。
  • 误差累积: 时间差分学习(Temporal Difference Learning)使用后续状态的估计值更新当前估计,导致不精确的估计在每次更新中被累积放大。
  • 恶性循环: 高估偏差使得任意差的状态可能被估计为高价值,导致策略更新偏离最优方向,甚至引发发散行为(divergent behavior)。
(2)方差累积与误差传播

时间差分更新中,价值估计由后续状态的价值估计构建,导致误差不断累积。即使单次更新的误差很小,经过多次迭代后也可能演变为严重的高估偏差和次优策略更新。

(3)策略与价值函数的耦合问题

在 Actor-Critic 框架中,策略(Actor)和价值函数(Critic)相互依赖、同时更新。当价值估计不稳定时,策略会在高方差的价值估计上进行优化,进一步加剧训练的不稳定性。

1.3 DDPG 的局限性

作为 TD3 的基础算法,DDPG 存在以下关键缺陷:

局限性 具体表现
Q值过估计 Critic 网络在训练时容易系统性高估 Q 值
策略噪声 确定性策略直接输出动作,容易陷入局部最优
训练不稳定 Actor 和 Critic 同时训练时相互影响,导致震荡
误差累积 无专门机制抑制 TD 学习中的误差传播

二、研究方法与技术路线

2.1 核心思想概述

TD3 算法在 DDPG 基础上提出了三项关键改进:

  1. 截断双 Q 学习(Clipped Double Q-Learning): 使用两个独立的 Critic 网络,取最小值作为目标 Q 值,有效限制高估偏差。
  2. 延迟策略更新(Delayed Policy Updates): 降低 Actor 和目标网络的更新频率,通常在 Critic 更新两次后才更新 Actor。
  3. 目标策略平滑正则化(Target Policy Smoothing Regularization): 在目标动作中加入高斯噪声并裁剪,平滑价值函数估计。

2.2 算法原理详解

2.2.1 Actor-Critic 框架基础

确定性策略梯度(Deterministic Policy Gradient, DPG):

在连续控制中,参数化策略 πϕ\pi_\phiπϕ 可以通过确定性策略梯度算法更新:

∇ϕJ(ϕ)=Es∼pπ[∇aQπ(s,a)∣a=πϕ(s)∇ϕπϕ(s)] \nabla_\phi J(\phi) = \mathbb{E}{s \sim p\pi} \left[ \nabla_a Q^\pi(s, a)|{a=\pi\phi(s)} \nabla_\phi \pi_\phi(s) \right] ∇ϕJ(ϕ)=Es∼pπ[∇aQπ(s,a)∣a=πϕ(s)∇ϕπϕ(s)]

时间差分学习(Temporal Difference Learning):

价值函数通过贝尔曼方程学习:

Qπ(s,a)=r+γEs′,a′[Qπ(s′,a′)],a′∼π(s′) Q^\pi(s, a) = r + \gamma \mathbb{E}_{s', a'} \left[ Q^\pi(s', a') \right], \quad a' \sim \pi(s') Qπ(s,a)=r+γEs′,a′[Qπ(s′,a′)],a′∼π(s′)

深度 Q 学习中,使用目标网络 Qθ′Q_{\theta'}Qθ′ 维持固定的学习目标:

y=r+γQθ′(s′,a′),a′∼πϕ′(s′) y = r + \gamma Q_{\theta'}(s', a'), \quad a' \sim \pi_{\phi'}(s') y=r+γQθ′(s′,a′),a′∼πϕ′(s′)

目标网络通过软更新缓慢跟踪当前网络:

θ′←τθ+(1−τ)θ′ \theta' \leftarrow \tau \theta + (1 - \tau) \theta' θ′←τθ+(1−τ)θ′

2.2.2 截断双 Q 学习(Clipped Double Q-Learning)

动机: DDPG 中的单一 Critic 网络存在系统性高估问题。传统 Double DQN 在离散动作中有效,但在 Actor-Critic 设置中由于策略变化缓慢,当前网络与目标网络过于相似,无法避免最大化偏差。

方法:

维护两个独立的 Critic 网络 Qθ1Q_{\theta_1}Qθ1 和 Qθ2Q_{\theta_2}Qθ2,以及对应的两个 Actor 网络 πϕ1\pi_{\phi_1}πϕ1 和 πϕ2\pi_{\phi_2}πϕ2。目标值计算取两个 Critic 估计中的较小值:

y1=r+γmin⁡i=1,2Qθi′(s′,πϕ1(s′)) y_1 = r + \gamma \min_{i=1,2} Q_{\theta_i'}(s', \pi_{\phi_1}(s')) y1=r+γi=1,2minQθi′(s′,πϕ1(s′))

y2=r+γmin⁡i=1,2Qθi′(s′,πϕ2(s′)) y_2 = r + \gamma \min_{i=1,2} Q_{\theta_i'}(s', \pi_{\phi_2}(s')) y2=r+γi=1,2minQθi′(s′,πϕ2(s′))

实现简化 : 为降低计算成本,实际实现中使用单个 Actor(基于 Qθ1Q_{\theta_1}Qθ1 优化),并令 y2=y1y_2 = y_1y2=y1。当 Qθ2>Qθ1Q_{\theta_2} > Q_{\theta_1}Qθ2>Qθ1 时,更新与标准更新相同;当 Qθ2<Qθ1Q_{\theta_2} < Q_{\theta_1}Qθ2<Qθ1 时,表明发生了高估,价值被降低。

理论保证:

  • 该目标值不会引入比标准 Q-learning 目标更多的高估。
  • 虽然可能引入低估偏差,但低估不会像高估那样通过策略更新被传播(因为策略会避免选择低价值动作)。
  • 最小值操作倾向于选择方差较低的状态-动作价值估计,导致更安全的策略更新。
2.2.3 延迟策略更新(Delayed Policy Updates)

动机:

  • 目标网络通过提供稳定的学习目标,对减少误差累积至关重要。
  • 当策略在当前价值估计上训练时,快速更新的目标网络仍可能导致发散行为。
  • 价值估计在高误差状态下发散,而策略在高误差状态下更新会导致恶性循环。

方法:

每 ddd 步(通常 d=2d=2d=2)才更新一次策略网络和目标网络,而 Critic 网络每步都更新。即:

复制代码
if t mod d == 0:
    更新 Actor 网络
    软更新目标网络

原理:

  • 延迟策略更新确保 Critic 网络先收敛,使价值误差尽可能小后再引入策略更新。
  • 减少策略重复基于未变化的 Critic 进行更新的可能性。
  • 不频繁的策略更新使用方差更低的价值估计,产生更高质量的策略更新。
  • 形成双时间尺度算法,符合线性设置中收敛性要求的框架。
2.2.4 目标策略平滑正则化(Target Policy Smoothing Regularization)

动机:

确定性策略容易过拟合到价值估计中的狭窄峰值。使用确定性策略的学习目标容易受到函数近似误差引起的偏差影响,增加目标的方差。

方法:

在目标动作中添加裁剪过的高斯噪声:

y=r+γQθ′(s′,πϕ′(s′)+ϵ),ϵ∼clip(N(0,σ),−c,c) y = r + \gamma Q_{\theta'}(s', \pi_{\phi'}(s') + \epsilon), \quad \epsilon \sim \text{clip}(\mathcal{N}(0, \sigma), -c, c) y=r+γQθ′(s′,πϕ′(s′)+ϵ),ϵ∼clip(N(0,σ),−c,c)

其中噪声被裁剪到范围 [−c,c][-c, c][−c,c] 以保持目标接近原始动作。

效果:

  • 强制相似动作具有相似价值的概念,显式平滑价值估计。
  • 类似于 Expected SARSA 的更新方式,但独立于探索策略。
  • 使策略倾向于选择对扰动具有鲁棒性的动作,在随机域中更安全。

2.3 完整 TD3 算法流程

算法 1: TD3

复制代码
初始化 Critic 网络 Q_θ1, Q_θ2 和 Actor 网络 π_φ
初始化回放缓冲区 B

for t = 1 to T do:
    选择带探索噪声的动作 a ~ π_φ(s) + ε, ε ~ N(0, σ)
    观察奖励 r 和新状态 s'
    存储转移元组 (s, a, r, s') 到 B
    
    从 B 采样 N 个转移 (s, a, r, s')
    
    计算目标动作: ã ~ π_φ'(s') + ε, ε ~ clip(N(0, σ̃), -c, c)
    
    计算目标值: y = r + γ min_{i=1,2} Q_θi'(s', ã)
    
    更新 Critic: θi ← argmin_θi N^{-1} Σ(y - Q_θi(s, a))^2
    
    if t mod d == 0 then:
        更新 Actor: ∇_φ J(φ) = N^{-1} Σ ∇_a Q_θ1(s, a)|_{a=π_φ(s)} ∇_φ π_φ(s)
        
        软更新目标网络:
        θi' ← τ θi + (1 - τ) θi'
        φ' ← τ φ + (1 - τ) φ'
    end if
end for

2.4 网络架构与超参数

Critic 网络架构:

复制代码
(state_dim + action_dim, 400) → ReLU
(400, 300) → ReLU
(300, 1)

Actor 网络架构:

复制代码
(state_dim, 400) → ReLU
(400, 300) → ReLU
(300, action_dim) → tanh

关键超参数:

超参数 说明
Critic 学习率 10^{-3} Adam 优化器
Actor 学习率 10^{-3} Adam 优化器
折扣因子 γ 0.99 未来奖励衰减
软更新系数 τ 0.005 目标网络缓慢跟踪
批次大小 100 每次更新的样本数
延迟更新步数 d 2 每2步更新一次策略
目标策略平滑噪声 σ̃ 0.2 高斯噪声标准差
噪声裁剪范围 c 0.5 目标动作噪声裁剪
探索噪声 N(0, 0.1) 动作探索高斯噪声

三、实验设计与结果分析

3.1 实验环境

在 OpenAI Gym 的 MuJoCo 连续控制任务上进行评估,包括:

环境 描述
HalfCheetah-v1 半猎豹奔跑
Hopper-v1 单足跳跃
Walker2d-v1 双足行走
Ant-v1 四足蚂蚁移动
Reacher-v1 机械臂 reaching
InvertedPendulum-v1 倒立摆平衡
InvertedDoublePendulum-v1 双倒立摆平衡

3.2 对比算法

  • DDPG: 原始深度确定性策略梯度算法
  • Our DDPG: 作者重新调参的 DDPG 版本
  • PPO: Proximal Policy Optimization
  • TRPO: Trust Region Policy Optimization
  • ACKTR: Actor Critic using Kronecker-Factored Trust Region
  • SAC: Soft Actor-Critic

3.3 实验设置

  • 每个任务运行 100 万时间步
  • 每 5000 时间步评估一次(10 个 episode,无探索噪声)
  • 报告 10 个随机种子(Gym 模拟器和网络初始化)的平均结果
  • 前 10000 步(稳定长度环境)或 1000 步使用纯探索策略

3.4 主要实验结果

最终性能对比(最大平均回报):

环境 TD3 DDPG Our DDPG PPO TRPO ACKTR SAC
HalfCheetah 9636.95 3305.60 8577.29 1795.43 -15.57 1450.46 2347.19
Hopper 3564.07 2020.46 1860.02 2164.70 2471.30 2428.39 2996.66
Walker2d 4682.82 1843.85 3098.11 3317.69 2321.47 1216.70 1283.67
Ant 4372.44 1005.30 888.77 1083.20 -75.85 1821.94 655.35
Reacher -3.60 -6.51 -4.01 -6.18 -111.43 -4.26 -4.44
InvPendulum 1000.00 1000.00 1000.00 1000.00 985.40 1000.00 1000.00
InvDoublePendulum 9337.47 9355.52 8369.95 8977.94 205.85 9081.92 8487.15

结论: TD3 在所有 7 个任务中的 6 个上达到最优性能,在最终性能和学习速度上均匹配或超越所有其他算法。

3.5 消融实验

为验证每个组件的贡献,进行消融研究:

方法 HalfCheetah Hopper Walker2d Ant
TD3(完整) 9532.99 3564.07 4682.82 4372.44
DDPG 3304.75 2020.46 1843.85 1005.30
AHE(架构调参) 8401.02 1061.77 2362.13 564.07
AHE + DP 7588.64 1465.11 2459.53 896.13
AHE + TPS 9023.40 907.56 2961.36 872.17
AHE + CDQ 6470.20 1134.14 3979.21 3818.71
TD3 - DP 9590.65 2407.42 4695.50 3754.26
TD3 - TPS 8987.69 2392.59 4033.67 4155.24
TD3 - CDQ 9792.80 1837.32 2579.39 849.75
DQ-AC 9433.87 1773.71 3100.45 2445.97
DDQN-AC 10306.90 2155.75 3116.81 1092.18

消融实验结论:

  1. 单一组件的改进在大多数情况下提升有限,但组合使用时性能大幅提升。
  2. 完整算法在大多数任务中优于任何其他组合。
  3. 延迟策略更新(DP)虽然使 Actor 训练迭代次数减半,但通常提升性能并减少训练时间。
  4. Clipped Double Q-learning 比 Double Q-learning(DQ-AC)和 Double DQN(DDQN-AC)的 Actor-Critic 变体更有效。

3.6 高估偏差验证

通过对比 DDPG 和 CDQ(Clipped Double Q-learning)的价值估计与真实价值:

  • DDPG: 价值估计显著高于真实价值,存在严重的高估偏差。
  • CDQ: 大幅减少了 Critic 的高估偏差。

对比 Double DQN-AC 和 Double Q-learning-AC:

  • Double DQN-AC 在 Actor-Critic 设置中仍然存在与 DDPG 相似的高估。
  • Double Q-learning 更有效,但未能完全消除高估。

四、主要创新点与学术贡献

4.1 理论贡献

(1)证明 Actor-Critic 框架中的高估偏差问题

本文首次系统性地证明了:

  • 确定性策略梯度中存在高估偏差: 在基本假设下,证明了使用近似 Critic 更新策略会诱导价值估计的高估。
  • 误差累积的数学分析: 通过贝尔曼方程的展开,证明价值估计近似于期望回报减去未来 TD 误差的期望折扣和,揭示了方差随时间步增长的风险。
  • 目标网络与误差控制的关系: 建立了目标网络在限制函数近似误差累积中的理论基础。
(2)提出截断双 Q 学习的收敛性证明

在有限 MDP 设置下,证明了 Clipped Double Q-learning 以概率 1 收敛到最优价值函数 Q∗Q^*Q∗,为算法的可靠性提供了理论保证。

4.2 算法贡献

(1)Clipped Double Q-learning
  • 将 Double Q-learning 思想成功扩展到连续动作空间的 Actor-Critic 框架。
  • 通过取两个独立 Critic 的最小值,有效限制高估偏差。
  • 发现"有偏估计可作为真实价值的上界"这一洞见,主动偏好低估而非高估。
(2)延迟策略更新机制
  • 提出策略网络更新频率应低于价值网络,形成双时间尺度算法。
  • 在价值误差最小化后再进行策略更新,提高策略更新质量。
  • 以更少策略更新迭代实现更好性能,提升训练效率。
(3)目标策略平滑正则化
  • 引入 SARSA 风格的正则化策略,通过在目标动作中添加噪声平滑价值估计。
  • 强制相似动作具有相似价值,降低函数近似误差引起的方差。
  • 使策略倾向于选择对扰动鲁棒的动作,提升策略安全性。

4.3 实验贡献

(1)全面的性能评估
  • 在 7 个标准 MuJoCo 连续控制任务上进行系统评估。
  • 与 6 个主流算法(DDPG、PPO、TRPO、ACKTR、SAC 等)进行公平对比。
  • 使用 10 个随机种子,报告均值和标准差,确保结果的可复现性。
(2)深入的消融研究
  • 分别验证每个组件(CDQ、DP、TPS)的独立贡献和组合效果。
  • 对比不同 Double Q-learning 变体在 Actor-Critic 设置中的有效性。
  • 提供学习曲线和数值表格的双重展示。

4.4 工程与实践贡献

(1)简洁高效的实现
  • 所有修改均可轻松集成到现有 Actor-Critic 算法中。
  • 开源代码和完整学习曲线,促进社区复现和扩展。
  • 超参数设置简单,跨任务迁移性好。
(2)对后续研究的影响
  • TD3 已成为连续控制领域的基准算法之一。
  • 其 Clipped Double Q-learning 被后续算法(如 SAC 的更新版本)采纳。
  • 提出的"延迟更新"和"目标平滑"思想影响了后续 Actor-Critic 算法的设计。

五、局限性与未来方向

5.1 局限性

  1. 计算成本: 双 Critic 网络增加了训练时间和内存消耗。
  2. 噪声超参数敏感: 目标平滑的噪声参数需要根据任务调整。
  3. 延迟更新步数 : 最优延迟步数 ddd 可能因任务而异。

5.2 未来研究方向

  1. 与模型预测控制结合: 利用学习到的模型进一步提升样本效率。
  2. 多智能体扩展: 将 TD3 扩展到多智能体协作场景。
  3. 与规划的融合: 结合模型学习和规划方法,实现更高效的策略优化。
  4. 自适应延迟机制: 设计根据训练动态自适应调整延迟步数的机制。

六、总结

TD3(Twin Delayed Deep Deterministic Policy Gradient)通过系统性地解决 Actor-Critic 框架中的函数近似误差问题,显著提升了连续控制任务的性能。其核心创新包括:

  1. 截断双 Q 学习(Clipped Double Q-learning): 通过维护两个独立 Critic 并取最小值,有效抑制 Q 值高估偏差。
  2. 延迟策略更新(Delayed Policy Updates): 降低策略更新频率,确保价值估计收敛后再更新策略。
  3. 目标策略平滑(Target Policy Smoothing): 在目标动作中添加噪声,平滑价值估计并增强鲁棒性。

这些改进使 TD3 在 OpenAI Gym 的 7 个连续控制任务上全面超越 DDPG、PPO、TRPO、ACKTR 和 SAC 等算法,成为 2018 年连续控制领域的最先进方法。更重要的是,TD3 的修改简洁而通用,可轻松集成到任何 Actor-Critic 算法中,对深度强化学习的发展产生了深远影响。


参考文献

  1. Fujimoto, S., van Hoof, H., & Meger, D. (2018). Addressing Function Approximation Error in Actor-Critic Methods. ICML 2018.
  2. Lillicrap, T. P., et al. (2015). Continuous control with deep reinforcement learning. arXiv preprint arXiv:1509.02971.
  3. Silver, D., et al. (2014). Deterministic policy gradient algorithms. ICML 2014.
  4. Van Hasselt, H. (2010). Double Q-learning. NeurIPS 2010.
  5. Van Hasselt, H., Guez, A., & Silver, D. (2016). Deep reinforcement learning with double Q-learning. AAAI 2016.
  6. Haarnoja, T., et al. (2018). Soft actor-critic: Off-policy maximum entropy deep reinforcement learning with a stochastic actor. arXiv preprint arXiv:1801.01290.
相关推荐
斯维赤1 小时前
每天学习一个小算法:归并排序
学习·算法·排序算法
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【区间贪心】:区间覆盖(加强版)
c++·算法·贪心·csp·信奥赛·区间贪心·区间覆盖(加强版)
碧海银沙音频科技研究院2 小时前
杰理项目开发大全课程
人工智能·深度学习·算法
风一样的航哥2 小时前
LeetCode 2615 等值距离和:前缀和优化O(n)解法深度解析
数据结构·算法·leetcode
生成论实验室2 小时前
生成态势猜想:一种统一的宇宙动力学语法
人工智能·科技·神经网络·算法·信息与通信
旖-旎3 小时前
深搜(二叉树的所有路径)(6)
c++·算法·leetcode·深度优先·递归
啦啦啦_99993 小时前
3. KNN算法之 常用的距离度量方式(欧式&曼哈顿&切比雪夫&闵式距离)
算法
朝风工作室3 小时前
实时全景拼接|支持任意路数输入,8*8K RTX3050 实测 10ms 内
图像处理·算法·计算机视觉
nianniannnn4 小时前
HNU计算机系统期中题库详解(五)位运算与逻辑运算
算法·位运算·计算机系统