跳转至

第 7 章 离策略与最大熵方法

PPO 采完即弃,样本效率受限于同策略设定。机器人任务里样本往往是最贵的一项——真机按磨损与时间计价,仿真按显存计价——于是需要把交互存起来反复使用。离策略方法做这件事,代价是价值估计的偏差与调参敏感;最大熵方法在这条路上又加了一层:把探索写进目标函数,而不是外挂在动作噪声上。

1. 确定性策略梯度

连续动作下,值函数方法的瓶颈是 \(\arg\max_a Q(s,a)\)。确定性策略梯度(deterministic policy gradient, DPG)绕开它:直接学一个确定性演员 \(a=\mu_\theta(s)\),用评论家对动作的梯度给演员指方向:

\[ \nabla_\theta J\approx\mathbb E_{s\sim\mathcal D}\left[\nabla_\theta\mu_\theta(s)\,\nabla_aQ_\phi(s,a)\big|_{a=\mu_\theta(s)}\right] \]

这条式子的含义是:评论家知道"动作往哪调价值会升高",演员就照着调。它要求动作连续且 \(Q\) 对动作可微,离散动作不适用。

深度确定性策略梯度(deep deterministic policy gradient, DDPG)把 DPG 与 DQN 的工程手段拼在一起:回放池、演员与评论家各配一个软更新的目标网络、在演员输出上加高斯噪声做探索。软更新按

\[ \theta'\leftarrow\tau\theta+(1-\tau)\theta',\qquad\tau\ll1 \]

每步只挪一点,目标因此平滑变化。这套组合能训,但脆弱:Q 的过估计、奖励尺度、噪声大小、学习率比例都会显著改变结果。

2. TD3 的三处修正

双延迟深度确定性策略梯度(twin delayed DDPG, TD3)针对 DDPG 的三个失效点各改一处。

裁剪双 Q抑制过估计。同时训练两个评论家,目标取两者较小值:

\[ y=r+\gamma\min_{i=1,2}Q_{\phi'_i}(s',\tilde a) \]

取 \(\min\) 的动机与 Double DQN 同源:最大化算子系统性偏好被高估的动作,取小值把这个偏差压回去。

目标策略平滑抑制"目标动作落在尖峰上"。给目标动作加截断噪声:

\[ \tilde a=\operatorname{clip}\left(\mu_{\theta'}(s')+\operatorname{clip}(\epsilon,-c,c),\,a_{\min},a_{\max}\right),\qquad\epsilon\sim\mathcal N(0,\sigma^2) \]

它相当于假设"相近动作价值相近",让评论家在动作维度上更平滑。

延迟更新让演员慢一步。评论家每步更新,演员与目标网络每隔 \(d\) 步才动一次;评论家先收敛,演员再跟随,避免用噪声很大的价值去指导策略。

三处修正都不改变算法骨架,只是把 DDPG 的脆弱点逐一加固。代价是多一个评论家网络与一组额外超参。

3. SAC 的最大熵目标

软演员-评论家(soft actor-critic, SAC)换了一个目标:不只最大化回报,还最大化策略的熵。

\[ J(\pi)=\sum_t\mathbb E\left[r(s_t,a_t)+\alpha\mathcal H\left(\pi(\cdot\mid s_t)\right)\right] \]

\(\mathcal H\) 是策略熵,\(\alpha\) 是温度。熵项的含义是"同等回报下偏好更随机的策略":策略不会过早塌缩到单点,探索由目标函数内生,而不是外挂动作噪声。\(\alpha\to0\) 退化为普通回报最大化,\(\alpha\) 越大越偏探索。

对应的价值是软价值,Bellman 方程里多一项熵:

\[ Q(s,a)=r(s,a)+\gamma\,\mathbb E_{s'}\left[V(s')\right],\qquad V(s')=\mathbb E_{a'\sim\pi}\left[Q(s',a')-\alpha\log\pi(a'\mid s')\right] \]

实现上用双 Q 取小值抑制过估计,演员用重参数化采样:

\[ a=\tanh\left(\mu_\theta(s)+\sigma_\theta(s)\odot\xi\right),\qquad\xi\sim\mathcal N(0,I) \]

梯度可以穿过采样直接回传到演员,这是 SAC 比朴素策略梯度样本效率高的关键。动作的对数概率要带 \(\tanh\) 的雅可比修正,理由与第 6 章「策略梯度与演员-评论家」相同。

温度可以自动调。给定目标熵 \(\bar H\)(常取 \(-\dim\mathcal A\)),把 \(\alpha\) 当参数最小化

\[ J(\alpha)=\mathbb E\left[-\alpha\left(\log\pi(a\mid s)+\bar H\right)\right] \]

策略熵高于目标时 \(\alpha\) 下降,低于目标时上升。这样奖励尺度变化时不必手工重调温度,也是 SAC 在同类方法里调参负担较轻的原因。

import math

def sac_actor_loss(obs, actor, q1, q2, log_alpha, target_entropy):
    mu, log_std = actor(obs)
    std = log_std.exp()
    u = mu + std * torch.randn_like(mu)            # 重参数化采样
    a = torch.tanh(u)
    logp = (-0.5 * (((u - mu) / std) ** 2 + 2 * log_std
                    + math.log(2 * math.pi))).sum(-1)
    logp = logp - torch.log(1 - a.pow(2) + 1e-6).sum(-1)   # tanh 雅可比修正
    q = torch.min(q1(obs, a), q2(obs, a))
    alpha = log_alpha.exp()
    actor_loss = (alpha * logp - q).mean()                # 熵项奖励随机性
    alpha_loss = -(log_alpha * (logp.detach() + target_entropy)).mean()
    return actor_loss, alpha_loss

4. 回放池与样本效率

离策略方法的收益全部来自回放池:一份转移可以被多次采样,梯度步数不再与交互步数一比一。代价是池中数据来自旧策略,与实际策略的偏离(off-policyness)越大,价值估计越不可信。

几个与池相关的量决定了训练行为:

  • 容量:太小则数据新鲜但覆盖不足,太大则旧策略数据长期留存、偏离变大。视觉任务的常见量级是百万级转移。
  • 预热:池中样本少于一个批次的若干倍时先不更新,否则早期价值被少量样本带偏。
  • 更新比(update-to-data ratio):每个环境步做几次梯度更新。大于 1 能提高样本效率,但过高会让价值过拟合当前池。
  • 批次大小:小批次噪声大、更新频繁;大批次稳定但每步代价高。

样本效率的账要和并行度一起算。仿真里 4096 个环境并行采样时,PPO 的墙钟时间往往优于 SAC——同策略的低样本效率被并行度补上了。反过来,真机或单环境仿真里每个样本都贵,SAC 与 TD3 的复用优势才体现出来。这也是 isaac-note 第 5 章「RL 训练流水线」以 PPO 为主线的实际原因。

5. 三族选型判据

PPO、SAC、TD3 覆盖了机器人连续控制的主流选择。判据不是"哪个更先进",而是任务允许哪种成本:

维度 PPO SAC TD3
样本效率 低(采完即弃) 高(回放复用) 高(回放复用)
稳定性 高 中 中低
超参敏感度 中(裁剪、熵系数) 高(奖励尺度、温度) 高(噪声、延迟周期)
并行扩展 易(多环境线性扩展) 难(每步更新、单环境为主) 难
动作空间 连续与离散 连续;另有离散变体 连续
探索来源 策略熵 + 采样 目标内生的熵项 外加动作噪声
典型场景 大规模并行 locomotion 真机、样本预算紧 精细操作、确定性策略

判据:先看样本从哪来

仿真并行充分时选 PPO,墙钟时间最短;真机或单环境时选 SAC 或 TD3,用回放池把每个样本榨干。任务需要确定性策略、又要求平滑动作时,TD3 的目标平滑更贴合。

quadrantChart
    title 连续控制算法的样本效率与稳定性
    x-axis 低样本效率 --> 高样本效率
    y-axis 低稳定性 --> 高稳定性
    quadrant-1 高效且稳
    quadrant-2 稳但费样本
    quadrant-3 费样本且不稳
    quadrant-4 高效但不稳
    PPO: [0.22, 0.85]
    SAC: [0.80, 0.60]
    TD3: [0.72, 0.42]

6. 分布式与异步

单机之外还有一层工程:把采样与学习拆到不同进程甚至不同机器。导入式策略梯度(importance weighted actor-learner architecture, IMPALA)用多个演员并行采样、一个学习器集中更新,并用 V-trace 修正演员策略与学习器策略之间的滞后。分布式优先回放(distributed prioritized experience replay, APEX)把回放池与优先采样分布到多机,DQN 类方法因此能扩展到大规模。

这两条路的收益来自吞吐,代价是通信、滞后修正与调试复杂度。机器人单机训练通常用不到;只有当环境步数是瓶颈、且已有集群时,分布式才有意义。仿真平台的并行机制见 isaac-note 第 4 章「物理管线与向量化仿真」。

7. 要点

  • 确定性策略梯度用评论家对动作的梯度指导演员,只适用于连续动作;DDPG 把回放池、目标网络与探索噪声拼在一起。
  • TD3 的三处修正分别针对过估计、目标动作尖峰与演员跟随过快:裁剪双 Q、目标策略平滑、延迟更新。
  • SAC 把熵写进目标,探索内生于策略;温度可按目标熵自动调节,动作经 \(\tanh\) 后必须做对数概率修正。
  • 回放池的容量、预热、更新比与批次大小共同决定训练行为;样本效率要和并行度一起算。
  • 选型判据是样本来源:仿真并行充分选 PPO,真机或单环境选 SAC / TD3;需要平滑确定性动作时 TD3 更贴合。
  • 分布式(IMPALA、APEX)换吞吐但增加滞后修正与调试成本,单机训练通常不需要。

参考文献与延伸阅读

  • Silver, D., Lever, G., Heess, N., Degris, T., Wierstra, D., & Riedmiller, M. Deterministic Policy Gradient Algorithms. ICML, 2014. PMLR
  • Lillicrap, T. P., Hunt, J. J., Pritzel, A., et al. Continuous Control with Deep Reinforcement Learning. ICLR, 2016. arXiv
  • Fujimoto, S., van Hoof, H., & Meger, D. Addressing Function Approximation Error in Actor-Critic Methods. ICML, 2018. arXiv
  • Haarnoja, T., Zhou, A., Abbeel, P., & Levine, S. Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor. ICML, 2018. arXiv
  • Haarnoja, T., Zhou, A., Hartikainen, K., et al. Soft Actor-Critic Algorithms and Applications. arXiv:1812.05905, 2018. arXiv