先记住一句话

DDPG 是 deterministic actor + single critic;TD3 用 twin critics、delayed actor update 和 target smoothing 修补高估;SAC 用 stochastic actor + maximum entropy,并通常也使用 twin critics。

收集 continuous actions写 replay算 twin-Q target更新 critics延迟更新 actorsoft-update targets
Actora∼πθ(s)
Replays,a,r,s′
CriticsQ₁,Q₂
Targetr+γ min Q′
Actormaximize Q/entropy
DDPG、TD3、SAC 共用 replay + target networks,但 actor 的随机性和 critic target 不同。

1. 共享骨架

environment → replay D(s,a,r,s',done)
                  ↓ sample
critic Q(s,a) ← Bellman target from target networks
                  ↓ ∇_a Q
actor π(s) / π(a|s) ← choose actions with high Q
target networks ← slow Polyak update

critic 可用旧数据做 off-policy TD update;actor 利用可微 Q 对 action 的梯度,不需要对真实 environment 求导。

2. DDPG

y=r+γQ_target(s', μ_target(s'))
J_actor=E[Q(s, μ(s))]

deterministic actor μ(s) 直接输出 action;采集时另加 Gaussian/OU noise 探索。DDPG 数据效率高于纯 on-policy,但 single critic 的误差会被 actor 主动利用:actor 总往 Q 被偶然高估的 action 移动,训练容易脆弱。

3. TD3 的三个修正

  1. Clipped Double Q:两个 critic target 取较小值,抑制过估计。
  2. Delayed policy update:critic 更新多次后再更新 actor/target,减少 actor 追逐瞬时 Q error。
  3. Target policy smoothing:target action 加截断噪声,逼 critic 对邻域动作平滑,避免尖锐虚假峰值。
y=r+γ min_i Q_i,target(s', clip(μ_target(s')+ε))

4. SAC 的 maximum-entropy objective

J(π)=E[Σ_t γ^t(r_t+α H(π(·|s_t)))]

策略既追求 reward,也保留 entropy。常见 continuous SAC 用 tanh-squashed Gaussian actor,通过 reparameterization a=tanh(μ+σε) 让 actor gradient 穿过 sample。

5. Soft Bellman target 与 actor

y=r+γ[min(Q₁',Q₂')−α logπ(a'|s')], a'~π
J_actor=E[α logπ(a|s)−min(Q₁,Q₂)]

logπ 对应更分散的行为;α 决定 reward 与 entropy 的权衡。automatic entropy tuning 通过 target entropy 学 α,但 target 只是设计选择,不是环境自动给出的真值。

6. DDPG、TD3、SAC 比较

DDPGTD3SAC
actordeterministicdeterministicstochastic
critics通常 12,target 取 min2,soft target 取 min
exploration外加 action noise外加 action noise策略 entropy 自带
policy update每轮delayed通常每轮/按实现
主要价值奠定连续 deep actor-critic简单强 deterministic baseline稳健、数据复用、探索自然

7. Action distribution 的细节

  • network 常输出归一化 [-1,1],再按 actuator range scale;训练和环境必须同一单位。
  • SAC 的 tanh log-prob 要包含 Jacobian correction,接近饱和边界时数值尤其敏感。
  • policy 输出的位置目标与 torque action 对 dynamics 和 reward scale 完全不同。
  • action repeat/control dt 改变 MDP,一套超参不可直接搬。

8. Replay 与 update-to-data ratio

每个 environment step 做多少 gradient steps 决定数据复用和计算量。UTD 太小浪费经验;太大可能过拟合 replay distribution、放大 bootstrap error并损失 network plasticity。需要同时看 online return、held-out critic error、Q magnitude 和 buffer coverage。

9. PPO 还是 SAC

常偏向 PPO

GPU 仿真可产生海量并行数据;希望一个简单 on-policy baseline;replay 管理和 Q instability 成本不划算。

常偏向 SAC/TD3

真实交互昂贵或环境吞吐低;连续动作;需要重复利用历史 experience;可接受更复杂 critic 调试。

“SAC 更 sample-efficient”不等于 wall-clock 更快。数千 GPU env 的 PPO 可能更快达到结果;真实机器人每一步昂贵时 SAC 的数据复用更有意义。

10. 四个 continuous-control 计算

例 1:DDPG Bellman target

r=1、γ=0.99,target actor 给 a′,target critic 评为 Q′=4,则 y=1+0.99×4=4.96。当前 Q=4.5 时 TD error=0.46。

例 2:TD3 的 clipped double Q

两个 target critics 对同一 (s′,a′) 给 6 和 4,取 min=4,而非平均 5。r=0、γ=0.9 时 target=3.6;保守 0.9 是为抑制 actor 利用高估。

例 3:SAC entropy tradeoff

两个候选 action:A 的 Q=5、logπ=−0.2;B 的 Q=4.8、logπ=−1.5。α=0.3 时 actor score Q−αlogπ:A=5.06,B=5.25,因此更低概率、更高 entropy 的 B 反而胜出。

例 4:soft target update

Target parameter=2、online=5、τ=0.01:target←0.99×2+0.01×5=2.03。它只向 online 移 0.03,避免 Bellman target 每拍剧烈跳动。

常见误解:

SAC 的 entropy 不是永远让部署动作随机。evaluation 常用 actor mean/mode;训练中的 entropy 主要帮助探索和避免过早收缩,但目标 entropy 过高也会损害精确控制。

自测

1. TD3 为什么 target 取两个 Q 的较小值?

actor 容易利用正向估计误差;取 min 引入保守偏差来抑制系统性过估计。

2. SAC 为什么仍需要 replay buffer?

critic 和 actor 都基于 off-policy state/action 数据更新,buffer 允许重复利用旧经验并打散相关性。

3. target policy smoothing 和采集探索噪声是一回事吗?

不是。前者加在 Bellman target action 上正则化 Q;后者加在 environment action 上产生探索数据。

一手资料

DDPG 建立 deep deterministic actor-critic;TD3 给出三项误差控制;Soft Actor-Critic 定义 off-policy maximum-entropy actor-critic。