强化学习基础:从 V、Q、A 到经典算法、GRPO 与 SAPO¶
🎮 从单步转移和数据来源出发,理解 RL、MBRL 以及策略后训练。
预计阅读:35 min
前置知识:Python、概率、神经网络和基本机器人控制
下一步:MuJoCo 教程 · 机器人学基础 · Benchmark 指南
本文路线:MDP → 价值函数 → 数据与训练范式 → 经典算法 → GRPO/SAPO → 机器人闭环
数据从哪里来?学的是 V、Q 还是策略?目标值怎么做出来?价值信息怎样改策略?它怎样处理估计误差和数据偏移?
本文覆盖 DQN、DDPG、TD3、TD3+BC、SAC、PPO、IQL、GRPO 和 SAPO。前七个主要用于经典控制或 offline RL,GRPO/SAPO 主要放在语言模型和 VLA 的后训练里讲。想看它们和世界模型的关系,先看知识图谱;想找代码,看代码仓与工具;想按顺序读论文,看论文清单。
0. 统一阅读框架¶
| 层次 | 要回答的问题 | 关键对象 |
|---|---|---|
| 任务 | 智能体看见什么、能做什么、奖励什么? | observation、action、reward、termination |
| 数据 | 训练时是否继续与环境交互?数据由哪个策略产生? | online/offline、on-policy/off-policy |
| 估计 | 没有人工价值标签时,怎样估计长期回报? | return、Monte Carlo、TD、Bellman bootstrap |
| 策略 | 价值信息怎样转化为动作或参数更新? | argmax、policy gradient、weighted BC、group-relative update |
| 稳定性 | 如何缓解高估、目标漂移或分布外动作? | replay、target network、double critic、行为约束 |
一条实用的阅读顺序是:先理解 MDP、return 和 V/Q/A,再理解 TD 与训练范式,最后比较具体算法的价值目标和策略改进规则。
1. 强化学习的基本对象¶
1.1 交互与 MDP¶
标准交互步骤为:
状态/观测 s_t --策略选择 a_t--> 环境或机器人
环境返回即时奖励 r_t 和下一状态/观测 s_{t+1}
记录转移 z_t = (s_t, a_t, r_t, s_{t+1}, d_t, b_t)
这里,\(s_t\) 是时刻 \(t\) 的状态或观测,\(a_t\) 是实际执行的动作,\(r_t\) 是执行动作后得到的即时奖励,\(s_{t+1}\) 是下一状态或观测;\(d_t\in\{0,1\}\) 是 bootstrap 终止标记,只有任务真正终止时才取 1;\(b_t\in\{0,1\}\) 是 轨迹边界标记,只要下一步发生 reset 就取 1。因而时间上限处通常有 \(b_t=1,d_t=0\)。若只讨论核心 Bellman 更新,可省略 \(b_t\),把转移简写为 \((s_t,a_t,r_t,s_{t+1},d_t)\)。
一个 Markov Decision Process(MDP)通常写作 \((S,A,P,R,\gamma)\):
| 符号 | 含义 | 具身任务中需要明确的内容 |
|---|---|---|
| \(S\) | 状态空间 | 图像、本体状态、力觉、历史窗口是否足以支持决策 |
| \(A\) | 动作空间 | 关节位置/速度/力矩,或末端位姿增量与夹爪命令 |
| \(P(s'\mid s,a)\) | 状态转移 | 机器人动力学、接触、控制器和环境共同造成的演化 |
| \(R(s,a,s')\) | 奖励函数 | 成功、进度、碰撞、能耗、平滑性与安全代价 |
| \(\gamma\) | 折扣因子 | 未来回报相对当前回报的重要程度 |
真实状态通常不可完全观测,此时策略实际接收的是 observation \(o_t\),可能需要历史、RNN 或 belief state。工程文档仍应明确区分环境内部 state 和策略输入 observation。
1.2 Reward 与 Return¶
Reward 是单步反馈,return 是从当前时刻开始的长期累计反馈:
价值函数估计的是 return 的条件期望,而不是即时 reward。稀疏成功奖励、稠密 shaping reward 和安全惩罚会改变优化行为;实验中应同时报告原始任务成功率,避免只用 shaped return 掩盖任务失败。
1.3 Policy¶
- 随机策略:\(\pi(a\mid s)\) 表示在状态 \(s\) 下选择动作 \(a\) 的概率或密度。
- 确定性策略:\(a=\mu(s)\),同一状态在无外部噪声时映射到同一动作。
- 隐式策略:没有独立 Actor,而由 \(\mathrm{arg\,max}_a Q(s,a)\) 定义动作,例如 DQN。
2. V、Q、A:价值函数的统一语言¶
2.1 定义与关系¶
状态价值评价状态的整体前景:
动作价值多指定了当前动作:
优势函数衡量动作相对当前策略基准的好坏:
三者满足:
只有在最优或贪心关系下,才有 \(V^*(s)=\max_a Q^*(s,a)\)。对一般随机策略,\(V^\pi\) 是按策略对 \(Q^\pi\) 求期望,不是取最大值。
2.2 同一符号在不同算法中的语义¶
| 场景 | 价值对象 | 语义 |
|---|---|---|
| 策略评估 | \(V^\pi,Q^\pi\) | 评价固定策略\(\pi\) 的预期回报 |
| 最优控制 | \(V^*,Q^*\) | 评价最优行为能达到的回报;DQN 接近这一语义 |
| 最大熵 RL | soft\(V\), soft \(Q\) | 回报中同时考虑策略熵;SAC 使用这一语义 |
| IQL | expectile\(V\) | 数据动作\(Q\) 的非对称回归基准,不是普通均值 \(V^\pi\) |
“没有独立网络”不等于数学对象不存在。例如 PPO 不训练任意动作可查询的 \(Q\) 网络,但 \(Q^\pi=V^\pi+A^\pi\) 仍成立。
3. 价值监督信号从哪里来¶
环境通常只直接提供转移 \((s,a,r,s',d)\),不会提供 \(Q\) 或 \(V\) 标签。长期价值需要从完整轨迹回报或 Bellman 关系中估计。
3.1 Monte Carlo 与 TD¶
完整 rollout 后,可以用观测到的 \(G_t\) 监督 \(V(s_t)\) 或 \(Q(s_t,a_t)\)。Monte Carlo 目标直观、无 bootstrap 偏差,但要等待轨迹结束且方差较高。
TD 方法使用下一状态的当前价值估计构造目标:
Bootstrap 能更快复用局部转移,但目标依赖当前估计,可能产生偏差和误差传播。经验回放、目标网络和双 Critic 都是在控制这一训练闭环中的不同不稳定源。
3.2 稀疏奖励传播¶
s0 --r=0--> s1 --r=0--> s2 --r=1--> terminal
Q(s2,a2) ≈ 1
Q(s1,a1) ≈ 0 + 0.9 × 1 = 0.9
Q(s0,a0) ≈ 0 + 0.9 × 0.9 = 0.81
价值学习可理解为把未来奖励沿时间传播到更早的状态和动作。传播速度取决于轨迹覆盖、更新次数、n-step 长度和函数逼近能力。
3.3 终止与时间截断¶
任务真正终止时 \(d_t=1\),未来价值应置零;仅因时间上限而切断轨迹时,通常有 \(b_t=1,d_t=0\),仍应 bootstrap。把两种情况合并成同一个标记会系统性低估时间上限附近的价值。
同时记录 \(b_t\) 与 \(d_t\) 是为了满足两种不同需求:\(b_t\) 在数据组织上切断轨迹,使 reset 后的样本属于新 episode;\(d_t\) 在价值学习上决定是否保留 bootstrap。例如时间上限处仍计算 \(r_t+\gamma V(s_{t+1})\),却不能把 reset 后的新初始状态接到同一条 GAE 递推中。若环境绝不会在任务完成前 reset,或数据已提供等价的折扣与边界信息,则可省略 \(b_t\)。
4. 理解算法前必须区分的训练范式¶
| 维度 | 类别 | 典型算法或含义 |
|---|---|---|
| 动作空间 | 离散 / 连续 | DQN 主要用于离散;TD3、SAC 常用于连续;PPO 可覆盖两者 |
| 策略数据关系 | on-policy / off-policy | PPO 近似 on-policy;DQN、TD3、SAC 用 replay,属于 off-policy |
| 交互方式 | online / offline | online 持续收集新数据;TD3+BC、IQL 主要学习固定数据集 |
| 策略形式 | 隐式 / 确定性 / 随机 | DQN 隐式;DDPG/TD3 确定性;SAC/PPO 通常随机 |
| 是否建模环境 | model-free / model-based | 是否显式用动力学/奖励模型做 rollout、规划或策略优化 |
on-policy/off-policy 描述更新数据和目标策略的关系,online/offline 描述训练时能否继续交互,model-free/model-based 描述是否显式利用环境模型。三者不是同一条分类轴。
连续动作不能逐一枚举,DDPG、TD3 和 SAC 因此训练 Actor 来生成高价值动作。Off-policy 算法通常还使用:
- 经验回放:随机采样历史转移,降低连续轨迹相关性并复用数据。
- 目标网络:用缓慢变化的参数构造 Bellman target,例如 \(\bar\theta\leftarrow\tau_{\mathrm{P}}\theta+(1-\tau_{\mathrm{P}})\bar\theta\),其中 \(\tau_{\mathrm{P}}\in(0,1]\) 是 Polyak 更新系数。
以下统一使用数学符号。\(B\) 表示 minibatch 大小,\(N\) 表示并行环境数,\(T\) 表示 rollout 长度,\(A\) 表示连续动作维度,\(B_q\) 表示条件数量,\(G\) 表示每个条件的成组样本数,\(L\) 表示补齐后的最大序列长度。无上横线的参数表示在线网络,上横线表示目标网络;上标 \(\mathrm{old}\) 表示采样策略快照,上标 \(\mathrm{ref}\) 表示参考策略;粗体表示批量张量,\(\mathcal D\) 表示固定数据集。状态 \(s_t\) 也可以是观测 \(o_t\):在具身任务中,它常是由图像、机器人本体状态、语言指令和历史帧组成的字典,而不一定是一条向量。
4.1 单步转移与 replay/offline batch¶
DQN、DDPG、TD3、TD3+BC、SAC 和 IQL 的完整转移记录为
从数据源采样 \(B\) 条转移得到 minibatch \(\mathcal B=\{z_{t_i}\}_{i=1}^{B}\),公式中的六个单步变量分别沿 batch 维堆叠如下:
| 单步符号 | 批量符号 | 含义与典型形状 |
|---|---|---|
| \(s_t\) | \(\mathbf S\) | 当前状态/观测,形状为\([B,*S]\) 或由多个 \([B,\ldots]\) 张量组成的字典 |
| \(a_t\) | \(\mathbf A\) | 动作;DQN 的\(\mathbf A\) 为离散索引 \([B]\),连续控制为浮点张量 \([B,A]\) |
| \(r_t\) | \(\mathbf R\) | 标量奖励\([B,1]\);第 \(h\) 个奖励分项记为 \(r_t^{(h)}\),批量形式为 \(\mathbf R^{(h)}\) |
| \(s_{t+1}\) | \(\mathbf S'\) | 下一状态/观测,形状与\(\mathbf S\) 对应;自动 reset 时必须取 reset 前的最终观测 |
| \(d_t\) | \(\mathbf d\) | bootstrap 终止标记\([B,1]\);任务真正终止时为 1,否则为 0 |
| \(b_t\) | \(\mathbf b\) | 轨迹边界标记\([B,1]\);发生 reset 时为 1,时间上限处通常满足 \(b_t=1,d_t=0\) |
训练时再由 \(d_t\) 派生 Bellman bootstrap mask \(m_t:=1-d_t\),批量形式为 \(\mathbf m:=1-\mathbf d\);\(m_t\) 不属于 \(z_t\) 的原始环境字段。可选元数据包括 episode 标识 \(e_t\)、任务标识 \(u_t\) 和安全代价 \(c_t\);时间步已经由下标 \(t\) 表示。它们仅用于分组、审计或明确定义的约束目标。
若只讲核心 Bellman 更新,可省略 \(b_t\),把转移简写为 \((s_t,a_t,r_t,s_{t+1},d_t)\)。若使用 n-step return,还应存储实际累计步数 \(n_t\) 或折扣 \(\gamma^{n_t}\),以及第 \(n_t\) 步后的状态与 \(d_{t+n_t}\)。
4.2 PPO rollout batch¶
对第 \(t\) 条 PPO rollout 转移,计算所需字段为
实现时可以复用相邻位置,但必须正确处理 reset:
- 当 \(b_t=0\) 时,第 \(t\) 条转移的 \(s_{t+1}\) 正好是 rollout 下一位置的策略输入,因此 \(v_{t+1}^{\mathrm{old}}\) 可由价值数组向前平移一位得到。
- 当 \(b_t=1\) 时,\(s_{t+1}\) 必须是 reset 之前的最终观测;reset 后的新初始观测记为 \(s_{t+1}^{\mathrm{reset}}\),它是下一 episode 的策略输入,不能替代当前转移的 bootstrap 状态。此时应单独保留最终观测及其价值。
- rollout 在 \(T\) 步处人为切段但任务未终止时,也要额外计算 \(v_T^{\mathrm{old}}=V_{\psi_{\mathrm{old}}}(s_T)\);若 \(d_t=1\),该下一状态价值会被 \(1-d_t\) 置零,可直接存为 0。
计算 GAE 后再派生 Advantage \(\hat A_t\)、价值目标 \(\hat V_t\) 和有效位置掩码 \(M_t\),通常展平为 \([TN,\ldots]\) 后切 minibatch。各符号定义如下:
- \(\ell_t^{\mathrm{old}}\):采样动作 \(a_t\) 时,行为策略对该动作给出的对数概率(连续动作时为对数概率密度),即 \(\ell_t^{\mathrm{old}}:=\log\pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)\)。离散动作从 categorical 分布取对应动作的 log-prob;连续动作通常把各动作维度求和,并包含
tanh等动作变换的密度修正。更新 Actor 时当前策略计算 \(\ell_t^\theta:=\log\pi_\theta(a_t\mid s_t)\),于是 \(\rho_t(\theta)=\exp\!\left(\ell_t^\theta-\ell_t^{\mathrm{old}}\right)\),即 PPO clip 使用的新旧策略概率比。 - \(v_t^{\mathrm{old}}\):采样时 Value Critic 对当前状态未来折扣回报的预测,即 \(v_t^{\mathrm{old}}:=V_{\psi_{\mathrm{old}}}(s_t)\)。相应地,\(v_{t+1}^{\mathrm{old}}:=V_{\psi_{\mathrm{old}}}(s_{t+1})\)。二者都不是 \(r_t\) 或真实 return;它们用于 TD residual、GAE 和可选的 value clipping。
- \(\hat A_t\):由奖励、\(v_t^{\mathrm{old}}\) 与 bootstrap mask 计算的 GAE。
- \(\hat V_t:=\hat A_t+v_t^{\mathrm{old}}\):Value Critic 的回归目标。
- \(M_t\in\{0,1\}\):有效位置掩码;padding 或无效时间步取 0。
上标 \(\mathrm{old}\) 表示“产生当前 rollout 的网络版本”。同一批数据训练多个 epoch 时,\(\ell_t^{\mathrm{old}}\) 与 \(v_t^{\mathrm{old}}\) 始终不变。
4.3 GRPO/SAPO grouped sequence batch¶
第 \(j\) 个条件下的第 \(i\) 个样本补齐到长度 \(L\),形成 \([B_q,G,L]\) 张量:
| 符号 | 典型批量形状 | 含义 |
|---|---|---|
| \(q_j\) | \([B_q,\ldots]\) | 第\(j\) 个 prompt、任务指令或绑定了初始观测的条件 |
| \(y_{j,i,t}\) | \([B_q,G,L]\) | 第\(i\) 个输出在位置 \(t\) 的 token、action token 或 action chunk |
| \(L_{j,i}\) | \([B_q,G]\) | 样本的有效长度 |
| \(M_{j,i,t}\in\{0,1\}\) | \([B_q,G,L]\) | 响应/动作有效位置掩码;prompt、padding 或无效动作取 0 |
| \(R_{j,i}\) | \([B_q,G]\) | 样本总奖励;第\(h\) 个奖励分项记为 \(R_{j,i}^{(h)}\) |
| \(\ell_{j,i,t}^{\mathrm{old}}:=\log\pi_{\theta_{\mathrm{old}}}(y_{j,i,t}\mid q_j,y_{j,i,<t})\) | \([B_q,G,L]\) | 生成策略对已采样位置的 log-prob |
| \(\ell_{j,i,t}^{\theta}:=\log\pi_\theta(y_{j,i,t}\mid q_j,y_{j,i,<t})\) | \([B_q,G,L]\) | 当前策略训练时重算的 log-prob |
| \(\ell_{j,i,t}^{\mathrm{ref}}:=\log\pi_{\mathrm{ref}}(y_{j,i,t}\mid q_j,y_{j,i,<t})\) | \([B_q,G,L]\) | 启用参考策略 KL 时的参考 log-prob |
| \(\rho_{j,i,t}=\exp(\ell_{j,i,t}^{\theta}-\ell_{j,i,t}^{\mathrm{old}})\) | \([B_q,G,L]\) | token/动作级新旧策略概率比 |
| \(\hat A_{j,i,t}\) | \([B_q,G,L]\) | 位置级 Advantage;仅有 outcome reward 时由组内奖励得到\(\hat A_{j,i}\),再令所有有效位置共享 \(\hat A_{j,i,t}=\hat A_{j,i}\) |
其中 \(q_j\) 本身就是组标识。安全代价可记为 \(C_{j,i}\),失败类别与终止原因作为审计元数据。对 VLA,必须明确 \(q_j\) 绑定的指令、观测与初始条件,并定义 \(y_{j,i,t}\) 对应 action token、action chunk 还是连续动作密度。
5. 七种经典控制算法、GRPO 与 SAPO¶
5.1 DQN:离散动作的 value-based RL¶
DQN 的训练数据来自智能体与环境的交互,而不是预先存在的 \(Q\) 值标签。令 \(\mathcal A\) 表示有限离散动作集合,\(|\mathcal A|\) 表示动作数,\(\beta_t(a\mid s)\) 表示第 \(t\) 步实际收集数据的行为策略。先固定一个确定性的并列决策规则 \(a_{\mathrm g}(s)\):对 \(\mathrm{arg\,max}_{a\in\mathcal A}Q_{\theta_t}(s,a)\) 出现并列时,按预先约定的顺序选一个动作。常用的 \(\epsilon_{\mathrm g}\)-greedy 行为策略为
其中 \(\epsilon_{\mathrm g}\in[0,1]\) 是随机探索概率,\(\theta_t\) 是采样时在线 \(Q\) 网络的参数,\(\mathbf 1[\cdot]\) 是条件成立时取 1、否则取 0 的指示函数。智能体从 \(a_t\sim\beta_t(\cdot\mid s_t)\) 取动作并执行,环境返回 \(r_t\)、\(s_{t+1}\)、\(d_t\) 和 \(b_t\),随后把转移 \(z_t=(s_t,a_t,r_t,s_{t+1},d_t,b_t)\) 写入 replay buffer \(\mathcal R\)。训练数据就是从 \(\mathcal R\) 中随机抽出的历史转移;buffer 初期可以先用随机策略或高探索率的 \(\epsilon_{\mathrm g}\)-greedy 策略填充。
DQN 是 off-policy:产生数据的是带随机探索的行为策略 \(\beta_t\),而学习目标对应的目标策略是贪心策略
Bellman target 直接评价下一状态下的最大动作价值,而不要求下一动作继续服从产生该条数据的 \(\beta_t\)。此外,replay 中的样本可能由更早时刻 \(k<t\) 的网络参数 \(\theta_k\) 所对应的行为策略产生,当前网络仍可反复使用它们。这正是 off-policy 的核心,而不是“数据不来自环境”。因此,标准 DQN 通常是在线交互收集数据、离策略复用数据;如果只给一个固定数据集,也可以计算同样的 TD loss,但普通 DQN 容易对数据覆盖之外的动作产生过高估计,不能因此直接视为稳健的 offline RL 算法。
目标网络用于构造监督信号:
它没有独立 Actor;评估策略通常是 \(a^*=\mathrm{arg\,max}_a Q_\theta(s,a)\)。max 容易挑中被噪声高估的动作,Double DQN 因而用在线网络选动作、目标网络评价动作。
算法流程¶
- 初始化:创建在线 \(Q_\theta\)、目标 \(Q_{\bar\theta}\) 和 replay buffer \(\mathcal R\);令 \(\bar\theta\leftarrow\theta\)。
- 由行为策略采样动作:输入当前状态 \(s_t\),从 \(a_t\sim\beta_t(\cdot\mid s_t)\) 采样;也就是以概率 \(\epsilon_{\mathrm g}\) 从 \(\mathcal A\) 均匀随机选动作,否则选择 \(\mathrm{arg\,max}_{a\in\mathcal A}Q_{\theta_t}(s_t,a)\)。这里的 \(\beta_t\) 负责产生数据,不是最终要学习的贪心策略 \(\pi_Q\)。
- 环境交互并记录字段:执行离散动作索引 \(a_t\);环境返回奖励 \(r_t\)、下一状态 \(s_{t+1}\)、bootstrap 终止标记 \(d_t\) 和轨迹边界标记 \(b_t\),将 \(z_t=(s_t,a_t,r_t,s_{t+1},d_t,b_t)\) 写入 \(\mathcal R\)。可另存 episode 标识 \(e_t\) 和任务标识 \(u_t\),但 DQN 的 TD 更新无需保存行为动作概率 \(\beta_t(a_t\mid s_t)\)。
- 从历史数据采样并构造 target:从 \(\mathcal R\) 随机取 \(B\) 个转移,它们可以来自不同时间、不同探索率和不同旧网络参数;堆叠为 \(\mathbf S:[B,*S]\)、离散索引 \(\mathbf A:[B]\)、奖励 \(\mathbf R:[B,1]\)、下一状态 \(\mathbf S':[B,*S]\)、终止标记 \(\mathbf d:[B,1]\) 和边界标记 \(\mathbf b:[B,1]\)。用 \(\mathbf A\) gather 出 \(Q_\theta(\mathbf S,\mathbf A)\),并以 \(\mathbf m=1-\mathbf d\) 构造 target;普通 DQN 用目标网络直接取 \(\max Q\),Double DQN 用在线网络选下一动作、目标网络评价该动作。这个贪心 backup 与采样时的 \(\beta_t\) 不同,因此属于 off-policy 更新。
- 更新在线网络:最小化 TD error,只对 \(Q_\theta\) 反向传播,target 必须停止梯度。
- 同步目标网络:每隔若干步硬复制参数,或使用 Polyak 软更新;逐步降低 \(\epsilon_{\mathrm g}\)。
- 评估:关闭随机探索并使用 greedy action,按固定 seed 报告回报和成功率。
5.2 DDPG:连续动作的确定性 Actor-Critic¶
DDPG 用 Actor \(\mu_\phi(s)\) 近似连续动作的 \(\mathrm{arg\,max}\),并用 Critic 评价状态动作对:
它维护在线 Actor/Critic 及对应目标副本。训练时通常给行为动作加入探索噪声;评估时关闭噪声。DDPG 对 Critic 误差、高估和超参数较敏感,实践中常以 TD3 作为更稳健的确定性基线。
算法流程¶
- 初始化:创建在线 Actor \(\mu_\phi\)、Critic \(Q_\theta\)、对应目标网络和 replay buffer,并把在线参数复制给目标网络。
- 收集并保存转移:用 \(a_t=\mu_\phi(s_t)+\epsilon_t^{\mathrm{exp}}\) 与环境交互,其中 \(\epsilon_t^{\mathrm{exp}}\) 表示探索噪声;裁剪后保存 \((s_t,a_t,r_t,s_{t+1},d_t,b_t)\)。动作 \(a_t\in\mathbb R^A\),Critic 使用实际执行的裁剪后动作。
- 采样批次并构造 Critic target:读取 \(\mathbf S:[B,*S]\)、\(\mathbf A:[B,A]\)、\(\mathbf R:[B,1]\)、\(\mathbf S':[B,*S]\)、\(\mathbf d,\mathbf b:[B,1]\)。由目标 Actor 生成 \(\mathbf A'=\mu_{\bar\phi}(\mathbf S')\),再以 \(\mathbf m=1-\mathbf d\) 计算 \(\mathbf y=\mathbf R+\gamma\mathbf mQ_{\bar\theta}(\mathbf S',\mathbf A')\);replay 无需保存动作概率。
- 更新 Critic:最小化 \(Q_\theta(s,a)\) 与停止梯度的 \(y\) 之间的 TD loss。
- 更新 Actor:最小化 \(-\mathbb E[Q_\theta(s,\mu_\phi(s))]\),梯度穿过 Critic 的动作输入传回 Actor,但此步不更新 Critic 参数。
- 软更新目标网络:分别更新目标 Actor 与目标 Critic;然后继续交互和训练。
- 评估:关闭探索噪声,直接执行 \(\mu_\phi(s)\)。
5.3 TD3:稳定 DDPG¶
TD3 在 DDPG 上加入三项改进:
- 双 Critic,并在 target 中取较小值,缓解过估计。
- 延迟更新 Actor 和目标网络,让 Critic 先获得更稳定的估计。
- 对目标动作加入截断噪声,平滑 Critic 对窄峰动作的估计。
其中 \(\epsilon^{\mathrm{targ}}\) 是 target policy smoothing 噪声,\(c>0\) 是噪声截断幅度,\(a_{\min},a_{\max}\) 是合法动作边界。该噪声与收集数据时的探索噪声 \(\epsilon_t^{\mathrm{exp}}\) 用途不同,不能混为同一个开关。
算法流程¶
- 初始化:创建一个在线 Actor、两个独立在线 Critic、三者的目标副本和 replay buffer。
- 收集并保存转移:给在线 Actor 动作加入探索噪声 \(\epsilon_t^{\mathrm{exp}}\),执行裁剪后的连续动作,并保存 \((s_t,a_t,r_t,s_{t+1},d_t,b_t)\);其中 \(a_t\) 是实际执行动作。
- 采样批次并平滑目标动作:读取 \(\mathbf S:[B,*S]\)、\(\mathbf A:[B,A]\)、\(\mathbf R:[B,1]\)、\(\mathbf S':[B,*S]\)、\(\mathbf d,\mathbf b:[B,1]\);给目标 Actor 的下一动作加入已截断的独立噪声 \(\epsilon^{\mathrm{targ}}\),再把结果裁剪到 \([a_{\min},a_{\max}]\),得到 \(\widetilde{\mathbf A}'\)。该噪声是训练时派生量,不属于 replay。
- 构造保守 target:两个目标 Critic 都评价 \(\widetilde{\mathbf A}'\),以 \(\mathbf m=1-\mathbf d\) 计算 \(\mathbf y=\mathbf R+\gamma\mathbf m\min_iQ_{\bar\theta_i}(\mathbf S',\widetilde{\mathbf A}')\)。
- 更新双 Critic:每个训练步分别最小化两个 Critic 的 TD loss,保持独立参数和独立误差。
- 延迟更新策略:令 \(K_{\mathrm{delay}}\) 表示 Actor 更新间隔;每完成 \(K_{\mathrm{delay}}\) 个 Critic 更新步,才用 \(-Q_1(s,\mu(s))\) 更新 Actor,并软更新全部目标网络。
- 评估:关闭探索噪声和目标平滑噪声,只执行在线 Actor 的确定性动作。
5.4 TD3+BC:给离线策略改进加入行为约束¶
直接在固定数据上运行 TD3 时,Actor 可能利用 Critic 在数据外动作上的错误高值。TD3+BC 在 Actor 目标中加入行为克隆约束:
其中 \(a_{t,\mathcal D}\) 是离线数据在 \(s_t\) 上记录的动作,\(\alpha>0\) 是价值项的基础权重,\(\varepsilon_Q>0\) 防止归一化分母为零,\(\lambda_Q\) 是实际乘在 Q 项上的权重;\(\pi_\phi\) 和 \(Q_\theta\) 分别表示当前 Actor 与 Critic。不同实现也会直接固定 \(\lambda_Q\),但必须明确是否做 Q 尺度归一化,否则两项的相对权重不可比。
算法流程¶
- 准备并校验固定数据:加载 \(\mathcal D=\{(s_t,a_t,r_t,s_{t+1},d_t,b_t)\}\);连续动作 \(a_t\in\mathbb R^A\)。校验动作边界、终止语义与缺失字段,计算状态/动作归一化统计;可用 \(e_t,u_t\) 做切分和审计,训练期间不再向环境收集数据。
- 初始化:创建 TD3 的 Actor、双 Critic 及目标网络。
- 采样数据动作:取 \(\mathbf S:[B,*S]\)、数据动作 \(\mathbf A_{\mathcal D}:[B,A]\)、\(\mathbf R:[B,1]\)、\(\mathbf S':[B,*S]\)、\(\mathbf d,\mathbf b:[B,1]\);Critic 只在 \((\mathbf S,\mathbf A_{\mathcal D})\) 上接受直接监督,BC 项也使用同一个 \(\mathbf A_{\mathcal D}\)。
- 更新双 Critic:沿用 TD3 的目标 Actor、target smoothing 和 clipped double Q,以 \(\mathbf m=1-\mathbf d\) 构造 \(\mathbf y\) 并更新两个 Critic。
- 延迟更新 Actor:同时最大化 \(Q(s_t,\pi(s_t))\) 并最小化 \(\|\pi(s_t)-a_{t,\mathcal D}\|^2\);按实现规则归一化 \(Q\) 项的尺度。
- 软更新目标网络:延迟 Actor 更新后同步目标 Actor 和两个目标 Critic。
- 离线评估与闭环评估:先检查数据动作上的损失和预测分布,再按独立环境协议评估策略;除非明确进入 offline-to-online 阶段,否则评估轨迹不回流训练。
5.5 SAC:最大熵随机 Actor-Critic¶
SAC 优化回报与策略熵之和。现代连续动作版本通常维护一个随机 Actor、两个在线 Critic 和两个目标 Critic:
温度 \(\alpha\) 控制探索与回报的权衡,可固定或自动调节。SAC 的 Critic 学习 soft \(Q\),不能直接当作仅累计环境 reward 的普通 \(Q\)。
算法流程¶
- 初始化:创建随机 Actor、两个独立在线 Critic、两个目标 Critic、replay buffer;设置固定 \(\alpha\) 或可训练的 \(\log\alpha\)。
- 收集并保存转移:Actor 输出动作分布参数,通过重参数化采样并执行连续动作,保存 \((s_t,a_t,r_t,s_{t+1},d_t,b_t)\);SAC 是 off-policy,replay 不必保存采样时的动作 log-prob。
- 采样批次并构造 soft target:读取 \(\mathbf S:[B,*S]\)、\(\mathbf A:[B,A]\)、\(\mathbf R:[B,1]\)、\(\mathbf S':[B,*S]\)、\(\mathbf d,\mathbf b:[B,1]\)。当前 Actor 在 \(\mathbf S'\) 上重新采样 \(\mathbf A'\),并计算 \(\ell_\phi':=\log\pi_\phi(\mathbf A'\mid\mathbf S'):[B,1]\);以 \(\mathbf m=1-\mathbf d\) 构造 \(\mathbf y=\mathbf R+\gamma\mathbf m[\min_iQ_{\bar\theta_i}(\mathbf S',\mathbf A')-\alpha\ell_\phi']\)。\(\mathbf A'\) 与 \(\ell_\phi'\) 都是训练时派生量。
- 更新双 Critic:分别最小化两个 soft Q 的 TD loss。
- 更新 Actor:在当前状态重新采样 \(a\sim\pi_\phi(\cdot\mid s)\),最小化 \(\alpha\log\pi_\phi(a\mid s)-\min_iQ_{\theta_i}(s,a)\)。
- 更新温度:若启用自动调温,更新 \(\alpha\) 使策略熵接近 target entropy。
- 更新目标 Critic:对两个目标 Critic 做 Polyak 软更新;SAC 通常没有目标 Actor。
- 评估:使用策略分布的均值或确定性变换动作,关闭额外探索采样,并记录熵与回报。
5.6 PPO:用 Advantage 约束策略梯度更新¶
PPO 用当前策略收集 rollout,以 Value Critic 和 generalized advantage estimation(GAE)估计优势:
PPO 的 loss 计算单位是单个时间位置 \(t\),但该位置的 \(\hat A_t\) 依赖一段连续 rollout 中从 \(t\) 往后的奖励与价值,因此采样和 Advantage 计算不能只看一个孤立 timestep。实践中通常用 \(N\) 个并行环境各收集 \(T\) 步,形成 \(N\times T\) 个位置;rollout 不必覆盖完整 episode。若第 \(T\) 步只是采样片段结束而非任务终止,就用 \(v_T^{\mathrm{old}}\) bootstrap;若中间发生任务终止,则在相应 \(d_t=1\) 处停止 bootstrap。
这里有三个不能混淆的长度:
| 符号 | 含义 | 能否调整 |
|---|---|---|
| \(\Delta t\) | 环境/控制时间步长,例如每 50 ms 输出一次动作 | 不能随意改;改变它会改变动力学、控制频率、奖励尺度和折扣语义 |
| \(T\) | 每个并行环境在一次 PPO 更新前收集的 rollout 长度 | 可以作为超参数调整,不要求等于 episode 长度 |
| \(B_{\mathrm{mb}}\) | 将\(NT\) 个有效位置展平后,每个优化 minibatch 的大小 | 可以调整,但应与\(NT\)、优化 epoch 数和显存共同设计 |
因此,“timestep 可以自由设定”需要分情况:索引 \(t\) 只是序列位置;rollout 长度 \(T\) 可以调;物理时间步长 \(\Delta t\) 不能在不重新定义环境的情况下任意改变。对 VLA/action chunk,策略的一次决策还可能连续执行 \(H\) 个底层控制步,此时应先定义策略步长 \(\Delta t_{\pi}=H\Delta t_{\mathrm{ctrl}}\),并按策略步而不是底层控制步计算动作概率与 PPO ratio。
其中 \(\delta_t\) 是单步 TD residual,\(\lambda\in[0,1]\) 是 GAE 的衰减系数;\(1-b_t\) 防止 Advantage 跨越 reset 边界传播。
新旧策略的概率比为
clipped objective 为
其中 \(\epsilon_{\mathrm{clip}}>0\) 是 PPO 概率比的裁剪半宽。
\(\hat A_t>0\) 时提高已执行动作的概率,\(\hat A_t<0\) 时降低概率。标准 PPO 训练 Actor 与 \(V\) Critic,不训练可查询任意 \((s,a)\) 的独立 \(Q\) 网络;行为策略信息通常以冻结的 \(\pi_{\theta_{\mathrm{old}}}\) 或缓存的 \(\ell_t^{\mathrm{old}}\) 表示。
算法流程¶
- 冻结行为策略信息:把当前 Actor 复制为行为策略 \(\pi_{\theta_{\mathrm{old}}}\),并准备保存每个动作的 \(\ell_t^{\mathrm{old}}\)。
- 收集新 rollout 并固化字段:用 \(N\) 个并行环境采集 \(T\) 步,保存 \(x_t=(s_t,a_t,r_t,s_{t+1},d_t,b_t,\ell_t^{\mathrm{old}},v_t^{\mathrm{old}},v_{t+1}^{\mathrm{old}})\) 所需的数据。对 \(b_t=0\) 的位置可通过数组平移复用下一状态与价值;对 \(b_t=1\) 的位置必须另存 reset 前的最终观测及其价值;片段末端若未终止也要计算 bootstrap value。离散动作形状通常为 \([T,N]\),连续动作为 \([T,N,A]\),还可保存 \(e_t\) 与安全代价 \(c_t\)。
- 计算 GAE 与训练字段:以 \(d_t\) 控制 bootstrap、以 \(b_t\) 切断跨 reset 的递推,由 rollout 派生 \(\hat A_t:[T,N]\)、\(\hat V_t:[T,N]\) 与 \(M_t:[T,N]\),并通常在 \(M_t=1\) 的位置标准化 \(\hat A_t\)。
- 更新 Actor:展平有效的 \(TN\) 个位置并切 minibatch,读取 \((s_t,a_t,\ell_t^{\mathrm{old}},\hat A_t,M_t)\);当前 Actor 重算 \(\ell_t^\theta\) 与策略熵,再计算 \(\rho_t=\exp(\ell_t^\theta-\ell_t^{\mathrm{old}})\) 并最大化 clipped objective。
- 更新 Value Critic:minibatch 读取 \((s_t,\hat V_t,v_t^{\mathrm{old}},M_t)\),当前 Critic 重算 \(V_\psi(s_t)\) 并拟合 \(\hat V_t\);实现可使用 value clipping,并控制 policy loss、value loss 与 entropy 的权重。
- 重复有限轮优化:对同一批 rollout 训练若干 epoch,同时监控 approximate KL、clip fraction 和 entropy,避免策略更新过大。
- 丢弃旧批次并重新采样:PPO 不把历史 rollout 长期放入 replay buffer;更新后重新收集与新策略匹配的数据。
- 评估:使用 greedy/mean action 或明确的评估采样规则,独立于训练环境统计成功率和回报。
5.7 IQL:不查询策略数据外动作的离线 RL¶
IQL 在固定数据集上学习双 \(Q\)、expectile \(V\) 和 Actor。其 \(Q\) target 不需要从当前策略采样下一动作:
\(V\) 用数据动作的目标 \(Q\) 做非对称 expectile regression。令
则
策略只拟合数据动作,但用 Advantage 给高价值动作更大权重:
其中 \(\tau\in(0,1)\) 是 expectile 水平,\(\beta>0\) 控制 Advantage 权重的尖锐程度,\(w_{\max}>0\) 是防止权重爆炸的上限;这里用 \(\min(\cdot,w_{\max})\) 表示只设置上界。
IQL 的关键不是对数据外动作显式“取保守最小值”,而是避免在 Bellman backup 中查询当前策略产生的 OOD 动作,并在策略改进时只重加权数据动作。
算法流程¶
- 准备固定数据集:加载并校验 \(\mathcal D=\{(s_t,a_t,r_t,s_{t+1},d_t,b_t)\}\),再归一化状态/连续动作;可保留 \(e_t,u_t\) 做切分与覆盖度审计,训练阶段不让当前策略产生新动作写回数据集。
- 初始化:创建双 \(Q\) Critic、目标 \(Q\)、expectile \(V_\psi\) 和 Actor。
- 采样批次并更新 \(V\):读取 \(\mathbf S:[B,*S]\)、数据动作 \(\mathbf A_{\mathcal D}:[B,A]\)、\(\mathbf R:[B,1]\)、\(\mathbf S':[B,*S]\)、\(\mathbf d,\mathbf b:[B,1]\);用停止梯度的 \(\min_iQ_{\bar\theta_i}(\mathbf S,\mathbf A_{\mathcal D})\) 与 \(V_\psi(\mathbf S)\) 的残差计算 expectile loss。批次不需要当前 Actor 的动作或动作概率。
- 更新双 \(Q\):以 \(\mathbf m=1-\mathbf d\) 构造 \(\mathbf y_Q=\mathbf R+\gamma\mathbf mV_\psi(\mathbf S')\),分别更新两个 Critic;backup 中不查询 Actor 产生的下一动作。
- 计算相对优势:在数据动作上计算 \(A_t=\min_iQ_{\bar\theta_i}(s_t,a_t)-V_\psi(s_t)\)。
- 更新 Actor:把 \(\exp(\beta A)\) 截断后作为权重,执行 Advantage-weighted behavior cloning;Actor 仍只拟合数据支持内的动作。
- 更新目标 \(Q\):用 Polyak 平均同步两个目标 Critic。
- 评估:检查权重分布是否塌缩或爆炸,再用独立环境评估;评估转移默认不参与训练。
5.8 GRPO:用组内相对奖励代替 Value Critic¶
Group Relative Policy Optimization(GRPO)是 PPO 的一种变体,最初用于语言模型的 RL 后训练。对第 \(j\) 个条件 \(q_j\),旧策略采样一组输出 \(\{y_{j,1},\ldots,y_{j,G}\}\),奖励模型或可验证奖励给出 \(\mathbf R_j=\{R_{j,1},\ldots,R_{j,G}\}\)。在 outcome supervision 下,组相对 Advantage 可写为:
其中 \(\varepsilon_{\mathrm{std}}>0\) 是数值稳定项;组内标准差接近零时,该组几乎不提供相对排序信号。仅有 outcome reward 时,同一输出中的 token 共享这个 Advantage。令 token 级新旧策略概率比为
GRPO 原文使用下列逐 token 非负 KL 估计量:
于是其核心目标是 PPO 式 clipped surrogate 加参考策略 KL 正则:
其中 \(\epsilon_{\mathrm{clip}}>0\) 是策略概率比的裁剪半宽,\(\beta\ge 0\) 是参考策略 KL 正则的权重。
与 PPO 相比,GRPO 不训练单独的 Value/Critic,而用同一输入下多个候选结果的组内分数估计 baseline。这样能减少大模型后训练的显存和计算负担,但代价是每个输入必须生成多个可比较样本,并且更新质量高度依赖奖励质量、组大小与组内方差。当组内奖励几乎相同时,归一化需要数值稳定项,学习信号也会很弱。
在具身任务中,可以把“同一问题的多个回答”类比为“同一指令与可比初始条件下的多条动作 rollout”。但这只是可研究的迁移方式:环境随机性、初始状态差异、长时程 credit assignment 和真机采样成本都可能破坏组内可比性。GRPO 不能因为省去 Critic 就自动替代 PPO、SAC 或 offline RL 基线。
原始定义与公式见 DeepSeekMath。
算法流程¶
- 准备策略与任务:从 SFT 策略初始化 \(\pi_\theta\),建立行为策略快照 \(\pi_{\theta_{\mathrm{old}}}\) 和通常冻结的参考策略 \(\pi_{\mathrm{ref}}\);准备 prompts、任务指令或初始条件。
- 成组采样并固化字段:对每个条件 \(q_j\),从 \(\pi_{\theta_{\mathrm{old}}}\) 采样 \(G\) 个输出/rollout;保存 \(y_{j,i,t}\)、\(M_{j,i,t}\)、\(\ell_{j,i,t}^{\mathrm{old}}\) 三个 \([B_q,G,L]\) 张量和长度 \(L_{j,i}:[B_q,G]\)。具身任务的 \(q_j\) 必须绑定指令、观测、初始状态及随机种子或场景参数,使同组结果可比。
- 计算并记录奖励:为每个样本保存总奖励 \(R_{j,i}:[B_q,G]\),以及可选的奖励分项 \(R_{j,i}^{(h)}\)、安全代价 \(C_{j,i}\) 和失败类型;\(R_{j,i}\) 的合成规则必须固定。
- 构造组相对 Advantage:对同一 \(q_j\) 下的 \(R_{j,1:G}\) 减均值、除以标准差,得到 \(\hat A_{j,i}:[B_q,G]\),再令有效位置共享 \(\hat A_{j,i,t}=\hat A_{j,i}\);当组内方差接近零时加入数值稳定项或跳过无信息组。
- 计算策略比和 KL:当前策略在 \((q_j,y_{j,i,1:L})\) 上重算 \(\ell_{j,i,t}^{\theta}\),并计算 \(\rho_{j,i,t}=\exp(\ell_{j,i,t}^{\theta}-\ell_{j,i,t}^{\mathrm{old}})\);若启用参考策略 KL,再由 \(\ell_{j,i,t}^{\mathrm{ref}}\) 构造 \(D_{j,i,t}^{\mathrm{KL}}\)。所有逐位置损失均乘 \(M_{j,i,t}\)。
- 更新策略:在固定的 group batch 上进行有限轮 minibatch 优化,最大化 clipped surrogate 并施加 KL 惩罚;GRPO 不更新独立 Value/Critic。
- 刷新旧策略并重新采样:完成本轮更新后令 \(\theta_{\mathrm{old}}\leftarrow\theta\),再对新任务条件生成下一批 group rollouts,避免长期复用过旧的策略数据。
- 评估与审计:报告任务成功率/可验证奖励、组内奖励方差、KL、输出或轨迹长度、采样成本和 reward hacking;VLA 还应报告控制延迟与安全事件。
5.9 SAPO:用软门控替代硬裁剪¶
Soft Adaptive Policy Optimization(SAPO)是面向 LLM 强化学习后训练的 group-based policy optimization 方法。在论文设定中,它沿用成组采样、组相对 Advantage 和 token 级新旧策略重要性比,但不再使用 PPO/GRPO 的分段硬裁剪,而是用温度控制的 sigmoid 门控平滑缩小偏离旧策略的更新。
令 \(\rho_{j,i,t}(\theta)\) 为条件 \(q_j\) 下第 \(i\) 个输出、第 \(t\) 个 token 的新旧策略概率比,SAPO 的目标写为:
其中软门控函数和温度选择为:
对目标求导后,逐 token 梯度可写为:
其中额外的软门控权重为:
\(w_{j,i,t}\) 在 \(\rho_{j,i,t}=1\) 时等于 1,偏离 1 时平滑衰减;完整梯度系数是 \(w_{j,i,t}\rho_{j,i,t}\hat A_{j,i,t}\),不能只看 \(w_{j,i,t}\)。因子 \(4/\tau\) 使软门控在 on-policy 点具有与未裁剪策略梯度一致的局部尺度。与 hard clip 在越界一侧直接产生零梯度相比,SAPO 形成连续的 soft trust region。
论文采用 \(\tau_{\mathrm{neg}}>\tau_{\mathrm{pos}}\):较大的温度使负 Advantage token 的梯度随 off-policy 程度更快衰减。其动机是,大词表中降低一个已采样 token 的概率会把概率质量分散到大量未采样 token,负向更新更容易放大噪声。温度大小不是通用常数,必须结合模型、batch、更新轮数和 ratio 分布调节。
SAPO 原始结果针对语言/多模态生成模型。迁移到 VLA 时,需要先定义 token、action chunk 或连续动作密度的概率比,并验证软门控是否真的改善闭环成功率、稳定性和采样效率;不能仅凭其在 LLM/MoE 上的动机推断具身控制收益。
原始定义与公式见 Soft Adaptive Policy Optimization。
算法流程¶
- 准备策略与任务:从 SFT 策略初始化当前策略 \(\pi_\theta\) 和行为策略快照 \(\pi_{\theta_{\mathrm{old}}}\);准备 prompts、VLM/VLA 指令或可比初始条件。
- 成组采样并固化字段:对每个条件 \(q_j\) 从 \(\pi_{\theta_{\mathrm{old}}}\) 生成 \(G\) 个输出/rollout,保存 \((y_{j,i,1:L},L_{j,i},M_{j,i,1:L},\ell_{j,i,1:L}^{\mathrm{old}})\)。VLA 的 \(q_j\) 还应绑定指令、观测、可比初始状态和环境随机性。
- 评分并构造 Advantage:保存 \(R_{j,i}:[B_q,G]\),并可另存奖励分项 \(R_{j,i}^{(h)}\)、安全代价 \(C_{j,i}\) 和失败类型;按明确的 group/batch 归一化规则得到 \(\hat A_{j,i}:[B_q,G]\),再定义有效位置上的 \(\hat A_{j,i,t}\)。核心 SAPO 目标不要求 \(\ell_{j,i,t}^{\mathrm{ref}}\),只有另加 KL 正则时才需要它。
- 计算重要性比:当前策略重算 \(\ell_{j,i,t}^{\theta}\),与固化的 \(\ell_{j,i,t}^{\mathrm{old}}\) 得到 \(\rho_{j,i,t}=\exp(\ell_{j,i,t}^{\theta}-\ell_{j,i,t}^{\mathrm{old}})\);以 \(M_{j,i,t}\) 排除 prompt、padding 和无效动作,同时监控 \(\rho\) 与 \(\log\rho\) 的分布。
- 选择非对称温度:正 Advantage 使用 \(\tau_{\mathrm{pos}}\),非正 Advantage 使用通常更大的 \(\tau_{\mathrm{neg}}\)。
- 计算软门控目标:用 \(M_{j,i,t}f_{j,i,t}(\rho_{j,i,t})\hat A_{j,i,t}\) 替代 clipped surrogate,聚合有效位置并更新策略;监控完整梯度系数 \(w_{j,i,t}\rho_{j,i,t}\hat A_{j,i,t}\),论文设定不需要独立 Value/Critic。
- 刷新旧策略并重新采样:完成有限轮 minibatch 更新后令 \(\theta_{\mathrm{old}}\leftarrow\theta\),再生成下一批 group rollouts。
- 评估与审计:报告任务奖励/成功率、ratio 方差、软门控权重、正负 Advantage 更新占比、entropy、训练崩溃点和 reward hacking;VLA 还要报告控制延迟与安全事件。
6. 横向比较¶
6.1 价值量与策略形式¶
| 算法 | \(Q\) | \(V\) | \(A\) | Policy | 主要数据方式 |
|---|---|---|---|---|---|
| DQN | 单\(Q\) | \(\max Q\) 隐式得到 | 不显式 | argmax Q / \(\epsilon_{\mathrm{g}}\)-greedy |
online, off-policy |
| DDPG | 单\(Q\) | \(Q(s,\mu(s))\) 隐式得到 | 不显式 | 确定性 Actor | online, off-policy |
| TD3 | 双\(Q\) | 由 Actor 和\(\min Q\) 隐式得到 | 不显式 | 确定性 Actor | online, off-policy |
| TD3+BC | 双\(Q\) | 同 TD3 | 不显式 | 确定性 Actor + BC | offline |
| SAC | 双 soft\(Q\) | 由\(Q-\alpha\log\pi\) 隐式得到 | 不显式 | 随机 Actor | online, off-policy |
| PPO | 无独立\(Q\) 网络 | 显式\(V\) Critic | 用 GAE 计算 | 随机 Actor | online, on-policy |
| IQL | 双\(Q\) | expectile\(V\) | \(Q-V\) | Advantage-weighted BC | offline |
| GRPO | 无\(Q\) 网络 | 无 Value Critic;组均值作 baseline | 组内归一化奖励 | 序列策略 / VLA 策略 | grouped policy rollout |
| SAPO | 无\(Q\) 网络 | 论文设定无 Value Critic | 组/批归一化奖励 | 序列策略 / VLA 策略 | grouped policy rollout |
6.2 下一状态价值与策略改进¶
| 算法 | 核心 target / 估计 | 价值如何改变策略 |
|---|---|---|
| DQN | \(r+\gamma m\max_{a'}Q_{\bar\theta}(s',a')\) | 直接选最高\(Q\) 的离散动作 |
| DDPG | \(r+\gamma mQ_{\bar\theta}(s',\mu_{\bar\phi}(s'))\) | Actor 沿\(Q\) 梯度更新 |
| TD3 | \(r+\gamma m\min_iQ_{\bar\theta_i}(s',\tilde a')\) | 延迟最大化\(Q_{\theta_1}(s,\mu_\phi(s))\) |
| TD3+BC | Critic 基本沿用 TD3 | \(Q\) 最大化与动作 MSE 共同约束 |
| SAC | \(r+\gamma m(\min_iQ_{\bar\theta_i}-\alpha\log\pi_\phi)\) | 同时提高 soft\(Q\) 并保持熵 |
| PPO | rollout +\(v_t^{\mathrm{old}}\) → \(\delta_t\) → \(\hat A_t\) | 按\(\hat A_t\) 调整概率并裁剪 \(\rho_t\) |
| IQL | \(r+\gamma mV_\psi(s')\) | \(\exp(\beta A)\) 加权模仿数据动作 |
| GRPO | \(R_{j,1:G}\) → \(\hat A_{j,i,t}\) | 裁剪\(\rho_{j,i,t}\) + \(D_{j,i,t}^{\mathrm{KL}}\) |
| SAPO | \(\hat A_{j,i,t}\) + \(\rho_{j,i,t}\) | \(f_{j,i,t}(\rho)\) 软门控 + 正负非对称温度 |
6.3 任务选型¶
| 条件 | 优先考虑 | 说明 |
|---|---|---|
| 离散动作且允许持续交互 | DQN / Double DQN | 结构清晰,可直接输出全部动作价值 |
| 连续动作、确定性控制基线 | TD3 | 通常比 DDPG 稳定 |
| 连续动作、重视探索与样本复用 | SAC | 随机最大熵策略,off-policy |
| 并行仿真采样充足、需要通用策略梯度 | PPO | 实现成熟,支持离散和连续动作 |
| 固定连续控制数据集、需要简洁基线 | TD3+BC | 直接加入行为约束 |
| 固定数据集、希望筛选高价值行为 | IQL | expectile\(V\) + Advantage-weighted BC |
| LLM/VLA 后训练,可对同一条件多次采样且有可靠评分 | GRPO | 无独立 Critic,用组内相对奖励更新策略 |
| LLM/VLM/VLA 成组后训练,token ratio 方差较高或硬裁剪损失信号 | SAPO | 用连续软门控平滑抑制 off-policy 更新 |
| 教学或算法消融 | DDPG | 适合理解确定性 Actor-Critic,不一定是最强基线 |
算法名称不能代替实验设计。具身任务至少还要根据动作空间、奖励可得性、交互预算、数据覆盖、控制延迟、安全约束和真机风险做选择。
7. 记忆图¶
图 1:奖励怎样变成策略更新¶
flowchart TD
R["Reward / Return<br/>长期任务目标"] --> MC["轨迹回报或 Bellman bootstrap"]
MC --> V["V(s)<br/>状态整体有多好"]
MC --> Q["Q(s,a)<br/>当前动作有多好"]
V --> A["A(s,a)=Q(s,a)-V(s)<br/>动作比基准好多少"]
Q --> A
Q --> DQN["DQN<br/>argmax Q"]
Q --> AC["DDPG / TD3<br/>Actor 沿 Q 改进"]
Q --> TDBC["TD3+BC<br/>Q 改进 + 行为约束"]
DATAACT["离线数据动作 a_D"] --> TDBC
Q --> SAC["SAC<br/>soft Q + entropy"]
V --> PPO["PPO<br/>V + GAE → clipped PG"]
A --> PPO
Q --> IQL["IQL<br/>expectile V + Q"]
V --> IQL
IQL --> WBC["Advantage-weighted BC"]
GROUP["同一条件 q_j 的 G 个 rollout<br/>奖励 R_j,1...R_j,G"] --> REL["组内相对 Advantage A_hat_j,i<br/>(R_j,i-mean)/std"]
REL --> GRPO["GRPO<br/>clipped ratio + KL<br/>无独立 Value Critic"]
REL --> SAPO["SAPO<br/>sigmoid soft gate<br/>非对称温度"]
记忆锚点:DQN 用 \(Q\) 选动作;DDPG/TD3/SAC 用 \(Q\) 训练 Actor;TD3+BC 额外用 \(a_{t,\mathcal D}\) 限制 Actor 偏离离线数据;PPO 用 \(V\) 和 GAE 估计 Advantage;IQL 用 \(Q-V\) 加权模仿数据动作;GRPO 用同组相对奖励 + hard clip;SAPO 用同组相对奖励 + soft gate。
图 2:按数据来源定位算法¶
flowchart TD
RL["强化学习算法"] --> DATA{"训练数据从哪里来?"}
DATA --> INTERACT["持续与环境交互"]
DATA --> FIXED["固定离线数据集"]
DATA --> GROUPED["同一条件成组采样<br/>LLM / VLA 后训练"]
INTERACT --> REPLAY["Replay + bootstrap<br/>off-policy"]
INTERACT --> FRESH["新鲜 rollout<br/>on-policy"]
REPLAY --> DISCRETE["离散动作:DQN"]
REPLAY --> CONTINUOUS["连续动作"]
CONTINUOUS --> DDPG["DDPG → TD3"]
CONTINUOUS --> SAC2["SAC"]
FRESH --> PPO2["PPO"]
FIXED --> BC["行为约束:TD3+BC"]
FIXED --> EXPECTILE["expectile V:IQL"]
GROUPED --> GRPO2["组内 baseline:GRPO"]
GROUPED --> SAPO2["软门控:SAPO"]
MODEL["是否显式使用动力学模型?"] -. "与上述数据轴正交" .-> MBRL["MBRL:imagined rollout / MPC / value"]
PPO、GRPO 与 SAPO 都比较新旧策略概率:PPO 学习 \(V(s)\) 并用 GAE,再使用 hard clip;GRPO 用同组奖励统计量替代 Value Critic,并保留 token-level hard clip;SAPO 沿用 group-based Advantage,但把硬裁剪换成带正负非对称温度的 token-level soft gate。MBRL 是另一条正交轴,可以与 online、offline 或 grouped rollout 组合。
理解新算法时,始终回到五个问题:数据从哪里来、价值对象是什么、target 怎样构造、策略怎样改进、估计误差和分布偏移怎样受控。