TD3 算法详解:双延迟深度确定性策略梯度
双延迟深度确定性策略梯度算法(Twin Delayed Deep Deterministic Policy Gradient, TD3)是强化学习中专为解决连续动作空间问题设计的一种算法。它由 Fujimoto 等人在 2018 年提出,旨在改进深度确定性策略梯度(DDPG)算法中存在的训练不稳定和 Q 值过估计问题。
一、TD3 的背景与动机
1. DDPG 的局限性
DDPG 结合了策略(Actor)和价值函数(Critic),在连续动作空间中表现优异,但在实际应用中暴露出以下关键问题:
- Q 值过估计问题:Critic 网络在训练时容易高估 Q 值,导致 Actor 基于错误的价值评估进行优化,策略更新不稳定。
- 策略噪声敏感:确定性策略直接输出动作,容易对极端动作过拟合,陷入局部最优。
- 训练震荡:Actor 和 Critic 同时更新可能导致相互干扰,造成训练过程震荡甚至失败。
2. TD3 的理论基础
TD3 基于 Actor-Critic 架构和确定性策略梯度(DPG),并借鉴了双 Q 学习(Double Q-Learning)的思想。其核心在于通过三项创新机制来缓解上述问题。
二、TD3 的核心思想
TD3 在 DDPG 的基础上提出了三项关键改进:
1. 双 Critic 网络(Twin Critics)
动机:解决 Q 值系统性高估偏差。 方法:使用两个独立的 Critic 网络计算 Q 值,取两者的最小值作为目标 Q 值。 $$ y = r + \gamma \min \big( Q_{\theta_1'}(s', \pi_{\phi'}(s')), Q_{\theta_2'}(s', \pi_{\phi'}(s')) \big) $$ 效果:有效减少了过估计偏差,使策略学习更加保守和稳健。
2. 延迟更新(Delayed Policy Updates)
动机:避免 Actor 在不稳定的 Q 值估计上进行优化。 方法:降低 Actor 和目标网络的更新频率。通常每更新 Critic $n$ 次(如 $n=2$),才更新一次 Actor。 效果:提高了策略更新的稳定性,确保 Critic 有足够时间收敛。
3. 目标策略平滑(Target Policy Smoothing)
动机:防止策略对特定状态下的极端动作过拟合。 方法:在计算目标值时,对目标动作加入裁剪后的高斯噪声。 $$ a' = \pi_{\phi'}(s') + \text{clip}(\epsilon, -c, c), \quad \epsilon \sim \mathcal{N}(0, \sigma) $$ 效果:增强了算法对噪声和目标值波动的鲁棒性。
三、数学细节解析
1. Critic 损失函数
TD3 使用均方误差最小化 Critic 的损失: $$ L(\theta) = \mathbb{E} \big[ (Q_{\theta}(s, a) - y)^2 \big] $$ 其中目标值 $y$ 采用双 Critic 的最小值计算。
2. Actor 策略梯度
Actor 通过最大化 Critic 的输出优化策略: $$ \nabla_\phi J(\phi) = \mathbb{E}{s \sim \rho^\pi} \big[ \nabla_a Q{\theta_1}(s, a) \big|{a=\pi\phi(s)} \nabla_\phi \pi_\phi(s) \big] $$
3. 软更新机制
目标网络参数通过软更新保持同步: $$ \theta_i' \leftarrow \tau \theta_i + (1 - \tau) \theta_i' $$ $$ \phi' \leftarrow \tau \phi + (1 - \tau) \phi' $$
四、PyTorch 实现
以下是基于 PyTorch 的完整 TD3 实现示例。代码结构清晰,包含网络定义、经验回放缓冲区和训练循环。


