一种从经验中学习的 VLA 模型

图 1:RECAP 使得能够利用奖励反馈和干预数据来训练 VLA(视觉-语言-动作)模型。 我们的系统从一个结合了优势条件化(advantage conditioning)的预训练 VLA 模型开始,这使得模型能够有效地从真实世界的经验中学习。对于每项任务,我们部署该模型并收集自主执行数据(autonomous rollouts)以及在线的人类纠错数据。然后,我们利用这些在线数据微调价值函数,从而改进它对动作如何影响任务表现的估计。在这些更新后的优势估计之上对 VLA 进行微调和条件化,进而能够改善策略的行为表现。
1. 引言
| 线索/关键词 | 笔记内容 |
|---|---|
| 论文核心主张 | VLA 不能只靠"看"数据学习,必须像人一样在真实世界的反复尝试来掌握技能 |
| 现在 VLA 的缺陷 | 1. 模型能力上限 :目前 VLA 通过 BC(模仿学习)训练,最多只能达到预收集数据集的能力上限 2. 分布偏移 :真实场景遇到的情况与预收集的数据集分布存在偏差,执行时会存在"误差累积"的现象。 3. 无法自我修正:执行一旦发生错误,模型不知道怎么恢复 |
| 论文创新点 | 一句话总结:VLA 真机部署后,能力可以通过强化学习提高。自我提升过程中融合了异质数据,包括人类专家演示数据、按策略收集得到的数据、以及人类专家在机器人自主执行出错时人类介入提供的纠错干预数据 |
| 为什么要在真实世界做 RL? | - 只有亲自上手试错(自主采集数据),才能纠正部署时犯的实际错误 ; - 通过奖励反馈优化速度和鲁棒性 ,超越人类操作的速度; - 适应真实部署场景的新环境条件(如不同的光线、衣服材质) |
| RECAP 算法简单介绍 | 1. 一种使 VLA 在训练的所有阶段(预训练、自主执行)融入奖励反馈 的通用训练方法 2. 首先使用离线强化学习对 VLA 进行预训练 3. 然后在真实部署过程中收集数据,利用训练的价值函数评估任务执行的进展,对任务执行中的每个动作打标签(区分好动作还是坏动作),然后用打好标签的数据去监督训练 VLA(离线) |
| 最终达成的效果 | - 学会了叠真实多样的衣服(11 种)、做意式浓缩咖啡、组装工厂纸箱 - 吞吐量(每小时成功任务数)提升超过 2 倍 - 失败效降低约一半(2 倍减少) |
| 在 VLA 做 RL 的三大现实难题 | 1. 算法稳定性 :大模型直接用 PPO 等传统 RL 算法极难调参,容易崩 2. 数据异构 :数据来源混杂(专家演示、失败试错、人工干预),难以一起高效利用; 3. 奖励稀疏:真实任务通常只有"成功 / 失败"这两种模糊的信号,中间过程不知道对错 |
总结
单纯依赖模仿学习,VLA 的能力上限只能到达预训练数据集的上限。作者提出 RECAO 方法,创新是将强化学习中的通过奖励 R 反向传播调整模型内部的参数的方式,改为对收集的数据集评估它的"好 / 坏",加上标签,然后对 VLA 进行监督学习。
并且现在可以在真实部署的时候收集自主试错 和 人工干预的数据集,pi0.6 在极具挑战的长程操作任务上实现了吞吐量翻倍,证明了"从经验中学习"对 VLA 走向实用化很重要
2. 相关工作
| 线索/关键词 | 笔记内容 |
|---|---|
| DAgger | 一种用于模仿学习的算法,DAgger会在执行过程中,失败时人类介入收集相应数据来提升模型的表现 |
| RECAP 和 DAgger 的区别 | DAgger 收集数据集还是通过 BC 训练 VLA。缺点:干预本身是破坏性事件,靠模仿这些干预数据,学不到平滑的策略。 RECAP 提供奖励函数逼着机器人自己探索出比人更快的速度。 |
| VLA 模型上的 RL 微调 | 这类工作分类几何子方向: 1. 直接套 PPO :把 PPO 算法直接拿来微调 VLA --->缺点 :训练不稳定,难以用到流匹配模块上 2. 只改 VLA 的一部分 :训练一个"残差策略"叠加在 VLA 上、只微调动作头、在 VLA 输出的动作里做选择、或者在扩散模型的噪声空间里优化 本文的致命一击:以上方法大多只用离散动作。而 RECAP 是端到端训练整个 Flow Matching VLA,训练更稳定。 |
| 条件化策略(理论基石) | - 前人提出过"用奖励 / 优势 / 价值来给策略加条件 "的思路 - 本文的继承与发展:把这个思路首次大规模应用 到了通用 VLA 的预训练和微调中,并且巧妙整合了三种数据来源 (演示、干预、自主试错)。同时,我们也训练留语言条件化的分布式价值函数来支撑这个框架。 |
总结
底层 (模仿学习)不够好,因为会累计错误且有上限;
中层 (通用 RL 算法)难以驾驭大模型的长任务;
上层 (已有的 VLA + RL 工作)要么只改模型皮毛,要么只在简单任务上做,且依赖不稳定的 PPO。
而 RECAP 的定位是:第一个在复杂现实任务中,用稳定的"优势条件化"监督学习,端到端地训练整个流匹配 VLA,并同时收集三种数据"演示 + 人工干预 + 自主数据"来不断训练 VLA.
问题
| 问题 | 分析/理解 |
|---|---|
| 1. 为什么作者批判"直接套用 PPO" | PPO 在流匹配模型上根本算不出稳定的梯度,且样本效率极低 |
| 2.优势条件化能利用所有历史数据,为什么是巨大优势 | 真实机器人收集数据极贵。PPO 那种"只能用最新策略采的数据"会浪费掉之前失败的数据(因为用旧策略采的数据算出来的梯度有偏差)。而 RECAP 把优势值当作标签贴给数据,模型像看监督数据集一样,不管这数据是哪个旧策略采的,只要标签是"好动作",我就能学,极大提高了数据利用率。 |
3. 预备知识
| 线索/关键词 | 笔记内容 |
|---|---|
| 本文写作目的 | 为了推导 RECAP,本节按"从简到繁 "的逻辑,定义了三个层层递进的概念:标准 RL ---> 正则化 RL ---> 优势条件化策略 。 最终证明:只要策略以"优势"为条件,就一定能比原策略表现好。 |
| 1. 标准强化学习 | agent(策略)生成轨迹,每走一个 step 裁判生成奖励,整个过程的奖励加起来就是回报(Return) 为了不让机器人到最后一刻才知道总分,价值函数 来告诉按照当前动作做下去,最终所有动作完成时能得到多少分。 为了判断"某一步走错了没有",我们用优势函数 来衡量:"做完这一步后,价值函数预测的最后总分变好了多少?" RECAP 的核心就是:只学那些"让价值函数变好的动作(正优势)",避开那些"让价值函数变差的动作(负优势)"。 |
| 2. 正则化强化学习 | 标准强化学习一味的追求分数高 ,收集的数据集中有噪声数据,虽然成功,但是执行关节极度扭曲,模型可能学习到这种行为。从而过拟合到噪声数据 正则化 RL 给 VLA 加了一个 KL 散度约束。让新探索的策略和旧的策略相差不要太大 |
| 3. 通往 RECAP 的桥梁(改进概率与条件化) | 引入了一个改进指示器,定义改进概率表示某个动作相对于参考策略**"能带来改进的概率"** |
总结
这部分是 RECAP 的数学地基:
- 定义最基础的 RL 元素(策略、奖励、价值、优势),其中优势(Advantage)是衡量某个动作比平均水平好多少的关键指标(也就是做这个动作能让整体分数变多)。
- 引入正则化(KL 惩罚),防止模型训练时跑偏,并回顾了经典结论"优势大的动作应该被更大概率选中"。
- (最重要),跳出经典更是,引入"改进指示器 "这个概念。数学证明:只要以"优势好坏"为条件来筛选动作,新策略就一定比旧策略强 。这为第四部"把优势翻译成文本提示词"的做法,提供了坚定的理论依据。
4. RECAP 方法
| 线索/关键词 | 笔记内容 |
|---|---|
| 整体训练框架(三步循环) | RECAP 的完整流程由三个可以反复迭代的步骤组成(参考图 1): 1. 数据收集 :部署当前策略,收集自主运行数据(rollouts) + 人工在线纠错数据。每个完整回合(episode)只打一个标签:成功或失败(系数奖励 ) 2. 价值函数训练 :拿所有历史数据通过奖励函数计算剩余步数,监督训练一个"进度打分器",判断当前状态离成功还有多远。 3. 优势条件训练 :用价值函数算出每个动作的"优势",把这个优势 转成文本提示正/负),输入 VLA 做监督学习,得到更强的策略。 预训练阶段 :在整个预训练大数据集上做②③两步。 微调阶段:对新任务循环执行①②③。 |
| ① 数据收集细节 | - 自主数据 :模型自己跑,记录所有动作和最终成败 - 干预数据 :专家看着不行就接管。 - 关键决策:干预动作在训练时强制标记为正优势,因为假设专家给的纠正肯定比模型自己瞎搞好。 |
| ②价值函数训练(分布式) | 为什么叫"分布式"? 不直接输出一个分数(比如"80 分"),而是输出一个概率分布 (比如"有 70%概率是 80 分,30%概率是 70 分"),对噪声更鲁棒。 - 输入 :观测图像 + 语言指令。 - 输出 :将分数分成了 201 个离散区间,预测属于每个区间的概率。 - 训练目标 :最小化交叉上损失---让模型预测的概率分布尽量贴近真实观测到的"剩余步数"。 - • 奖励函数(如何算剩余步数) : - - 成功回合的最后一步:奖励 = 0(总算搞定了,不扣分) - - 失败回合的最后一步:奖励 = -C_fail(扣大分,比如-100) - - 其他中间步骤(还没结束):每一步奖励 = -1(催你快一点) - → 最终价值函数实际上预测的是 "负的剩余时间" ,即:越接近成功,值越接近0;刚开局,值最负(-几百)。 - 实现细节:为了兼容不同长度的任务,每个任务的值会被归一化到(-1,0)之间。 |
| ③ 策略提取(核心创新) | 问题 :有了价值函数,怎么用它来改进策略? 传统笨办法(PPO) :算梯度更新模型参数 → 在流匹配大模型上不稳定。 RECAP 的聪明办法(优势条件化) : • 先算优势(Advantage) :即"做完这个动作后,价值函数(进度表)涨了多少"。 • 把优势数值二值化 (只看正负):大于阈值 → It=1 It=1(好动作);小于阈值 → It=0 It=0(坏动作)。 • 将二值化的 ItIt 翻译成文本提示词,拼接在 VLA 的输入序列里 (例如 "Advantage: positive" 或 "Advantage: negative")。 • 训练时:VLA 只需要做它最擅长的监督学习(预测动作) ,但因为有"好坏标签"作为条件,模型会主动学习 :当标签是正的时候,尽量输出那些能带来高价值的动作;当标签是负的时候,避免那些动作。 • 推理(干活)时:永远只输入 "Advantage: positive",模型自然就会输出高质量动作。 |
总结
RECAP 的核心思想"化繁为简":
- 收集数据:不挑食,自主失败的数据和人工干预的数据全都要。
- 价值函数:只干一件事---实时告诉你"距离成功还有多远"。
- 策略更新(最大亮点):不在难搞的流匹配上面加 PPO 等强化学习算法,而是把强化学习里的"优势(Advantage)"这个关键指标,降维打击成一个简单的"正 / 负"文本标签,引导 VLA 通过它最擅长的监督学习来吸收 RL 的信号。
问题
| 疑问 | 理解/分析(结合上下文) |
|---|---|
| 1. 为什么价值函数要预测"剩余步数"而不是直接预测"成功概率"? | 因为"剩余步数"能同时编码速度和成败 。如果只预测成功概率,那么快动作和慢动作的成功率可能都是90%,无法区分优劣。而"剩余步数少"意味着动作又快又成功,正好对应作者最看重的指标------吞吐量。 |
5. 实现、模型与系统细节
| 线索/关键词 | 笔记内容 |
|---|---|
| 整体架构概览 | π0.6* = π0.6(基础 VLA)+ 优势条件输入 (Advantage Indicator)。 - 同时训练一个独立、较小的价值函数(VLM 骨干,670 M 参数)来提供优势估计。 |
| ① π0.6 模型(基础 VLA) | 两个核心组建: - VLM 骨干 - 动作专家:860 M 参数,负责生成连续动作。 输出三样东西(按生成顺序): 1. 子任务文本 2. 离散动作 token:用 FAST tokenizer 将动作离散化(便于和文本一起输入) 3. 连续动作:关节角度 + 夹爪指令(50 Hz, Flow Matching 生成)。 关键训练技巧(KI, 知识绝缘) : state 离散化与文本一块输入 VLA 推理顺序:先预测子任务文本,再基于子任务生成动作 |
| ② π0.6_ 的优势条件化(如何把 RL 信号塞进去) | 输入改造 :在 VLA 的输入序列中,插入一句文本: - 优势为正(It=TrueIt=True)→ 输入 "Advantage: positive" - 优势为负(It=FalseIt=False)→ 输入 "Advantage: negative" - 位置:放在子任务预测预测之后,动作生成之前。 这样做的意图:只有动作部分被优势条件影响,子任务预测不受影响(保持高层决策独立)。 |
| ③ 奖励函数与值函数设计 | 奖励函数(公式 5) ------极简但有效: • 中间每一步:r=−1 r=−1(督促快) • 成功最后一步:r=0 r=0 • 失败最后一步:r=−Cfailr=−Cfail(扣大分,如-100) 为什么这么设计? 这样价值函数 VV 就自动变成了 "负的剩余步数" 。例如成功时剩余0步,V=0;刚开始还剩100步,V=-100。 工程归一化 :不同任务长度差异巨大(叠衣服200步 vs 纸箱组装600步),所以每个任务单独归一化 到 (−1,0)(−1,0) 区间。 价值函数架构 : • 和VLA相同架构,但VLM骨干更小(Gemma 3 670M ,比主模型的4B小很多)。 • 输出为 201个离散区间(bins) 上的概率分布(分布式价值函数,不是标量)。 • 训练目标:最小化交叉熵 ,让模型预测的分布靠近真实观察到的剩余步数对应的 bin。 • 为了防止过拟合,也混入少量网络多模态数据共同训练。 |
| ④ 预训练与微调流程(关键工程细节) | 预训练阶段(大规模) : • 数据配比:延续π0.5的配方(网络图文数据 + 多机器人动作数据)。 • 先训价值函数(预测负剩余步数),再训VLA。 • 阈值设定 :优势阈值 ϵℓϵℓ 取该任务数据中30%分位数 (即只有前30%的"佼佼者"动作被标记为正优势)。 • 训练时在线计算优势 :价值函数作为独立模块,实时给数据打标签。 微调阶段(针对特定任务) : • 步骤1:SFT(监督微调) ------用目标任务的示教数据微调,固定优势指示器为True (相当于纯模仿学习,让模型先学会基本动作)。 • 步骤2:数据收集 ------部署当前策略,收集自主数据 + 人工干预数据 。干预数据在训练时强制标记为正优势 (假设专家动作一定比模型好)。 • 步骤3:重新训练 ------关键操作 :每次迭代(包括价值函数和策略)都从预训练checkpoint重新初始化 ,而非从上一轮模型继续(防止漂移,保证通用能力不丢失)。 • 实验中发现:往往只迭代1次就有显著提升(但特定任务可多次迭代)。 |
总结
第五部分 RECAP 的具体实现:
- 模型架构:π0.6*在Gemma 3 4B骨干 + 860M Flow Matching动作专家的基础上,仅通过在输入序列中插入"Advantage: positive/negative"文本,就实现了RL信号的注入,几乎零侵入式改造。
- 价值函数:它是一个小得多的 VLM(670 M),通过预测"负剩余步数"来评估任务进度,且输出的是 201 各 bin,对多任务噪声鲁棒。
- 训练流程 :预训练时在线计算优势并打标签;微调时采用 "SFT → 采集数据 → 从预训练重启训练" 的循环,既吸收了新经验,又靠"重启"这一工程技巧守住了通用能力的底线。
- 奖励函数:极简的"每秒扣 1 分 + 成败扣大分"的策略,巧妙的把复杂任务评估转化成"预估剩余时间"这一直观指标。
面试官提问
问题一: "我们注意到,π0.6 模型架构中有一个非常特殊的设计,叫做'知识绝缘(Knowledge Insulation,KI)',具体表现为在动作专家(Action Expert)和 VLM 骨干网络之间加入了'Stop Gradient(停止梯度)'。请问,为什么要加这个 Stop Gradient?如果不加,可能会导致什么后果?"
答:
- 语义保护:动作信号是低层次的连续坐标,VLM 是高层次的语义理解,放置动作专家训练的信号干扰预训练 VLM 的视觉-语言特征。
- 工程解耦:VLM 有 4B 参数,动作专家只有 860M。冻结 VLM 的梯度,只更新动作专家,能极大节省显存和训练时间,让训练更稳定。
- 泛化保留:保持 VLM 骨干的纯洁性,相当于保留了模型开放世界的理解能力。提高泛化性
问题二:"为什么在 π0.6 的 Flow Matching 架构上,直接做 PPO 很难,而改成输入'Advantage: positive'文本条件反而有效?"
答:
- 数学不可行:PPO 要算一个新动作在当前策略上的对数概率,然后用这个概率去乘以优势(A),算梯度。但是 Flow Matching 生成动作的概率密度没有闭式解,
- 范式转换(关键):RECAP 把 RL 的 Advantage 翻译成"positive / negative"文本。这本质上是把强化学习问题转换回监督学习问题----VLA 只需要学会"当条件为 positive 时,我该回归出怎样的动作坐标",文本条件是沟通 RL 与 VLA 的最短桥梁,既规避了概率计算,又保证了训练的绝对稳定。"
问题三:"中间每一步都设 r = -1,成功最后为 0,失败为负无穷(大常数)。基于这种奖励,价值函数是通过强化学习的试错(TD误差)学到的,还是通过监督学习学到的?请说出你的推理依据。"
答:
它是通过监督学习训练出来的。
具体操作是 :在数据集里,每一个 eposide 都是完整录下来的。当训练价值函数时,我们不需要模型去不断试错,我们直接拿奖励函数公式(成功 0 , 失败-100,中间 -1),从最后一帧往前倒着累加,算出一个"累积扣分总和"作为标准答案。
模型架构 :把这个标准答案离散化成 201 个分类区间,喂给一个 670 M 的 VLM 模型,让它做交叉熵分类 。模型学到给定当前这张图,预测"到结束还剩多少分"。
结论:它完全依赖已收集的完整轨迹打标签,来进行监督训练的。
问题四:"为什么在每一轮微调迭代时,要丢弃上一轮的权重,重新加载预训练权重?这明明很费算力,你如何说服我(面试官)多花这笔钱?"
答:
如果接着上一轮训练,会产生三种不可逆的紊乱:
- 权重固化:模型陷在 T恤的局部最优梯度里,不敢大幅度的去学习衬衫数据集,最终新老任务都学不好。
- 评判失真:上一轮的价值函数已经在 T恤数据集上训练了一遍,然后让它来评判衬衫数据集,会提供错误的强化信号。
- 神经元僵化 :上一个数据集上微调,模型的一些激活函数可能进入饱和状态,模型的可塑性和泛化能力大打折扣。
所以需要重新加载预训练权重,让他审视新任务。
问题五:假设现有的π0.6*在叠普通T恤上又快又稳,但遇到极其柔软、极易滑脱的丝绸衬衫时,因为追求速度导致50%的失败率。
在不重新采集大量数据、不改模型架构的前提下,针对RECAP框架,你会优先调整哪两个超参数?为什么?(提示:想想优势阈值和CFG参数)
答:我会优先调两个参数:
第一,降低优势阈值ϵℓ。 当前问题的核心是模型一味地追求比较快速的任务,吞吐量提升了,但是牺牲了稳定性。把阈值从 40%分位降到 20%,能让那些"虽然优势分分数不是那么高,动作慢但依然成功"的丝绸衬衫折叠数据也被标记为正优势。这样策略学到更稳重的动作。
第二,降低推理时的 CFG 引导系数β。 该系数放大"positive"这个条件的影响力。因为当前"positive"数据集几乎等同于"极其迅速"的数据,模型追求快速的动作。降低 β 相当于削弱对'快速'这一特征的放大,让 VLA 学到更稳重的动作分布。