以下问答来自AISTUDIO
总结该论文的核心方法(越详细越好)
这份论文提出了一种名为 RECAP (RL with Experience and Corrections via Advantage-conditioned Policies) 的通用方法,旨在通过强化学习(RL)利用真实世界的部署经验、自主尝试以及专家干预来改进视觉-语言-动作(VLA)模型。
以下是该核心方法的详细总结,分为核心理念、模型架构、训练流程和推理机制四个部分:
1. 核心理念:优势调节(Advantage Conditioning)
RECAP 的核心思想不是使用传统的策略梯度方法(如 PPO)直接更新庞大的 VLA 参数(这通常不稳定且计算昂贵),而是采用优势调节。
- 原理:训练一个策略 $\pi$,使其不仅以观察 $o_t$ 和任务指令 $\ell$ 为条件,还以优势指标(Optimality Indicator)$I_t$ 为条件。
- 优势指标 $I_t$:这是一个二值信号(True/False),表示当前动作相对于平均水平是否具有正向优势。
- 目标:模型学习区分“好动作”和“坏动作”。在推理时,通过强制输入“优势为正”的条件,诱导模型生成高回报的动作。
2. 模型架构
该系统包含两个主要模型:策略模型(Policy)和价值函数模型(Value Function)。
A. 策略模型 ($\pi^*_{0.6}$)
- 基础架构:基于 Gemma 3 4B 的 VLM 主干 + 一个专门的动作专家网络(Action Expert, 860M 参数)。
- 动作生成:
- 离散输出:VLM 自回归生成思考过程(CoT)和子任务描述。
- 连续输出:使用流匹配(Flow Matching)生成高频(50Hz)的连续机械臂动作。
- 输入增强:除了图像和文本指令外,还额外输入文本提示:“Advantage: positive”(当 $I_t=True$)或 “Advantage: negative”。
B. 分布式价值函数 ($V^{\pi_{\text{ref}}}$)
- 架构:与策略模型类似,但使用更小的 VLM 主干(670M 参数)。
- 功能:预测给定状态和指令下的预期回报。
- 输出形式:分布式价值(Distributional Value)。它将回报离散化为 201 个桶(bins),预测任务成功的“剩余步数”(负值)。
- 奖励设置(Sparse Reward):
- 成功完成:0
- 每一步消耗:-1
- 失败:一个很大的负值($-C_{\text{fail}}$)
3. RECAP 训练流程(算法步骤)
RECAP 采用迭代式离线强化学习(Iterated Offline RL)的框架,主要包含以下循环步骤:
第一阶段:预训练(Pre-training)
- 数据准备:使用大量跨机器人的演示数据。
- 训练价值函数:在所有数据上训练 $V$,预测成功所需的步数。
- 计算优势:计算每个样本的优势值 $A(o, a) = Q(o, a) - V(o)$。
- 这里使用 $N$ 步回报估计:$A(ot, a_t) = \sum{t’=t}^{t+N-1} r{t’} + V(o{t+N}) - V(o_t)$。
- 生成指标 $I_t$:设定阈值 $\epsilon\ell$(通常为前 30% 的分位数),若 $A > \epsilon\ell$,则 $I_t = \text{True}$。
- 训练策略:使用带有 $I_t$ 标签的数据通过监督学习(行为克隆 + 流匹配损失)训练 VLA。
第二阶段:在线改进循环(针对特定任务)
当模型部署到特定任务(如叠衣服、做咖啡)时,执行以下循环:
- 数据收集(Data Collection):
- 自主运行:机器人自主执行任务,收集成功和失败的轨迹。
- 专家干预(Interventions):人类专家在机器人出错时接管控制进行纠正。注意:人类干预的数据被强制标记为 $I_t = \text{True}$。
- 稀疏奖励标记:每条轨迹结束时标记“成功”或“失败”。
- 更新价值函数:混合所有历史数据(演示 + 自主 + 干预),重新微调价值函数。
- 重新计算优势:利用更新后的 $V$ 为数据集中的所有动作重新打分(好/坏)。这允许模型利用新的经验重新评估旧数据的质量(例如,之前的“好”动作现在可能被识别为次优)。
- 微调策略:使用更新后的优势标签微调 VLA 策略。
4. 推理机制(Inference)
在实际执行任务时,如何让机器人表现最好?
- 条件输入:显式地将输入文本设置为 “Advantage: positive”。这相当于告诉模型:“请像执行高优势动作时那样行动”。
- 无分类器引导(Classifier-Free Guidance, CFG):
- 训练时,以 30% 的概率丢弃优势条件(Drop-out)。
- 推理时,通过公式放大条件概率:$\tilde{\pi} \propto \pi(a|o)^\beta$。这可以进一步“锐化”策略分布,使其更倾向于高优势区域(论文中 $\beta \ge 1$)。
5. 方法总结图解
可以将其理解为一种基于价值加权的超级行为克隆:
- 看(VLM):理解场景。
- 评(Value Function):事后诸葛亮,评价刚才做的动作好不好。
- 学(Policy Training):学习数据,如果动作被评价为“好”,就打上“好”的标签学;如果“坏”,就打上“坏”的标签学。
- 做(Inference):只请求模型输出“好”动作。
这种方法最大的优势在于它不需要在训练循环中实时计算梯度(On-policy),而是可以高效地利用所有历史数据(Offline),并且兼容极大规模的生成式 VLA 模型。
A. Distributional value function training部分我不太明白,请详细解释
这一部分描述的是 RECAP 方法中“裁判员”(Critic)——即价值函数(Value Function)的训练细节。
简单来说,这个模块的任务是看一眼当前的机器人状态,然后预测:“还要多少步才能成功做完任务?”。
为了更准确和稳定,作者没有直接让模型预测一个单一的数字(标量),而是预测了一个概率分布。以下是详细的拆解:
1. 为什么要训练这个价值函数?
在 RECAP 中,我们需要知道某个动作是“好”还是“坏”,以便计算优势(Advantage)。
- 如果实际结果比价值函数预测的结果更好(例如预测还要 50 步,结果机器人 30 步就做完了),那么刚才的动作就是“好动作”(优势为正)。
- 反之则是“坏动作”。
2. 什么是“分布式”(Distributional)?
传统的价值函数通常输出一个单一的数值(Scalar),比如预测回报是 -50。
但在 分布式强化学习(Distributional RL) 中,模型输出的是回报的概率分布。
- 设定:作者将可能的价值范围切分成了 $B = 201$ 个桶(bins)。
- 预测:模型不是输出
-50,而是输出这 201 个桶的概率。例如:
- 回报为 -40 的概率是 10%
- 回报为 -50 的概率是 80%
- 回报为 -60 的概率是 10%
- 好处:这种方法比预测单一均值更稳定,能捕捉多模态分布(比如“要么很快成功,要么彻底失败”的情况),并且在深度强化学习中通常表现更好。
3. 具体训练步骤
A. 定义回报(The “Ground Truth”)
首先,需要知道训练数据的真实标签(Label)是什么。
- 蒙特卡洛回报(Monte Carlo Return):作者使用的是经验回报(Empirical Return),记为 $Rt(\tau)$。这意味着他们不使用 Q-learning 那样的自举(Bootstrapping, 即用 $Q{t+1}$ 估算 $Q_t$),而是直接看完整条轨迹的最终结果。
- 计算方式:从当前时刻 $t$ 一直到本集结束的所有奖励之和。
- 根据论文的奖励定义(公式 5):每走一步扣 1 分,成功得 0 分,失败扣大分。
- 直观理解:如果任务成功,这个回报值实际上就是 “负的剩余步数”。
B. 离散化(Discretization)
将计算出的真实回报 $R_t(\tau)$ 映射到那 201 个桶中。
- 比如,假设真实回报是 -45.5,它会被归类到对应的“第 X 号桶”里。
- 论文提到,他们会对不同长度的任务进行归一化,把价值缩放到 $(-1, 0)$ 区间内。
C. 损失函数(Equation 1)
训练的目标是让模型预测的分布尽可能接近真实的分布。
- $R_t^B(\tau)$:真实回报的 One-hot 编码(或者是平滑后的分布),代表“正确答案在哪个桶”。
- $p_\phi(V|o_t, \ell)$:模型预测的 201 个桶的概率分布。
- $H$(交叉熵 Cross-Entropy):这是一个标准的分类损失。
- 核心逻辑:作者实际上把“预测价值”转化为了一个分类问题(Classification Problem)——输入图像和指令,分类出“最终回报属于哪个区间”。
4. 如何使用这个分布?
虽然模型预测的是分布,但在计算优势(Advantage)时,我们需要一个数值。
作者通过期望值(Expectation)将分布还原为数值:
- 即:(桶的概率 $\times$ 桶代表的数值)之和。
- 这给出了当前状态下的平均预期回报。
5. 为什么选择这种方法?(设计哲学)
论文在这一节末尾解释了原因:
- 稳定性:直接基于整条轨迹的真实结果(Monte Carlo)进行监督学习(分类),比基于时序差分(TD-Learning)的 Q-learning 更稳定。对于这种拥有数十亿参数的大模型(VLA),训练稳定性至关重要。
- 简单有效:虽然它是一个“On-policy”估计器(反映的是数据集中行为策略的表现),但在实践中发现它非常可靠,足以用来区分动作的好坏,从而指导策略改进。
总结
“Distributional value function training” 这一节其实就是在说:
作者训练了一个小一点的 VLM,把它当成分类器来用。给它看视频帧,让它从 201 个选项中选出“这个任务最后得了多少分(还有几步成功)”。这个分类器输出的加权平均值,就是用来给策略模型打分的“基准线(Value)”。
这一部分(B. Policy extraction via advantage conditioning)是论文中关于如何利用评价结果来更新策略的核心环节。
简单来说,它的核心思想是:与其只学习“成功”的数据,不如把所有数据(无论成功失败)都拿来训练,但给每个数据打上“好”或“坏”的标签。在实际使用时,只要“命令”机器人只做“好”动作即可。
为了让你彻底理解,我将分三步来解释:先补充前置知识,再解释核心机制,最后说明为什么这样做更好。
第一部分:前置知识(VLA 与 RL 基础)
在深入论文细节前,我们需要统一几个概念:
1. VLA 模型(Vision-Language-Action Models)
- 是什么:这就好比一个“机器大脑”。它输入的是图像(眼睛看到的)和文本(任务指令),输出的是机器人的动作(关节角度移动多少)。
- 架构特点:论文中的 VLA 基于 Transformer(像 GPT 一样)。它不仅能输出文本(比如思考过程),还能通过一个专门的“动作专家网络”(Action Expert)输出连续的动作信号。
- 难点:这一动作生成部分使用了流匹配(Flow Matching)(类似 Diffusion 扩散模型)。这种生成方式效果好,但很难计算某个动作具体的“概率值”(Log-likelihood),这使得传统的强化学习算法(如 PPO)很难直接应用,因为 PPO 需要精确计算概率比率。
2. RL 中的几个关键变量
- 策略(Policy, $\pi$):演员。给定情境,决定做什么动作。
- 价值函数(Value Function, $V$):裁判。给定情境,预测未来能得多少分(平均水平)。
- Q值(Action-Value Function, $Q$):给定情境 并且 做了某个特定动作后,预测未来能得多少分。
- 优势(Advantage, $A$):这是本节的灵魂概念。
- 解释:$Q$ 是“我做了动作 $a$ 后的得分”,$V$ 是“在这个状态下平均能得的分”。
- 含义:优势 $A$ 衡量了动作 $a$ 比“平均水平”好多少。
- $A > 0$:这是一个好动作(优于平均)。
- $A < 0$:这是一个坏动作(劣于平均)。
这是 Offline RL(离线强化学习)的一个术语。意思是我们有一堆历史数据(包含别人的演示、自己之前瞎试的数据),我们还有一个能打分的裁判(Value Function),现在的目标是:从这些数据中提炼出一个比之前所有策略都强的新策略。
第二部分:Advantage Conditioning(优势调节)详解
作者提出的方法不直接修改模型参数去“最大化奖励”,而是采用了一种“带条件的监督学习”方法。
步骤 1:计算优势(打分)
利用上一节训练好的价值函数 $V$,对数据集中的每一个动作计算优势值 $A$。
- 实际上,作者估算 $A$ 的方式是看实际回报 $R$ 减去预期回报 $V$:$A \approx R - V$。
- 如果某个轨迹最终成功了,且比预期更快,那其中动作的 $A$ 就是正的。
2. 二值化处理(打标签)
作者没有直接把连续的数值 $A$ 输入模型,而是做了一个简单的二分类:
- 设定一个阈值(比如前 30% 好的动作)。
- 好动作:$A > \text{阈值}$ $\rightarrow$ 标签 $I_t = \text{Positive}$ (True)
- 坏动作:$A \le \text{阈值}$ $\rightarrow$ 标签 $I_t = \text{Negative}$ (False)
3. 训练策略(Teacher Forcing / Supervised Learning)
这是最巧妙的一步。通常的强化学习会丢弃坏数据,或者根据权重调整梯度。但 RECAP 使用所有数据进行监督学习,但是把“标签”作为输入喂给模型。
- 输入:
[图像, 任务指令, "Advantage: Positive"]
- 目标输出:学习那些真实发生过的、且被判定为“好”的动作。
- 输入:
[图像, 任务指令, "Advantage: Negative"]
- 目标输出:学习那些真实发生过的、且被判定为“坏”的动作。
原理:模型其实是在学习条件概率分布 $P(\text{动作} | \text{状态}, \text{好坏标签})$。它不仅学会了如何成功,也学会了(并记住了)什么样的动作会导致失败。
4. 推理/部署(Inference)
当训练好之后,把机器人放到现实世界中。
- 我们欺骗模型(Conditioning):强制给它的输入加上提示词 “Advantage: Positive”。
- 结果:模型会根据它学到的概率分布,输出在“好动作”条件下概率最高的那个动作。
第三部分:理论推导与数学直觉(Paper 中的公式解释)
论文引用了贝叶斯公式来证明为什么这样做有效。
我们想要的是一个改进的策略 $\hat{\pi}(a|o)$。根据数学推导(公式 2),最优策略的形式应该是:
这意思是:新策略应该是在旧策略($\pi_{\text{ref}}$)的基础上,给高优势的动作加权。
作者的方法实际上是在模拟这个公式:
(反了?应该是用这个公式模拟上一个公式?)
- 当你输入“Advantage: Positive”时,你实际上是在采样那些 $P(\text{Good}|o, a)$ 很高 的动作。
- 这在数学上等价于提取出了高优势的动作。
第四部分:为什么要这么折腾?(与其他方法对比)
如果用传统的强化学习方法,会有什么问题?
对比 AWR (Advantage-Weighted Regression):
- AWR 是一种常见的做法,它给好动作高权重,坏动作低权重(甚至权重为0)。
- 缺点:这相当于把坏数据扔掉了。对于极其昂贵的机器人数据来说,失败的教训也是宝贵的经验。RECAP 通过“Advantage: Negative”标签,让模型显式地学习了失败数据,从而在推理时能更好地避开这些坑(因为推理时我们要的是 Positive)。
对比 PPO (Proximal Policy Optimization):
- PPO 是在线 RL 的霸主,需要计算 $\frac{\pi{new}}{\pi{old}}$ 的比率。
- 缺点:RECAP 使用的 VLA 动作部分是基于 Diffusion/Flow Matching 的。这种模型要计算精确的动作概率(Log-likelihood)非常慢且不稳定,计算成本极高。
- RECAP 的优势:它完全是监督学习(Supervised Learning)的训练方式。不管你的模型多复杂(Diffusion, Transformer),只要能做监督训练(预测下一个 token 或去噪),就能用 RECAP。这使得它非常适合大规模 VLA 模型。
总结
“Policy extraction via advantage conditioning” 的本质就是:
把强化学习问题转化为了带条件的监督学习问题。
通过给所有历史动作打上“优/良/中/差”的标签,并把这个标签作为 Prompt 输入给 VLA,训练模型理解动作质量。最后在考试(部署)时,通过只输入“优”的 Prompt,诱导模型只做最好的动作。
这一部分确实是 RECAP 方法中最抽象、数学推导最深奥的地方。它实际上借用了概率图模型(Probabilistic Graphical Models)和生成式模型(Generative Models,特别是 Diffusion)中的概念。
为了让你完全理解,我们需要剥开表象,找到这套公式的“数学源头”。
这套方法的数学逻辑链条是:
最大熵 RL 理论(源头) $\to$ 贝叶斯推断(桥梁) $\to$ RECAP 的训练目标(实现)。
1. 源头:理想的策略应该长什么样?
在强化学习理论(特别是 KL-Regularized RL 或 MaxEnt RL)中,有一个经典的结论:
如果我们希望找到一个新策略 $\pi$,它既能最大化奖励,又不会偏离原来的参考策略 $\pi_{\text{ref}}$(即原来的数据分布)太远,那么这个“最优策略”的解析解(Closed-form solution)有着固定的数学形式:
- 含义:
- $\pi_{\text{ref}}(a|o)$:原来的习惯(比如人类演示)。
- $A^{\pi_{\text{ref}}}(o, a)$:优势函数。如果动作 $a$ 好,A 是正大数;如果动作 $a$ 差,A 是负数。
- $\exp(\dots)$:指数函数。这会极大地放大好动作的概率,压低坏动作的概率。
- 直觉:理想的策略,就是把原来的策略拿来,根据动作的优劣进行“指数级加权”。
困难点:这个公式虽然完美,但直接计算分母(归一化常数)太难了,难以直接训练。
2. 桥梁:用贝叶斯公式进行近似
RECAP 的作者想:既然直接算上面的公式很难,我能不能用条件概率来近似它?
我们引入一个二值变量 $I$(Optimality Indicator),代表“结果是好的”。
根据贝叶斯公式(Bayes’ Rule):
让我们对比一下 理想公式 和 贝叶斯公式:
- 理想公式:$\pi^* \propto \pi_{\text{ref}} \cdot \exp(A)$
- 贝叶斯公式:$P(a|\text{Good}) \propto P(a) \cdot P(\text{Good}|a)$
关键洞察:
如果你假设 “一个动作导致好结果的概率” $P(I=\text{True}|o, a)$ 正比于它的优势值的指数形式 $\exp(A)$,那么这两个公式在数学上就是等价的!
- 结论:只要我们训练一个模型去模拟 $P(a | o, I=\text{True})$(即:在已知结果很好的条件下,动作的概率分布),我们就间接地获得了那个理论上的最优策略。
这就是为什么 RECAP 要把 RL 问题转化成一个“带条件生成的监督学习”问题。
3. 实现:RECAP 的训练公式(Eq. 3)
基于上面的理论,作者设计了如下的损失函数(Loss Function):
这个公式由两部分组成,我来解释它们的含义和作用:
Term 1: 无条件似然 (Unconditional Likelihood)
- 公式:$\log \pi_\theta(a_t | o_t, \ell)$
- 含义:这是标准的行为克隆(Behavior Cloning)。
- 目的:让模型 $\pi\theta$ 能够通过调整输入(把 $I_t$ 去掉或设为 null),还原出原始的数据分布 $\pi{\text{ref}}$。
- 为什么需要它:这就好比让模型先学会“走路”(基础策略),不管走得好不好。这是为了保证模型的稳定性,防止它为了追求高分动作而“走火入魔”(Mode Collapse),导致很多基础动作都不会做了。
Term 2: 条件似然 (Conditional Likelihood) —— 核心!
- 公式:$\log \pi_\theta(a_t | I_t, o_t, \ell)$
- 这里的 $I_t$ 怎么来的:如果动作的优势 $A$ 大于阈值,则 $I_t=\text{True}$(好标签);否则 $I_t=\text{False}$(坏标签)。
- 含义:这是在教模型建立 结果 $\leftrightarrow$ 动作 的映射关系。
- 当输入 $I=\text{True}$ 时,模型被迫去拟合那些高优势的动作。
- 当输入 $I=\text{False}$ 时,模型被迫去拟合那些低优势的动作。
- 目的:让模型学会区分好坏。
4. 推理时的魔法:CFG (Classifier-Free Guidance)
训练好之后,我们怎么用这个模型?这就涉及到了你在深度学习(特别是 AI 绘画,如 Stable Diffusion)中常听到的 CFG。
根据之前的理论推导(公式 13),我们可以通过调整梯度来“锐化”策略:
总结
- 公式来源:源自 MaxEnt RL(我们需要 $\exp(A)$ 加权的策略)和 贝叶斯推断(我们可以通过条件概率 $P(a|Good)$ 来近似它)。
- $I_t$ 的含义:优势值的二值化标签。它把复杂的 RL 奖励信号简化成了简单的“好/坏”分类信号,方便 VLA 这种大模型理解。
- Eq. 3 的含义:这是一个混合 Loss。
- 一半力量用于“不忘本”(记住所有原始数据)。
- 一半力量用于“学分类”(记住什么动作对应好标签,什么对应坏标签)。
- 最终效果:通过这种方式,我们避开了复杂的数学积分和不稳定的 RL 训练,用最简单的监督学习(Supervised Learning)实现了强化学习的效果。
那么公式2有什么用?根据公式3训练的大致过程是怎样的?
这是一个非常关键的问题。弄清楚 公式 2(理论/推理目标) 和 公式 3(训练损失) 之间的关系,就真正打通了 RECAP 的任督二脉。
简单来说:
- 公式 2 是“目的”:它告诉我们在推理(考试)的时候,如何把学到的东西组装成一个超强的策略。
- 公式 3 是“手段”:它告诉我们在训练(平时做题)的时候,怎么做才能把公式 2 所需要的零件练好。
下面我详细拆解。
第一部分:公式 2 有什么用?
公式 2 的形式如下(简化版):
1. 它是推理时的“组装说明书”
公式 2 并不是用来做反向传播(训练)的,而是用来做 推理(Inference) 的。
它的含义是:“如果你想得到一个比原始策略 $\pi_{\text{ref}}$ 更强的策略 $\hat{\pi}$,你应该通过数学方法,把‘无条件策略’和‘条件策略’结合起来。”
- $\pi_{\text{ref}}(a|o)$:这是“平时怎么做”(基础概率)。
- $\pi_{\text{ref}}(a|o, I=\text{True})$:这是“在成功的前提下怎么做”(条件概率)。
- 比率项 $(\dots)^\beta$:这实际上是在计算 “成功的动作”相对于“平庸的动作”的特征偏移量。
2. 它是 Classifier-Free Guidance (CFG) 的理论依据
你可能听说过 AI 绘画(Stable Diffusion)里的 CFG Scale。当你把 CFG 调高时,画出来的图更符合 Prompt,但多样性降低。
公式 2 就是 CFG 在强化学习中的数学表达。
- 如果没有公式 2 的证明,我们就不知道为什么要在推理时同时计算“有条件”和“无条件”的输出并把它们相减(相除)。
- 公式 2 证明了:这样做在数学上等价于提取了高优势(High Advantage)的动作。
第二部分:根据公式 3 的详细训练过程
公式 3 是训练时的损失函数:
这就意味着,我们需要训练同一个神经网络,让它既能处理带 $I$ 的输入,也能处理不带 $I$ 的输入。
以下是基于公式 3 的 Step-by-Step 训练流程:
1. 数据准备 (Data Preparation)
假设我们有一条刚刚收集的轨迹(比如机器人尝试抓杯子),包含了图像 $o_t$ 和动作 $a_t$。
- 第一步:裁判打分
- 使用价值函数 $V$ 计算这一步的优势 $A_t$。
- 假设算出来 $A_t$ 是正数(比平均好)。
- 第二步:生成标签
- 因为 $A_t$ 是正数,所以标签 $I_t = \text{“Advantage: Positive”}$。
2. 构造训练样本 (Batch Construction)
为了最小化公式 3,我们实际上是在做 Dropout 训练。对于同一个数据样本 $(ot, a_t)$,我们会有一定概率(比如 $p{drop}=30\%$)丢弃标签。
所以,送入神经网络的 Batch 实际上混合了两种情况:
3. 前向传播与损失计算 (Forward & Loss)
由于 VLA 的动作头是 Flow Matching (Diffusion),这里的 $\log \pi$ 在代码实现上并不是算概率,而是算 MSE(均方误差)。
- 对于情况 A:模型输出预测噪声/向量场,计算与真实动作的 MSE 误差。记为 $Loss_{cond}$。
- 对于情况 B:模型输出预测噪声/向量场,计算与真实动作的 MSE 误差。记为 $Loss_{uncond}$。
总 Loss = $Loss{uncond} + \alpha \cdot Loss{cond}$
4. 反向传播 (Backpropagation)
根据总 Loss 更新神经网络参数。
通过这个过程,这就得到了一个“双面人”模型:
- 你不给它标签,它就是个普通的模仿学习模型(学会了所有历史数据,包括平庸的)。
- 你给它标签,它就变成了专家(专门输出该标签对应的动作)。
第三部分:打通两者——从训练到推理
最后,让我们看看训练完(做完公式 3)后,如何利用公式 2 进行推理。
场景:机器人站在桌子前,准备抓杯子。
模型运行两次(或并行运行):
- 第一次运行:输入
[图像, "Advantage: Positive"] $\rightarrow$ 得到输出 $\epsilon_{cond}$(这就是公式 2 分子里的项)。
- 第二次运行:输入
[图像, (空白)] $\rightarrow$ 得到输出 $\epsilon_{uncond}$(这就是公式 2 分母里的项)。
应用公式 2(CFG 引导):
我们不直接用第一次的输出,而是用两者之间的差值来修正方向:
- 如果 $\beta=1$,这就在用纯粹的“好动作”。
- 如果 $\beta>1$(比如 2.0),这就是在把“好动作”和“普通动作”的区别放大,强制让机器人表现得更加“激进地好”。
总结
- 公式 2 是“推理时的导航仪”:它告诉我们在测试时如何结合条件输出和无条件输出,以指向最优方向。
- 公式 3 是“训练时的左右手互博”:通过随机丢弃标签(Dropout),强迫同一个模型同时学会“普通模式”和“专家模式”,从而为推理时的公式 2 提供素材。
1. 整体训练流程大致是怎样的,使用的数据是什么;是有将推理过程的数据加入原数据集中的过程吗; 2. 训练过程中如果是Negative标签,模型的行为是怎样的; 3. flow matching是直接将动作预测出来了,那么如何求概率
这三个问题非常核心,触及了 RECAP 的工程实现细节。下面我逐一为你详细解答。
1. 整体训练流程是怎样的?是否有将推理数据加入原数据集?
答案是肯定的。 RECAP 的核心就是一个“迭代式的数据聚合(Iterative Data Aggregation)”过程。
整体流程图解
它的流程可以看作是一个循环(Loop):
Phase 1: 预训练(Pre-training)
- 数据来源:大规模的跨机器人数据集(如 BridgeData, Fractal 等)以及互联网上的图文数据。
- 动作:训练初始的 VLA 策略 ($\pi$) 和 价值函数 ($V$)。
- 结果:得到一个“懂很多通用知识,但特定任务(如做咖啡)可能不太熟练”的基座模型。
Phase 2: 针对特定任务的微调(SFT)
- 数据:针对目标任务(例如“叠衣服”)的少量人类专家演示。
- 动作:微调模型。
- 结果:模型学会了叠衣服的基本动作,但成功率可能不高(比如 60%)。
Phase 3: 自主练习与数据聚合(核心循环)
- 步骤 A:推理/数据收集(Data Collection)
- 让机器人在现实中去尝试叠衣服。
- 收集三类数据:
- 成功数据:机器人自己做对的。
- 失败数据:机器人搞砸的(掉地上了)。
- 干预数据(Interventions):人类看机器人要搞砸了,用手柄接管修正的数据。
- 步骤 B:数据聚合(Aggregation)
- 关键点:把刚才收集的所有数据(推理过程产生的数据),全部倒回之前的训练数据集中。
- 现在的池子 =
原始演示 + 第一轮尝试的数据 + 第二轮尝试的数据…
- 步骤 C:价值评估与打标签(Re-labeling)
- 用所有数据重新训练价值函数 $V$。
- 用新的 $V$ 给池子里所有数据(包括旧的演示和新的尝试)重新计算优势 $A$。
- 生成标签:优势高的打
Positive,优势低的打 Negative。
- 步骤 D:策略再训练(Re-training)
- 用这个更新后的大数据集,重新从头(或从上一个checkpoint)微调 VLA 策略。
这个循环可以进行多次。每一次循环,数据量变大,价值函数变准,策略变强。
2. 训练过程中如果是 Negative 标签,模型的行为是怎样的?
这是一个非常容易误解的点。
在训练过程中,如果输入是 Negative 标签,模型会被强迫去“模仿错误”。
- 场景:假设有一条数据是机器人试图抓杯子,结果手滑了,把杯子碰倒了(这是一个失败的轨迹)。
- 标签:经过计算,这条轨迹的优势是负的,所以标签是
Advantage: Negative。
- 模型的行为:
- 输入:
[图像: 杯子在桌上], [指令: 抓杯子], [提示: Advantage: Negative]
- 目标输出(Ground Truth):“手滑碰倒杯子”的那个动作。
- Loss 计算:如果模型预测出了“成功抓起”的动作,Loss 反而会变大!只有当模型准确预测出那个“手滑”的动作时,Loss 才会最小。
为什么要这么做?
这其实是在建立条件概率分布。
- 你是在教模型:“嘿,你看好了,这就叫‘失败’。当你收到
Negative 信号时,你就得像这样搞砸它。”
- 模型因此学会了将
Negative 信号与低质量动作(手抖、路径规划差、延时)建立强关联。
- 最终目的:在推理时,只要我们不给
Negative 信号,而是给 Positive 信号,模型就会避开它学过的那些错误模式,转而去检索它学过的正确模式。
3. Flow Matching 是直接将动作预测出来了,那么如何求概率?
你问到了 RECAP 放弃 PPO 而选择监督学习的根本数学原因。
问题所在
在 PPO 中,我们需要计算 $\log \pi(a|o)$(动作的对数概率密度)。
- 如果输出是高斯分布(Gaussian),公式很简单。
- 但 Flow Matching(以及 Diffusion)生成动作的过程是解微分方程(ODE)或逐步去噪的过程。
- 直接求概率非常难:要计算 Flow Matching 生成动作的精确 Log-likelihood,需要计算 Jacobian Matrix 的迹(Trace),或者解反向 ODE。这在计算上极其昂贵,且数值不稳定。
RECAP 的处理方式:不求概率,只求距离
RECAP 的训练公式(公式 3)里写着 $\log \pi$,但这只是理论形式。
在代码实现层面,RECAP 利用了 ELBO(证据下界) 的性质。
对于 Flow Matching / Diffusion 模型,以下两个目标在数学上是等价(或高度相关)的:
- 最大化对数似然概率:$\max \log p(x)$
- 最小化去噪/流匹配误差:$\min || ut(x) - v\theta(x) ||^2$ (即 MSE Loss)
结论:
- 在 RECAP 中,我们不需要算出具体的“概率值”(比如 0.85 或 -2.3)。
- 我们只需要最大化这个概率。
- 而最小化预测动作与真实动作之间的 MSE(均方误差),在数学上就等同于最大化生成该动作的概率。
所以,当论文公式里写“最大化 $\log \pi(a|\text{Positive})$”时,实际训练代码里跑的是:
简单总结:
因为算不出精确概率,所以没法用 PPO(PPO 需要概率值做除法);
但因为监督学习只需要让概率变大(即误差变小),所以可以用 RECAP(直接做 MSE 回归)。
总结一下Appendix C. Computing the log-likelihood for policy improvement以及 E. Using CFG for test-time policy improvement with β > 1的内容
这两个附录(Appendix C 和 E)主要为 RECAP 方法提供了数学上的严谨证明。
简单来说:
- Appendix C 解决了“训练 Loss 怎么写”的问题:证明了我们常用的 MSE Loss 等价于最大化概率。
- Appendix E 解决了“推理怎么做”的问题:证明了 CFG(无分类器引导)等价于数学上的优势加权采样。
以下是详细总结:
Appendix C: Computing the log-likelihood for policy improvement
(如何计算策略改进所需的对数似然)
核心问题:
RECAP 的理论基础(公式 3)要求最大化策略的对数似然 $\log \pi_\theta$。
但是,VLA 模型非常复杂,包含两部分:
- 离散部分:输出文本 token(如思考过程 $\hat{\ell}$)和离散化的动作 token($a^\ell$)。这部分容易算概率(用 Softmax)。
- 连续部分:输出连续的动作轨迹($a_{t:t+H}$),使用的是 Flow Matching(类似 Diffusion)。Flow Matching 本身并不直接输出一个概率数值(Probability Density),它输出的是向量场。
推导过程:
分解概率:
作者首先将总概率分解为三部分:文本概率 + 离散动作概率 + 连续动作概率。
前两项直接用交叉熵(Cross-Entropy)处理。
处理连续部分(难点):
对于连续动作部分,作者利用了变分推断中的 ELBO(证据下界) 概念。
- Flow Matching(以及 Diffusion)的训练目标通常是最小化噪声预测的均方误差(MSE)。
- 作者引用前人工作(Song et al., Kingma et al.)证明:最小化 Flow Matching 的加权 MSE Loss,数学上等价于最大化数据的对数似然的下界(Lower Bound)。
最终结论(公式 9):
- 这意味着:你在代码里写
Loss = MSE(pred, target),在数学上就是在努力提高 log p(target)。
- 这为 RECAP 使用 Flow Matching Loss 来代替 PPO 中的概率计算提供了理论合法性。
Appendix E: Using CFG for test-time policy improvement with $\beta > 1$
(在测试时使用 CFG 进行策略提升)
核心问题:
在训练时,我们通过输入 Advantage: Positive 让模型学会了“好动作”。
但在推理时,我们可能希望模型“极其偏向”好动作,甚至比训练数据中的好动作还要好(即 $\beta > 1$)。我们如何不需要重新训练就能实现这一点?
推导过程:
目标策略公式:
根据 RECAP 的理论,我们想要的锐化策略 $\hat{\pi}$ 满足:
其中 $\pi{\text{cond}}$ 是条件概率(Good),$\pi{\text{ref}}$ 是无条件概率(Average)。
梯度视角(Score Function):
Flow Matching / Diffusion 模型学习的本质是分数的梯度(Gradient of Log-likelihood),即 $\nabla_a \log \pi$。
CFG 推导(公式 13):
对上面的目标策略取对数并求梯度,可以得到:
物理含义与操作:
这个公式直接对应了 Classifier-Free Guidance (CFG) 的操作步骤:
- $\nablaa \log \pi{\text{ref}}$:让模型在不给 Prompt 的情况下跑一次,得到“普通动作的方向”。
- $\nablaa \log \pi{\text{cond}}$:让模型在输入
Advantage: Positive 下跑一次,得到“好动作的方向”。
- 相减:得到“从普通变好”的修正向量。
- $\times \beta$:将修正向量放大(如果 $\beta > 1$)。
- 相加:生成最终动作。
结论:
这一节证明了,虽然 RECAP 训练时只是简单的条件控制(相当于 $\beta=1$),但利用 Diffusion/Flow Matching 的特性,我们可以通过简单的线性组合推理(Linear Combination at Inference),动态调整 $\beta$ 值,从而在测试时获得比训练数据更强的性能。
1. 离散化动作token是什么 2. flow matching 在这篇论文中具体是如何工作的? 3. 公式9为什么有一个是常数 4. 公式13具体如何使用在flow matching中,公式13只是得到概率?
这四个问题直击 RECAP 算法实现的最底层细节。这篇论文结合了 VLM(大语言模型)、离散 Tokenizer 和 Flow Matching(流匹配生成模型),确实比较复杂。
下面我逐一为你拆解:
1. 离散化动作 Token (Discretized Action Tokens) 是什么?
在 RECAP 使用的 VLA 模型架构($\pi_{0.6}$)中,输出被分为了两部分:“粗略的计划” 和 “精细的执行”。
- 定义:将连续的机械臂动作数值(比如关节角度 1.57弧度)强制转换成整数编号(Token ID,比如 Token #342)。
- 具体实现 (FAST):
- 论文中提到的 FAST (Feed-forward Action Streaming Tokenizer) 是一种类似于 VQ-VAE 的技术。
- 它把无限可能的动作空间切分成了有限个“代码书(Codebook)”条目。
- 例子:假设机械臂只动一个关节,范围是 0~180度。我们把它切成 100 份。如果关节要动到 90度,就对应 Token #50。
- 在论文中的作用:
- 作为桥梁:Gemma(语言模型主干)擅长输出离散的文本 Token。为了让 Gemma 能“控制”动作,作者让 Gemma 先输出一串离散动作 Token。
- 作为条件:这些离散 Token 就像是给动作打了个“草稿”。随后的 Flow Matching 网络(动作专家)会看着这个“草稿”,把它画成平滑、连续的曲线。
- 优点:这让 VLM 主干(LLM)不需要直接回归连续数值,保持了 LLM 纯粹处理离散 Token 的优势。
2. Flow Matching 在这篇论文中具体是如何工作的?
Flow Matching 是这一代 VLA 模型($\pi_{0.6}$)产生高频、平滑动作的核心机制。你可以把它想象成“连接噪声和数据的滑梯”。
A. 训练阶段 (Training)
- 输入:
- 真实动作 $x_1$:比如机器人抓杯子的这一秒钟内的精确轨迹。
- 噪声 $x_0$:从正态分布里随机采样的杂乱数值。
- 时间 $t \in [0, 1]$:告诉模型现在处于生成的哪个阶段。
- 条件:图像 $o$、指令 $\ell$、离散动作 Token $a^\ell$、以及最重要的优势标签 $I$。
- 目标:构建一个向量场 (Vector Field) $v_t$。
- 想象空间中充满了箭头。这些箭头指示了如何从“噪声点”移动到“真实动作点”。
- Flow Matching 的一种简单形式(Conditional Flow Matching)的训练目标是:让网络预测的向量 $v_\theta(x_t)$ 指向 $x_1 - x_0$ 的方向。
- Loss:$\text{MSE} = || v_\theta(x_t) - (x_1 - x_0) ||^2$。
B. 推理阶段 (Inference/Generation)
- 初始化:从高斯分布采样一个纯噪声 $x_0$。
- 求解 ODE (常微分方程):
- 这是一个逐步去噪的过程。
- 在 $t=0$ 时,问网络:“我现在在 $x_0$,我该往哪走?” 网络输出向量 $v_0$。
- 往前走一小步:$x{next} = x{prev} + v \cdot dt$(例如使用 Euler 方法)。
- 重复多次(例如 10 步或 50 步),直到 $t=1$。
- 结果:最终得到的 $x_1$ 就是原本是一团乱麻的噪声变成的一段平滑的机器人动作轨迹。
3. 公式 9 为什么有一个是常数 ($c$)?
公式 9 出现在附录 C,用于推导训练目标。
- 这个 $c$ 是什么?
这个常数 $c$ 通常包含两部分来源:
- 数据的熵 (Entropy of Data):这是由数据集本身决定的物理性质。
- 先验分布的概率 (Prior Probability):即噪声分布 $\log p(x_0)$ 的项。
- 为什么是常数?
- 在优化神经网络参数 $\theta$ 时,我们只关心包含 $\theta$ 的项。
- 噪声分布是固定的(标准正态分布),真实数据的分布也是固定的(由物理世界决定)。
- 无论你怎么调整神经网络的权重 $\theta$,这个 $c$ 的值都不会变。
- 数学意义:
这告诉我们,虽然直接计算 $\log \pi$ 很复杂(因为它包含这些常数项),但如果我们只想最大化 $\log \pi$(求导),我们完全可以忽略这个 $c$,只去最小化那个 MSE Loss。
4. 公式 13 具体如何使用在 Flow Matching 中?公式 13 只是得到概率吗?
不,公式 13 不仅仅得到概率,它直接指导了“怎么走”。
公式 13 描述的是 Score Function (分数的梯度) 或者说 Vector Field (向量场) 的组合方式。
在 Flow Matching(或 Diffusion)中,神经网络的输出 $v_\theta(x_t)$ 在数学上正比于或者等价于这个梯度项 $\nabla_a \log \pi$。
具体使用步骤 (CFG Sampling):
在推理阶段的每一步(ODE Solver 的每一步):
准备输入:
- 当前的含噪动作 $x_t$。
- 条件输入 1:
[图像, 指令, "Advantage: Positive"] $\to$ 对应 $cond$
- 条件输入 2:
[图像, 指令, (空)] $\to$ 对应 $ref$ (或 $uncond$)
网络预测 (Double Inference):
- 将条件 1 输入网络,得到向量 $v_{cond}$。这代表“专家建议往哪走”。
- 将条件 2 输入网络,得到向量 $v_{ref}$。这代表“普通人建议往哪走”。
向量合成 (应用公式 13):
计算最终的引导向量 $v_{final}$:
- 几何意义:算出从“普通”指向“专家”的差量向量,把这个差量放大 $\beta$ 倍,然后加回去。
移动:
使用 $v{final}$ 更新位置:$x{t+dt} = xt + v{final} \cdot dt$。
总结:
公式 13 不是算出一个标量概率值让你看,而是算出一个合成的方向向量。它告诉 ODE 求解器:“不要只听专家的,要听‘专家比普通人强在哪里’的那部分意见,并把这部分意见放大执行。”
离散动作token是作为动作专家的输入/条件吗?
根据论文 Section V-A (The $\pi_{0.6}$ model) 中的明确描述,答案是:
不是。
虽然这是一个非常反直觉的设计(通常我们认为离散动作是连续动作的“草稿”),但论文中明确指出:动作专家网络(Action Expert)并不接收离散化动作 token 作为输入。
以下是详细解释和证据:
1. 论文原文证据
在论文第 6 页左栏下方的 Section V-A 中,作者写道:
“The action expert does not receive these as input, such that discrete and continuous actions are predicted independently.”
(动作专家不接收这些[离散动作 token]作为输入,因此离散动作和连续动作是独立预测的。)
2. 它们的关系是什么?
尽管离散动作 token 不是连续动作专家的输入,但它们共享同一个大脑(VLM Backbone)。
- VLM 主干 (Gemma):处理图像和文本,生成深层的特征表示(Activations/Embeddings)。
- 分支 1:离散头:利用这些特征预测离散动作 token($a^\ell$)。
- 分支 2:动作专家(Flow Matching):利用同样的特征(以及 VLM 生成的思维链/子任务文本 $\hat{\ell}$)来生成连续动作($a_{t:t+H}$)。
3. 为什么要有离散动作 Token?
既然动作专家不看它,为什么还要训练 VLM 输出离散动作 token?
这是基于该团队之前的研究(论文中引用的 [73] Knowledge Insulation 训练配方):
- 辅助监督:强制 VLM 理解动作的语义。让语言模型去预测离散动作,可以迫使 VLM 的内部特征包含丰富的动作信息。
- 梯度阻断:动作专家(Flow Matching)虽然使用 VLM 的特征,但梯度不会反向传播回 VLM 主干(Stop Gradient)。VLM 主干主要靠预测文本和离散动作 token 来更新参数。
- 解耦:这种设计让 VLM 专注于“理解和规划”(产生好的特征),而让动作专家专注于“执行”(把特征翻译成平滑的轨迹)。
总结
- 输入给动作专家的是:VLM 的中间层激活值(Activations)、图像特征、任务指令、以及 VLM 生成的子任务文本(Sub-task text, $\hat{\ell}$)。
- 不输入给动作专家的是:FAST Tokenizer 生成的那些离散动作 Token ($a^\ell$)。
预训练阶段VLM的每一部分输出都有明确标签以及损失函数使VLM的输出与标签拟合吗?如果是,后续加入的新数据如何得到sub_tasks之类的标签?
这是一个非常敏锐的问题,触及了 VLA 自我改进(Self-improvement)中最微妙的数据闭环环节。
简短的回答是:
- 预训练阶段:是的,所有部分(包括子任务文本
sub_tasks)都有明确的标签(Ground Truth),通常来自自动化标注或教师模型蒸馏。
- 新数据阶段:新数据的
sub_tasks 标签主要来自模型自己在推理时生成的文本(即“自产自销”),但通过奖励信号(成功/失败)来筛选或加权。
以下是详细的机制解析:
1. 预训练阶段:标签从哪里来?
在预训练阶段(Pre-training),VLA 是在一个巨大的离线数据集上进行监督学习(Supervised Learning)的。
图像 ($o_t$) & 动作 ($a_t$):
- 这是现成的。来自机器人历史上的传感器记录和控制器日志。
- 标签:真实的关节角度、夹爪状态。
- Loss:Flow Matching Loss (针对连续动作) + Cross-Entropy (针对离散动作 token)。
文本/子任务 ($\hat{\ell}$):
- 原始的机器人数据通常没有记录“我现在正在思考要把手移到杯子上方”这样的中间思维过程(CoT/Sub-tasks)。
- 标签来源:这通常通过事后标注(Hindsight Annotation)获得。
- 方法一:规则生成。对于简单的任务,可以通过脚本生成(例如:检测到夹爪闭合,就标注该段为“抓取物体”)。
- 方法二(主流):VLM 教师蒸馏。使用一个更强大的视觉语言模型(如 GPT-4V, Gemini Pro),把机器人的视频喂给它,让它生成每一步的文本描述(Description/Instruction)。
- 拟合:这些生成的文本被当作“标准答案(Ground Truth)”。VLA 的语言部分通过 Cross-Entropy Loss(标准的 Next Token Prediction)来拟合这些文本标签。
2. RECAP 阶段:新数据的 sub_tasks 标签如何获得?
当使用 RECAP 进行自主数据收集时,机器人是在现实世界中跑,没有 GPT-4V 实时给它打标签,也没有人类在旁边打字。
那么,放入训练池的新数据,其 sub_tasks 标签是什么?
答案是:使用模型自己生成的输出作为标签(Self-Generated / Pseudo-Labels)。
这背后的逻辑类似于 STaR (Self-Taught Reasoner) 或 Rejection Sampling Fine-tuning。
具体流程:
推理/收集数据:
- 模型接收图像和指令。
- 输出 A(思维):模型自己预测/生成了一个子任务描述 $\hat{\ell}_{pred}$(比如它想:“由于优势条件为正,我决定去抓红色的积木”)。
- 输出 B(动作):基于这个思维,模型执行了动作 $a_{pred}$。
- 结果:记录这一整条轨迹 $\tau = (o, \hat{\ell}{pred}, a{pred})$。
结果验证(Advantage Check):
- 任务结束后,我们获得了奖励信号(成功/失败)。
- 如果成功(High Advantage):
- 我们假设:“既然结果是成功的,那么模型刚才产生的‘思维’(子任务)和‘动作’都是正确的。”
- 标签化:我们将模型自己生成的 $\hat{\ell}_{pred}$ 直接当作训练的 Target Label。
- 训练:将这条轨迹加入数据集,让模型再次学习它。这强化了“导致成功的思维模式”。
- 如果失败(Low Advantage):
- 我们给这条轨迹打上
Advantage: Negative 标签。
- 标签化:依然使用模型自己生成的 $\hat{\ell}_{pred}$ 作为文本部分的 Target。
- 训练:训练模型“当输入包含 Negative 标签时,预测出这种错误的思维/动作”。
这里的潜在风险与解决:
- 风险:如果模型“想错了”但“做对了”(比如思维是“我要去撞墙”,但动作却是“抓杯子”且成功了),那么通过这种方法训练,模型会学到错误的思维逻辑(幻觉)。
- RECAP 的缓解机制:
- 主要依靠动作纠正:在 RECAP 中,最关键的改进往往来自动作层面的优势调节。子任务文本更多是作为一种 Conditioning(条件),只要它能辅助产生好的动作向量场即可。
- 人类干预数据:对于包含人类专家干预(Intervention)的数据,动作是专家提供的(绝对正确),但文本思维依然是模型生成的(或者是基于任务指令固定的)。在这种情况下,模型学习的是:“在我想着 $\hat{\ell}$ 的情况下,专家修正了我的动作 $a$”。
总结
- 预训练:文本标签是“老师教的”(来自更大的模型或规则)。
- 新数据训练:文本标签是“自己想的”。
- 如果做对了,就认为想对了,把自己生成的文本作为标签进行巩固。
- 如果做错了,就通过 Negative 标签将其归档为“失败案例”进行学习。
该论文提出的RL算法是基于什么RL中的第一性原理的?它提出的算法与PPO等算法有什么本质不同?
根据论文内容,RECAP算法基于的RL第一性原理及其与PPO的本质区别如下:
1. RECAP基于的RL第一性原理:正则化强化学习 (Regularized RL) 与 优势加权策略提升
RECAP 并非基于传统的策略梯度(Policy Gradient)或 Q-learning 的迭代更新,而是建立在 正则化强化学习(Regularized Reinforcement Learning) 的封闭解(Closed-form solution)之上。
具体推导逻辑(见论文 Section III 和 IV-B):
理论基础:在标准 RL 目标函数中加入 KL 散度正则化项(约束新策略 $\pi$ 不偏离参考策略 $\pi_{\text{ref}}$ 太远),其最优解具有封闭形式:
其中 $A^{\pi_{\text{ref}}}$ 是优势函数。
RECAP 的转化(贝叶斯视角):论文利用贝叶斯法则将上述形式转化为条件概率问题。如果定义一个“改进指示器”变量 $I$(例如,当动作的优势值大于某个阈值时,$I$ 为真),那么在该条件下动作的分布可以写为:
这与正则化 RL 的最优解形式在数学上是等价的。
核心机制:因此,RECAP 不直接优化奖励函数,而是通过 优势条件化(Advantage Conditioning) 来近似这个最优解。它将强化学习问题转化为一个监督学习(Supervised Learning) 问题:训练一个模型 $\pi_\theta(\mathbf{a}|I, \mathbf{o})$,在训练时输入 $I$(基于计算出的优势值),在推理(Deployment)时强制输入 $I=\text{True}$(即“Advantage: positive”),从而采样出高优势的动作。
2. RECAP 与 PPO 等算法的本质区别
RECAP 与 PPO(Proximal Policy Optimization)在优化目标、数据效率和模型兼容性上有本质区别:
| 特性 |
RECAP (本文方法) |
PPO (及其变体) |
| 核心优化机制 |
监督学习 (Supervised Learning) / 条件行为克隆。 它不计算策略梯度,而是通过最大化条件似然(Conditional Likelihood)来训练,让模型学会“如果是好结果,应该怎么做”。 |
策略梯度 (Policy Gradient)。 它通过计算梯度 $\nabla J(\theta)$ 直接调整参数以最大化奖励,通常涉及计算似然比(Likelihood Ratio)并进行裁剪(Clipping)。 |
| 数据使用方式 (Data Efficiency) |
离线/异策略 (Offline / Off-policy)。 RECAP 可以利用所有历史数据(包括专家演示、旧策略生成的轨迹、人工干预数据)。它是一个迭代式的离线 RL 框架。 |
在线/同策略 (On-policy)。 PPO 通常要求使用当前策略采集的数据进行更新,旧数据(Off-policy data)通常会被丢弃或需要通过复杂的修正才能使用,数据效率较低。 |
| 与生成式模型的兼容性 (Model Architecture) |
高兼容性。 RECAP 非常适合 Flow Matching 或 Diffusion VLA 模型。因为这些生成模型本质上就是在做分布拟合,RECAP 只需要增加一个条件输入(Advantage indicator)即可,无需修改损失函数形式。 |
低兼容性 / 难以实现。 PPO 依赖动作的精确对数似然(Log-likelihood)来计算比率 $r_t(\theta)$。对于 Flow Matching/Diffusion 模型,计算精确的 Log-likelihood 非常昂贵(需要 ODE 求解器)或不可行,导致训练极不稳定(论文 Section IV-B 和 Appendix D 提及)。 |
| 训练稳定性 |
较稳定。 因为它本质上是在做监督微调,避免了 RL 中常见的梯度高方差问题。 |
较不稳定。 特别是在处理高维 VLA 模型时,调节 Trust Region 和处理稀疏奖励非常困难。 |
总结:
RECAP 避开了 PPO 那种直接对策略参数求导来提升奖励的“硬”路径,而是选择了基于正则化 RL 理论的“软”路径——通过训练一个能够区分“好动作”和“坏动作”的条件生成模型,在推理时只生成“好动作”。这使得它能直接复用大规模预训练 VLA 的监督训练流程,而无需重新设计复杂的 RL 训练管线。
1. 你提到的“在标准 RL 目标函数中加入 KL 散度正则化项最优解具有封闭形式”具体是如何得到的?它与policy gradient中的公式有什么联系? 2.论文公式2具体是如何由这个“封闭解”推出来的 3. 论文公式3是怎么推导来的?
这三个问题直击 RECAP 算法的数学核心。RECAP 的推导链路是:正则化 RL 理论(第一性原理) $\rightarrow$ 贝叶斯形式变换 $\rightarrow$ 实际训练目标(RECAP)。
下面我将分步详细推导。
1. “封闭解”是如何得到的?与 Policy Gradient 的联系?
这是所有正则化 RL(如 RWR, AWR, REPS)的基石。
(1) 封闭解的推导
目标函数:
我们需要寻找一个新的策略 $\pi(\mathbf{a}|\mathbf{o})$,使其在最大化期望回报的同时,不偏离参考策略(旧策略)$\pi_{\text{ref}}$ 太远。数学表达为带有 KL 散度惩罚的优化问题:
其中 $Q$ 是动作价值函数(或者优势函数 $A$),$\beta$ 是温度参数(正则化系数)。
拉格朗日乘子法求解:
写出拉格朗日函数(针对单个状态 $\mathbf{o}$,省略 $\mathbf{o}$ 以简化符号):
对 $\pi(\mathbf{a})$ 求泛函导数并令其为 0:
解出 $\log \pi(\mathbf{a})$:
去掉对数,归一化项(Partition Function $Z$)吸收常数项:
如果使用优势函数 $A$ 代替 $Q$(因为 $V(\mathbf{o})$ 仅依赖状态,会被归一化常数 $Z$ 抵消),就得到了论文中的形式:
这就是所谓的封闭解(Closed-form solution)。
(2) 与 Policy Gradient (PG) 的联系
- Policy Gradient:试图通过梯度上升 $\nabla\theta J = \mathbb{E}[A \nabla \log \pi\theta]$ 逐步更新参数 $\theta$,让策略逼近高奖励区域。
- 封闭解:直接定义了最优策略长什么样(即:高优势动作的概率应该被指数级放大)。
- 本质联系:如果你对 PG 的目标函数加一个强 KL 约束,并在非参数空间求解,得到的正是这个封闭解。RECAP 等方法(属于 Expectation-Maximization 类 RL)实际上是跳过了“计算梯度”这一步,直接把 $\pi_\theta$ 当作一个回归模型(Supervised Learning),让它去拟合(Projection)这个理论上的最优分布 $\pi^*$。
2. 论文公式 2 是如何由这个“封闭解”推出来的?
公式 2 的核心思想是利用贝叶斯法则将“指数优势”替换为“条件概率比”。
背景:
上一节我们得到最优策略需要满足:$\hat{\pi} \propto \pi_{\text{ref}} \exp(A/\beta)$。
但是,在神经网络中直接去拟合 $\exp(A)$ 是不稳定的。RECAP 引入了一个二值随机变量 $I$(Optimality Indicator,代表“这个动作是否改进了策略”)。
推导步骤:
贝叶斯法则展开:
考虑参考策略 $\pi_{\text{ref}}$ 在给定条件 $I$(改进)下的后验分布:
移项得到似然比(Likelihood Ratio):
建立假设:
论文(以及引用的 CFG-RL 文献[4])假设:一个动作 $\mathbf{a}$ 能够触发“改进”事件 $I$ 的概率,与它的优势函数成指数关系:
直观理解:优势越大的动作,导致策略改进($I$)的概率越大。
代入封闭解:
回到第一节的封闭解 $\hat{\pi} \propto \pi_{\text{ref}} \exp(A/\beta)$。
将 $\exp(A/\beta)$ 替换为上面的条件概率比(假设 $\beta$ 作为一个缩放因子处理):
这就是论文中的 公式 2。
物理含义:最优策略 $\hat{\pi}$ 可以被看作是基础策略 $\pi_{\text{ref}}$ 被一个“引导项”(条件策略与无条件策略的比值)修正后的结果。
3. 论文公式 3 是怎么推导来的?
公式 3 是为了在神经网络中实现公式 2 而设计的损失函数。
推导步骤:
特例化 $\beta=1$:
论文指出,在训练阶段,为了简化问题,取 $\beta=1$。
将 $\beta=1$ 代入公式 2:
这说明:如果 $\beta=1$,最优策略 $\hat{\pi}$ 就等同于条件策略 $\pi_{\text{ref}}(\mathbf{a}|I, \mathbf{o})$。
也就是:我们只需要训练一个模型,让它学会“在给定 $I$(优势为正)的条件下生成动作”。
引入 Classifier-Free Guidance (CFG):
虽然训练时设 $\beta=1$,但在推理(Deployment)时,我们可能希望 $\beta > 1$(加强引导,只选最好的动作)。
CFG 技术要求同一个神经网络模型 $\pi_\theta$ 能够同时表示:
- 无条件分布 $\pi\theta(\mathbf{a}|\mathbf{o})$ (对应 $\pi{\text{ref}}$)
- 条件分布 $\pi\theta(\mathbf{a}|I, \mathbf{o})$ (对应 $\pi{\text{ref}}(\cdot|I)$)
这样在推理时才能通过线性组合来调整 $\beta$。
构造损失函数:
为了让一个模型同时学会以上两种分布,我们用多任务学习(Multi-task Learning)的方式构造负对数似然(NLL)损失:
- 任务 A:无条件预测(Dropout $I$)。损失为 $-\log \pi_\theta(\mathbf{a}_t|\mathbf{o}_t)$。
- 任务 B:条件预测(给定 $I$)。损失为 $-\log \pi_\theta(\mathbf{a}_t|I_t, \mathbf{o}_t)$。
将两者加权($\alpha$ 为权重),得到 公式 3:
其中 $It = \mathbb{1}(A^{\pi{\text{ref}}} > \epsilon)$ 是根据计算出的优势值生成的二值标签(Advantage: Positive / Negative)。
总结:
公式 3 不是通过复杂的梯度推导出来的,而是基于正则化 RL 的封闭解(公式 2),为了让神经网络能够同时学会“普通行为”和“高优势行为”(以便使用 CFG 技术)而设计的监督学习目标函数。
为什么说这篇论文是使用了RL?既然都是有一个损失函数,训练的目标是优化损失函数,那么RL与监督学习的本质界线是在哪里?
这是一个非常深刻且触及强化学习(RL)本质的问题。
简单来说:不仅看“怎么训练”(Loss Function),更要看“数据从哪来”以及“为了什么而训练”(Objective)。
虽然 RECAP 在训练神经网络参数时的确使用了一个类似于监督学习(Supervised Learning, SL)的负对数似然损失(NLL Loss),但它在本质上依然是 RL,原因在于以下三个核心界线:
1. 优化目标不同:模仿 vs. 寻优
这是最根本的区别。
数学上的界线:
虽然 RECAP 最终优化的公式(公式3)看起来像 SL 的损失函数,但它是由 RL 的最大化累积奖赏目标($\max J(\pi) = \mathbb{E}[\sum r]$)推导出来的(如前一个问题所述)。损失函数只是手段,最大化回报才是目的。
2. 数据分布不同:静态 vs. 动态交互
监督学习:
- 数据是静态的(Fixed Dataset)。训练前收集好,训练中不再变。
- 数据分布是独立同分布(i.i.d.)的假设。
强化学习:
- 数据是动态生成的。RECAP 包含了一个Data Collection 阶段(Algorithm 1 中的 Step 7)。
- 自我提升循环(Self-Improvement Loop):
- 策略 $\pi_k$ 与环境交互,生成新数据。
- 价值函数 $V$ 评价这些数据。
- 更新得到更强的策略 $\pi_{k+1}$。
- $\pi_{k+1}$ 再去收集更高质量的数据。
- 这种“策略影响数据,数据反过来更新策略”的闭环,是 RL 的标志性特征。
3. 标签的含义不同:答案 vs. 尝试
监督学习:
- 输入 $(s)$,标签 $(a)$。
- 损失函数告诉模型:“$a$ 是正确答案,预测偏离 $a$ 就是错误。”
强化学习 (RECAP):
- 输入 $(s)$,动作 $(a)$,反馈 $(r/V)$。
- RECAP 并没有一个绝对正确的“标签”。它拿到一个轨迹 $(s, a)$,然后问价值函数:“这个 $a$ 怎么样?”
- 如果价值函数说“好”(Advantage Positive),这个 $a$ 才会被当作“伪标签”来训练。
- 本质界线:RL 引入了评价机制(Critic/Value Function)。监督学习没有 Critic,只有 Dataset。
总结:为什么 RECAP 是 RL?
你可以把 RECAP 理解为 “带权重的、迭代式的监督学习”(Weighted Iterative Supervised Learning),这正是现代一类 RL 算法(如 AWR, RWR, EM-based RL)的典型范式。
- 它是 SL:因为在更新参数的那一步(Inner Loop),它用的是梯度下降去最小化分类/回归误差。
- 它是 RL:因为在宏观架构上(Outer Loop),它通过不断与环境交互、利用价值函数筛选数据,最终实现了超越原始数据表现(Superhuman Performance)的效果。
一句话概括:
如果你的算法只能做到“和数据集一样好”,那是监督学习;如果你的算法通过试错和评价,做到了“比数据集里的平均水平更好”,那就是强化学习。RECAP 做到了后者。
为什么强调是offline,如果是online应该如何操作?如果是PPO,会如何操作?如果是SFT,会如何操作?
这篇论文强调 “Offline(离线)”(准确说是 Iterated Offline RL,迭代式离线强化学习),主要是受限于 VLA(视觉-语言-动作)模型的巨大参数量 以及 真实机器人的物理限制。
下面详细对比 RECAP (Offline)、Online (假设情况)、PPO 和 SFT 在操作流程上的本质区别:
1. 为什么强调 Offline?如果是 Online 会如何操作?
为什么是 Offline?
- 计算瓶颈:VLA 模型(如 Gemma 4B + Action Expert)非常巨大。计算一次梯度更新可能需要几秒甚至更久(在集群上)。如果在 Online 模式下,机器人每动几步就要停下来等模型更新参数,效率极低。
- 数据效率:Offline RL 允许复用所有历史数据(Replay Buffer)。无论是昨天收集的、上个月收集的,还是专家演示,都可以反复拿来训练。
- 稳定性:将“数据收集”和“模型训练”解耦。你可以先让机器人跑一天收集数据,然后晚上用大规模 GPU 集群进行离线训练。
如果是 Online RL(全在线),操作流程如下:
- 交互:机器人执行当前策略 $\pi_{\theta}$,收集一小批数据(比如几条轨迹)。
- 等待:机器人必须停下来。
- 更新:GPU 立即计算这批数据的梯度,更新模型参数 $\theta \rightarrow \theta’$。
- 重复:机器人加载新参数 $\theta’$,继续执行。
- 代价:对于 VLA 这种大模型,这会导致机器人大部分时间在空转等待 GPU,且以前收集的数据通常会被丢弃(为了保证 On-policy 性质),极度浪费。
2. 如果是 PPO (Proximal Policy Optimization),会如何操作?
PPO 是典型的 On-policy(同策略) 算法,它在 VLA 上的操作流程极其严苛:
- 严格采样:
- 必须使用当前的策略网络 $\pi{\theta{old}}$ 去控制机器人收集一批数据。
- 关键点:一旦这些数据被用来更新过一次参数,或者策略更新了,这批数据必须立刻作废/丢弃。因为 PPO 数学上要求数据分布必须与当前策略分布一致(或非常接近)。
- 计算梯度:
- 利用这批“新鲜”数据计算优势 $A$ 和概率比率 $rt(\theta) = \frac{\pi\theta(a|s)}{\pi_{old}(a|s)}$。
- 困难点:对于 Flow Matching / Diffusion 策略,计算动作的精确概率密度 $\pi(a|s)$(Log-likelihood)非常困难且昂贵(需要解微分方程 ODE),这使得计算 $r_t$ 变得极不稳定或计算量爆炸。
- 限制更新:
- 通过 Clipping(裁剪)限制每次更新幅度,防止策略跑偏。
- 循环:
- 为了训练 VLA,你需要机器人没日没夜地跑,因为数据利用率太低(用一次就扔)。
总结:PPO 在此场景下意味着极低的数据效率(浪费昂贵的机器人时间)和极高的计算实现难度(Flow Matching 难算概率)。
3. 如果是 SFT (Supervised Fine-Tuning),会如何操作?
SFT(监督微调,或行为克隆 BC)是这里最简单的基线,它的操作流程如下:
- 数据筛选(人工):
- 你必须手动只挑选那些成功的、高质量的专家演示或机器人轨迹。
- 如果包含失败的轨迹,SFT 会照单全收地模仿,导致机器人学会失败。
- 训练目标:
- 最大化数据的对数似然:$\max \log \pi(a_{expert}|s)$。
- 关键点:它没有“优势(Advantage)”的概念。它假设数据集中每一个动作都是完美的真理。
- 无迭代(通常):
- 通常是一次性训练完就部署。
- 即使采用迭代式 SFT(如 DAgger),它也只利用人工纠正的数据,而无法利用机器人自主探索发现的“比专家更好”的动作(因为它没有价值函数来判断好坏)。
一图流对比
| 维度 |
RECAP (Iterated Offline RL) |
Online RL (e.g., PPO) |
SFT (Supervised Fine-Tuning) |
| 数据使用 |
所有数据(专家+历史+新数据) |
仅限当前策略刚刚采集的数据(用完即弃) |
仅限专家/成功数据 |
| 训练时机 |
解耦(收集完一批再训) |
同步(边跑边训,实时更新) |
离线(一次性训练) |
| 如何看待数据 |
挑食:用价值函数 $V$ 给数据打分,只学好的,不学坏的。 |
严格:必须是自己亲身经历的,通过梯度改进。 |
盲从:所有喂给我的数据都是对的,我都要模仿。 |
| VLA 适配性 |
高(适合大模型离线训练) |
低(计算太慢,数据太贵) |
中(简单但上限低) |