先记住一句话
DDPG 是 deterministic actor + single critic;TD3 用 twin critics、delayed actor update 和 target smoothing 修补高估;SAC 用 stochastic actor + maximum entropy,并通常也使用 twin critics。
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 的三个修正
- Clipped Double Q:两个 critic target 取较小值,抑制过估计。
- Delayed policy update:critic 更新多次后再更新 actor/target,减少 actor 追逐瞬时 Q error。
- 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 比较
| DDPG | TD3 | SAC | |
|---|---|---|---|
| actor | deterministic | deterministic | stochastic |
| critics | 通常 1 | 2,target 取 min | 2,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。