π0.6 : a VLA That Learns From Experience(一)
文章概括
引用:
@article{
}
主页:
原文:
代码、数据和视频:
系列文章:
请在
《
《
《文章
》
》
》 专栏中查找
宇宙声明!
引用解析部分属于自我理解补充,如有错误可以评论讨论然后改正!
ABSTRACT
我们研究视觉-语言-行动(vision-language-action, VLA)模型如何在真实世界部署中通过强化学习(reinforcement learning, RL)持续提升能力。 我们提出了一种通用方法——基于优势条件策略的经验与纠正强化学习(RL with Experience and Corrections via Advantage-conditioned Policies, RECAP),该方法通过“优势条件化”(advantage conditioning)为 VLA 模型提供强化学习训练机制。我们的方法将多种异质数据整合进模型的自我改进过程,包括示教数据、按当前策略(on-policy)采集的数据,以及在自主执行过程中由专家远程操控提供的干预数据。 RECAP 首先通过离线强化学习(offline RL)预训练一个通用型 VLA 模型,我们称之为 π 0.6 ∗ π_{0.6}^{\ast} π0.6∗,随后再通过在真实机器人上采集的数据对其进行专门化,从而在下游任务上获得高性能。 我们证明,使用完整 RECAP 流程训练得到的 π 0.6 ∗ π_{0.6}^{\ast} π0.6∗ 模型,能够在真实家庭场景中叠衣服、可靠地组装纸箱,并且可以操作专业意式咖啡机制作浓缩咖啡饮品。 在部分最困难的任务上,RECAP 使任务吞吐量提高了两倍以上,并将任务失败率大致降低了一半。
I. INTRODUCTION
It’s amazing what you can learn if you’re not afraid to try.
Robert A. Heinlein, Have Space Suit–Will Travel
实践造就熟练:尽管人类在习得新技能方面极具灵活性,但要达到熟练掌握,始终离不开在反复尝试中学习。借助通用型机器人基础模型(例如视觉-语言-行动(vision-language-action, VLA)模型),我们可以通过提示灵活地为通用机器人指定任务。但就像人类一样,这些模型也需要通过练习某项技能来达到熟练水平。这意味着不仅要依赖示教数据,还要利用在部署过程中自主收集的经验数据,使策略能够纠正自身在实际执行中犯下的错误,将速度与鲁棒性提升到超出人类远程操控的水平,并适应新的部署环境。通过自主练习进行学习的基本原理,早已在强化学习(reinforcement learning, RL)[1] 的框架下被形式化,并为人所知数十年,但要在一个通用且可扩展的机器人学习系统中将这些原理真正落地,仍然面临重大挑战:例如,为大规模模型设计可扩展且稳定的 RL 方法、处理来自不同策略的异质数据,以及在真实世界中搭建带有奖励反馈的 RL 训练流程——在这种环境中,奖励信号往往是模糊的或具有随机性的。
在本文中,我们提出 RECAP,这一方法使 VLA 模型能够在整个训练流程的各个阶段——从预训练到基于自主执行数据的训练——都融入奖励反馈。RECAP 的目标,是通过一种通用的训练范式,将示教数据、自主经验与专家干预相结合,以应对上述问题。从一个通用 VLA 的训练配方出发,并在来自多种不同机器人平台的多样化数据上进行训练,RECAP 首先使用离线强化学习(offline RL)对 VLA 进行预训练,然后再利用部署过程中采集到的数据进行进一步训练。在这些部署过程中,机器人会根据每次试验的结果获得(稀疏的)奖励反馈,并可能接收来自专家的额外干预,以纠正其错误行为。训练过程遵循离线 RL [2, 3] 的套路:我们首先训练一个价值函数,用于评估朝向成功完成任务的进展程度,然后利用该价值函数来估计数据集中每个动作的优势(advantage)。通过让策略在执行时额外接收一个基于该优势量构建的“改进指示器”[4] 作为条件,我们就可以得到一个经过改进的策略。图 1 给出了 RECAP 的高层概览。
图 1:RECAP 使得可以在奖励反馈与干预信号的参与下训练 VLA 模型。 我们的系统从一个已经预训练好的、内置优势条件化机制的 VLA 模型出发,这使得模型能够高效地从真实世界经验中学习。 对于每个具体任务,我们部署该模型,并同时收集其自主执行产生的轨迹(autonomous rollouts)以及在线的人类纠错信号(online human corrections)。 随后,我们在这些在线数据上对价值函数进行微调,以提升其对“各个动作如何影响整体表现”的估计精度。 进一步地,通过在这些更新后的优势估计上对 VLA 进行微调并进行条件化,能够反过来改进策略行为。
我们可以使用 RECAP 来训练能够完成复杂任务的策略,例如叠折各类衣物、组装纸箱,或制作意式浓缩咖啡饮品。图 2 展示了其中部分任务的示例。该方法首先在一个多任务、多机器人构成的多样化数据集上,使用离线 RL 对 π 0.6 ∗ π_{0.6}^{\ast} π0.6∗ 模型进行预训练。 π 0.6 ∗ π_{0.6}^{\ast} π0.6∗ 是在 π 0.6 π_{0.6} π0.6 模型基础上针对 RL 场景进行的改造,而 π 0.6 π_{0.6} π0.6 本身是在 π 0.5 π_{0.5} π0.5 [5] 的基础上,通过采用更大的骨干网络与更加多样的条件输入 [6] 所得到的改进版本。 π 0.6 ∗ π_{0.6}^{\ast} π0.6∗ 进一步加入了“以二值化优势值为条件”的能力,从而可以利用价值函数来改进策略。 在完成对 π 0.6 ∗ π_{0.6}^{\ast} π0.6∗ 的预训练后,我们首先利用示教数据对 π 0.6 ∗ π_{0.6}^{\ast} π0.6∗ 模型在具体下游任务上进行微调,随后再通过一轮或多轮“在真实机器人上采集数据 + RL 训练”的迭代过程来进一步提升模型性能。 在某些最困难的任务上,使用 RECAP 基于自主经验训练 π 0.6 ∗ π_{0.6}^{\ast} π0.6∗,能够使任务吞吐量提高两倍以上,并将失败率降低 2 倍或更多。 这使得 π 0.6 ∗ π_{0.6}^{\ast} π0.6∗ 达到了在实践中可用的鲁棒性水平:我们曾让其连续制作意式咖啡饮品 13 小时,在一处新家庭环境中连续两小时不间断地折叠此前未见过的衣物,并为工厂中真实使用的包装流程组装纸箱。
图 2:使用 RECAP 学习到的部分任务示例。 使用 RECAP 训练的
π
0.6
∗
π^{*}_{0.6}
π0.6∗ 模型,能够以较高成功率制作意式咖啡饮品、组装纸板箱,以及叠折多种真实且多样化的衣物。 每项任务都包含高度真实的变化因素——被压扁且未展开的纸箱会黏在一起并发生弯折;制作意式咖啡饮品需要进行液体倾倒操作;而叠衣任务则要求模型能够在种类繁多的服装物品之间实现良好的泛化。
尽管 RECAP 的各个算法组件在先前工作中已有探讨,但其将这些组件进行的这种特定方式的组合是全新的;实验结果首次表明:一种融合人类奖励反馈与干预信号的通用强化学习范式,能够利用部署过程中收集到的经验,显著提升 VLA 模型在鲁棒性与任务吞吐量方面的表现。
II. 相关工作
基于模仿学习训练的策略已知会遭受误差累积问题 [7],并且其性能在最佳情况下也只能与示教数据保持一致。本工作的目标,是通过超越仅依赖离线示教的模仿学习,从而提升视觉-语言-行动(VLA)策略的可靠性和速度。已有研究利用在线干预来改进机器人操作策略 [8–11]。我们采用了一种此类干预方式,即 human-gated DAgger 方法 [10, 12]。与这些研究不同,我们的方法同时使用专家干预与完全自主经验,从而形成一个整合多数据来源的基于强化学习(RL)的框架。 大量研究通过强化学习实现机器人操作策略的自主改进 [13–21],其中包括采用基于扩散模型的策略 [22–24]、多任务场景下的方法 [25, 26],以及利用预训练多任务策略的研究 [27–29]。 区别于上述研究,我们关注如何将真实世界中的 RL 规模化应用于大型 VLA 策略,使其能够处理时间跨度长、动作精细的操作任务。
许多最新研究探讨了如何通过 RL 提升基础 VLA 模型的性能。一些研究直接将近端策略优化(PPO)及其变体应用于 VLA 微调 [30–34],但这些方法难以高效且可扩展地应用于真实世界 RL。另一类工作探索在预训练 VLA 模型之上进行 RL 微调,其中 RL 会训练一个残差策略 [35, 36]、微调动作头网络 [37]、选择或修正 VLA 产生的动作 [38–40],或在基于扩散的 VLA 的噪声空间中优化策略 [41]。部分研究还探索了如何将学习得到的行为蒸馏回 VLA,实现端到端的迭代改进 [35, 36, 38, 42]。这些先前研究通常使用离散动作或简单的高斯连续动作分布。一个关键区别在于,我们使用(迭代式)离线 RL 对整个 VLA 模型进行端到端训练,模型本身采用表达能力很强的 flow matching 结构。其关键在于我们提出了一种简单可扩展的“优势条件化策略提取”方法,从而避免在大规模 VLA 模型上直接使用策略梯度目标的复杂性。我们的实验对比显示,该方法显著优于传统的基于策略梯度的策略提取方案。
在方法上更接近 RECAP 的一些研究将价值函数与端到端 RL 训练结合,并在真实机器人上训练 VLA [43–46]。例如,Huang 等人 [43] 使用校准过的 Q-learning 在离线示教数据集上训练抓取任务策略,并未加入在线改进阶段。Zhang 等人 [44] 使用直接偏好优化(DPO),通过 VLA 的在线 rollout 以及人类偏好信号来优化抓放任务策略。Zhai 等人 [45] 和 Ghasemipour 等人 [46] 分别结合“完成时间价值函数”使用 PPO 与 REINFORCE 来训练用于移动碗、展开垫子与推动桌面物体的 VLA 策略。与这些研究不同,我们提出的是一个具有多项优势的迭代式离线 RL 框架。首先,我们的方法支持高容量的扩散式与 flow-based VLA,而不是先前研究中常见的离散动作模型。其次,我们通过优势条件化策略提取,避免了使用需要 on-policy 数据的 PPO 或 REINFORCE,而是能够利用所有先前收集的(off-policy 或 offline)数据。最后,我们的评估任务包含复杂、灵巧且时间跨度长的操作任务,包括可变形物体、液体与多阶段任务,在这些场景中,我们的方法将吞吐量提升约 2 倍。
RL(强化学习)
场景:机器人在环境里一边试、一边被打分。
每一步:
- 机器人看到状态 s s s,选动作 a a a;
- 环境给它新状态 s ′ s' s′ 和一个奖励 r r r(好就高一点)。
目标:让机器人学一个策略 π ( a ∣ s ) \pi(a|s) π(a∣s),让长期总奖励最大。
策略梯度(PPO、REINFORCE)
直接把“策略”当成一个网络,通过梯度上升让高回报的动作概率变大。
REINFORCE:最原始的版本,方差很大,样本利用效率低。
PPO:加了一堆“稳定训练”的技巧(clip 等)。 → 很常见于 RLHF 等,但问题是:
- 需要 on-policy 数据(新策略必须再去收新的数据);
- 对大模型 / 真实机器人来说,代价非常高。
Q-learning(值函数型)
学一个 Q ( s , a ) Q(s,a) Q(s,a):
- 表示“在状态 s s s 选动作 a a a,之后的长期回报有多大”。
策略可以是:
在当前 s s s 下选 Q ( s , a ) Q(s,a) Q(s,a) 最大的 a a a。
好处:
- 很容易用 off-policy 数据(旧数据也能反复用)。
Huang 等人的做法:
- 用校准好的 Q-learning,在离线示教数据上学抓取策略。
DPO(Direct Preference Optimization)
人不直接给数值奖励,而是给两个候选行为哪个更好:
- 比如:机器人做了两次抓取视频,人类说“第二个更好”。
DPO 会用这种“偏好”来优化策略:
- 让模型更喜欢被人类选中的行为。
on-policy / off-policy / offline 的区别
on-policy:
- 数据必须来自“当前正在训练的这条策略”;
- PPO、REINFORCE 这类典型需要 on-policy。
off-policy:
- 你可以用“别的策略收来的数据”;
- Q-learning、很多离线 RL 算法都能这样。
offline RL(离线强化学习):
更极端:你手上只有一个“固定的大数据集”(比如人演示 + 历史 log),训练时不再和环境交互;
特别适合真实机器人:
- 因为不停在线采样既贵又危险。
这篇文章重点就是:用一种迭代式 offline RL 方式,疯狂重复利用所有历史数据,而不是每次 PPO 都要逼你重新采样 on-policy 轨迹。
常见的“在 VLA 上用 RL”的几种套路 文章第一段列了几类方法,你可以理解成几种“加在 VLA 上的小外挂”:
1 残差策略(residual policy)
原来的 VLA 给出一个动作 a VLA a_{\text{VLA}} aVLA。
再训练一个小网络 r ϕ ( s ) r_\phi(s) rϕ(s),输出一个“修正量”。
最终动作: a = a VLA + r ϕ ( s ) a = a_{\text{VLA}} + r_\phi(s) a=aVLA+rϕ(s)。
好处:
- 不动原大模型,只在上面“微调一点”;
- RL 压力小很多。
2 微调动作头(action head)
把 VLA 分成两部分:
- 前面的大编码器(视觉+语言)→ 高维特征;
- 最后一小层输出动作(policy head)。
很多工作:
- 只用 RL 微调 动作头,
- 不动前面的巨大编码器。
3 选择 / 修正 VLA 的动作
- VLA 可能出一堆候选动作 / 轨迹;
- RL 训练的网络只负责 “选哪个 或者做小修正”;
- 依然属于“小外挂”的思想。
4 在扩散 / 噪声空间里优化
扩散模型生成动作时,其实是从“噪声”一步步去噪得到动作。
可以不直接对最终动作做 RL,而是在“噪声空间”里学一个更好的“去噪轨迹”。
这类方法还是有一个共同问题:
- 要写 RL 算法贴到扩散 / VLA 上,
- 但结构还是偏“局部微调”,大模型本身没有完全端到端重塑。
他们的方法的核心:flow-based VLA + 优势条件化策略提取
1 flow matching / flow-based VLA 是什么感觉?
跟扩散模型类似,都是一种 生成模型,
- 用一个连续时间的流(flow)把一个简单分布(高斯噪声)“变形”到复杂分布(动作轨迹)。
优点:
- 表达能力很强;
- 对轨迹建模、长时控制更灵活。
你可以先把它当成“比高斯策略复杂很多的动作分布模型”。
2 为什么不能直接在这么大的 VLA 上用 PPO?
PPO / REINFORCE 有几个大坑:
- 要求 on-policy:每次更新都要实机收新数据,很伤成本、安全性、时间。
- 大模型梯度更新本身就重,再加 PPO 的复杂损失,训练成本更爆炸。
- 方差大、调参难,在真实机器人上的稳定性堪忧。
特别是:
- 当你的策略本身是“flow-based 超大模型”,
- 直接 PPO 等于是:对一个条件 flow 模型做策略梯度优化,
- 算法复杂度、实现难度、调参难度都上天。
3 他们的“优势条件化策略提取”(Advantage-Conditioned Policy Extraction)是什么想法?
文章没给公式,但可以用类比来理解:
他们用 RL 算法,先学一个 价值函数 / 优势函数 A ( s , a ) A(s,a) A(s,a):
- A ( s , a ) A(s,a) A(s,a) 表示:“在状态 s s s 下做动作 a a a,比平均水平好多少”。
然后,他们不再用 PPO 去直接更新策略, 而是搞一个 类似监督学习 / 行为克隆的过程:
从经验数据里抽 ( s , a ) (s,a) (s,a);
用 A ( s , a ) A(s,a) A(s,a) 当“权重 / 条件”,训练一个新策略 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s):
- 比如,“优势越大,越要让策略模仿它”;
- 或者“把优势作为额外的输入 / 条件,让策略学会偏向高优势行为”。
所以叫“优势条件化策略提取”:
- 不是直接对策略做 RL 梯度,
- 而是先用 RL 估计哪个动作好,再用一个简单、稳定的训练目标让大模型学会偏向那些好的动作。
关键优点:
可以把大模型当成“高级的条件生成器”, 用的是类似“加权行为克隆 / 监督学习”的训练方式;
这个训练方式:
- 对 GPU 很友好;
- 容易扩展到大 batch、大模型;
- 不需要 on-policy 约束,所有 off-policy / offline 数据都能重用。
这就是他们强调的:
“关键在于我们提出了一种简单可扩展的‘优势条件化策略提取’方法,从而避免在大规模 VLA 模型上直接使用策略梯度目标的复杂性。”
“迭代式离线 RL 框架”是个怎样的流程? 可以想象一个循环:
收集数据
- 用当前的 VLA 去执行任务(可能有人工示教、也可能有自我探索),
- 把所有 ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s′) 存起来。
离线 RL 估值
- 在这堆数据上做 RL(不用再动机器人),
- 学一个价值函数 V V V 或 Q Q Q,再算出优势 A ( s , a ) A(s,a) A(s,a)。
优势条件化策略提取
- 用这些带优势信息的数据,
- 训练一个新的 flow-based VLA(或更新参数),
- 训练方式类似“加权行为克隆”,所以稳定且易扩展。
更新策略后再去收集新数据
- 新策略可能更强 → 可以探索到更高回报的数据;
- 回到步骤 1,反复迭代。
所以叫 “迭代式离线 RL”: 每一轮利用“已经收集的数据”做一大轮离线训练,然后再出门采一点新的高质量数据,继续迭代。
第二段里提到的那些工作,与 RECAP 的区别
工作 用的 RL 方式 数据 / 交互方式 模型类型 Huang 等人 [43] 校准 Q-learning 纯离线示教(不再在线改进) 某种抓取策略(没说是大 flow) Zhang 等人 [44] DPO(人类偏好优化) 在线 rollout + 人类偏好 VLA,用于抓-放任务 Zhai 等人 [45] PPO + 完成时间价值函数 on-policy,训练 VLA 做移动碗、展开垫子、推物体 Ghasemipour [46] REINFORCE + 完成时间价值函数 on-policy 类似的桌面任务 他们(RECAP) 优势条件化策略提取 + 离线 RL 迭代式离线,复用所有旧数据 高容量扩散 / flow-based VLA,长、难、灵巧任务 他们强调的三点差异:
支持更强、更复杂的 VLA(扩散 / flow-based) 不是只在“离散动作小网络”上玩。
不需要 PPO / REINFORCE on-policy
- 通过优势条件化,让训练变成“像行为克隆一样的大规模离线训练”,
- 所有 off-policy / offline 数据都能吃干抹净。
实验任务更难、吞吐量更高
- 可变形物体(布、垫子)、液体、多阶段长任务;
- 在这些场景里,他们的方法可以把 任务吞吐量提升约 2 倍。
问题背景
- 大家想用 RL 让 VLA 更强。
已有做法 1:PPO 直接微调 VLA
- 简单粗暴,但在真实世界不可扩展。
已有做法 2:在 VLA 上加“小补丁”(残差、动作头、动作选择、噪声空间 RL),偶尔还把结果蒸馏回 VLA
- 大部分使用离散或简单高斯动作。
他们的不同点(第一段小结)
- 用 flow-based VLA;
- 用迭代式离线 RL;
- 用优势条件化策略提取,避免直接策略梯度。
已有做法 3:和 RECAP 更相似的一些真实机器人工作
- 都是“价值函数 + 端到端 RL”,如 Q-learning、DPO、PPO、REINFORCE。
他们的方法(第二段小结)
- 迭代式离线 RL;
- 支持高容量扩散 / flow-based VLA;
- 用优势条件化策略提取 → 不需要 on-policy PPO / REINFORCE;
- 在复杂长时任务里吞吐量提升约 2 倍。
先前的研究探讨了在策略输入中加入奖励、价值与优势条件的方法 [47–56],包括使用 classifier-free guidance [4] 的方法。我们进一步将这一思路扩展到大规模通用 VLA 策略 [5] 的预训练与微调中,并整合示教、干预与自主 rollout 等多类数据来学习真实的机器人操作任务。近期研究也考察了如何有效训练多任务、语言条件化的奖励函数 [57–63] 与价值函数 [45, 64, 65]。在这些工作的基础上,我们训练了一个语言条件化的分布式价值函数,使我们能够为优势条件化的 VLA 训练框架估计状态-动作优势。
III. 预备知识
强化学习(Reinforcement learning)。
我们考虑标准的强化学习设定:智能体由策略
π
(
a
t
∣
o
t
)
\pi(\text{a}_t|\text{o}_t)
π(at∣ot) 给出,在观测
o
t
∈
O
\text{o}_t\in\mathcal{O}
ot∈O 的条件下选择动作
a
t
\text{a}_t
at。 我们将轨迹定义为
τ
=
(
o
0
,
a
0
,
⋯
,
o
T
)
∈
O
×
A
⋯
O
\tau=(\text{o}_0,\text{a}_0,\cdots,\text{o}_T)\in\mathcal{O}\times\mathcal{A}\cdots\mathcal{O}
τ=(o0,a0,⋯,oT)∈O×A⋯O 。 由策略
π
(
a
t
∣
o
t
)
\pi(\text{a}_t|\text{o}_t)
π(at∣ot) 与随机动力学
p
(
o
t
+
1
∣
o
t
,
a
t
)
p(\text{o}_{t+1}|\text{o}_t,\text{a}_t)
p(ot+1∣ot,at) 共同诱导出的轨迹分布
ρ
π
(
τ
)
\rho_\pi(\tau)
ρπ(τ) 为:
ρ π ( τ ) = p ( o 0 ) ∏ t = 0 T − 1 π ( a t ∣ o t ) p ( o t + 1 ∣ o t , a t ) . \rho_\pi(\tau)=p(\text{o}_0)\prod_{t=0}^{T-1}\pi(\text{a}_t|\text{o}_t)p(\text{o}_{t+1}|\text{o}_t,\text{a}_t). ρπ(τ)=p(o0)t=0∏T−1π(at∣ot)p(ot+1∣ot,at).
(为简化起见,我们假设观测值 o t \text{o}_{t} ot 构成一个有效的马尔可夫状态。虽然这并非普遍成立,但在机器人强化学习中是一种常见的简化方法。)
τ = ( o 0 , a 0 , o 1 , a 1 , ⋯ , o T ) . \tau=(\text{o}_0,\text{a}_0,\text{o}_1,\text{a}_1,\cdots,\text{o}_T). τ=(o0,a0,o1,a1,⋯,oT). “从开局,到任务结束,机器人看到的所有东西 + 做过的所有动作”的时间序列。
ρ π ( τ ) = p ( o 0 ) ∏ t = 0 T − 1 π ( a t ∣ o t ) p ( o t + 1 ∣ o t , a t ) . \rho_\pi(\tau)=p(\text{o}_0)\prod_{t=0}^{T-1}\pi(\text{a}_t|\text{o}_t)p(\text{o}_{t+1}|\text{o}_t,\text{a}_t). ρπ(τ)=p(o0)t=0∏T−1π(at∣ot)p(ot+1∣ot,at).
- 要产生一条轨迹,需要三类“掷骰子”:
- 初始观测:用 p ( o 0 ) p(\text{o}_0) p(o0) 掷一次骰子,得到起始 o 0 \text{o}_0 o0;
- 策略选动作:每一步用 π ( a t ∣ o t ) \pi(\text{a}_t|\text{o}_t) π(at∣ot) 掷骰子,选出 a t \text{a}_t at;
- 环境演化:用 p ( o t + 1 ∣ o t , a t ) p(\text{o}_{t+1}|\text{o}_t,\text{a}_t) p(ot+1∣ot,at) 掷骰子,得到下一步 o t + 1 \text{o}_{t+1} ot+1。
把整个过程展开乘起来,就得到一条具体轨迹 τ \tau τ 出现的概率——这就是 ρ π ( τ ) \rho_\pi(\tau) ρπ(τ)。
直观理解: ρ π ( τ ) \rho_\pi(\tau) ρπ(τ) = “在策略 π \pi π 控制下,恰好走出这条轨迹 τ \tau τ 的概率”。
奖励函数写作 r ( o t , a t ) r(\text{o}_t,\text{a}_t) r(ot,at) ,为简化记号,我们将其记为 r t r_t rt,其中 r T r_T rT为终止奖励。我们可以将折扣累计奖励(也称为回报)定义为 R ( τ ) = ∑ t = 0 T r t R(\tau)=\sum_{t=0}^T r_t R(τ)=∑t=0Trt (本文中未显式使用折扣因子,但如果需要可以很容易加上)。 强化学习的目标是最大化累计奖励(回报),即学习一个使下式最大化的策略:
J ( π ) = E τ ∼ ρ π [ R ( τ ) ] = E τ ∼ ρ π [ ∑ t = 0 T r t ] . \mathcal{J}(\pi)=\mathbb{E}_{\tau\sim\rho_\pi}[R(\tau)]=\mathbb{E}_{\tau\sim\rho_\pi}\Big[\sum_{t=0}^T r_t\Big]. J(π)=Eτ∼ρπ[R(τ)]=Eτ∼ρπ[t=0∑Trt].
“在策略 π \pi π 产生的轨迹分布下,回报的期望值”。
RL 的目标就是:找一个策略 π \pi π,让 J ( π ) \mathcal{J}(\pi) J(π) 尽可能大。
策略 π \pi π 对应的价值函数定义为: V π ( o t ) = E τ t + 1 : T [ ∑ t = t T r t ] V^\pi(\text{o}_t)=\mathbb{E}_{\tau_{t+1:T}}\big[\sum_{t=t}^T r_{t}\big] Vπ(ot)=Eτt+1:T[∑t=tTrt]。 于是,我们可以为某个动作 a t \text{a}_t at 定义其优势函数为:
A π ( o t , a t ) = E ρ π ( τ ) [ ∑ t ′ = t t + N − 1 r t ′ + V π ( o t + N ) ] − V π ( o t ) , A^\pi(\text{o}_t,\text{a}_t)=\mathbb{E}_{\rho_\pi(\tau)}\Big[\sum_{t'=t}^{t+N-1}r_{t'}+V^\pi(\text{o}_{t+N})\Big]-V^\pi(\text{o}_t), Aπ(ot,at)=Eρπ(τ)[t′=t∑t+N−1rt′+Vπ(ot+N)]−Vπ(ot),
这对应于一个 n n n 步( N N N步)优势估计。
价值函数 & 优势函数:它们到底表达什么?
1 价值函数 V π ( o t ) V^\pi(\text{o}_t) Vπ(ot)
V π ( o t ) = E τ t + 1 : T [ ∑ t = t T r t ] V^\pi(\text{o}_t)=\mathbb{E}_{\tau_{t+1:T}}\big[\sum_{t=t}^T r_{t}\big] Vπ(ot)=Eτt+1:T[t=t∑Trt]直觉:
- 从时间 t t t 开始,当前观测是 o t \text{o}_t ot,之后如果一直按照策略 π \pi π 行动,
- 那从现在到结束,总共还期望能拿到多少奖励?
- 这个期望就是 V π ( o t ) V^\pi(\text{o}_t) Vπ(ot)。
你可以想成:“在位置 o t \text{o}_t ot 上,这条路未来的‘预期总收益’”。
2 优势函数 A π ( o t , a t ) A^\pi(\text{o}_t,\text{a}_t) Aπ(ot,at)他们定义了一个 N N N 步的优势估计:
A π ( o t , a t ) = E ρ π ( τ ) [ ∑ t ′ = t t + N − 1 r t ′ + V π ( o t + N ) ] − V π ( o t ) , A^\pi(\text{o}_t,\text{a}_t)=\mathbb{E}_{\rho_\pi(\tau)}\Big[\sum_{t'=t}^{t+N-1}r_{t'}+V^\pi(\text{o}_{t+N})\Big]-V^\pi(\text{o}_t), Aπ(ot,at)=Eρπ(τ)[t′=t∑t+N−1rt′+Vπ(ot+N)]−Vπ(ot),
拆开看:
- ∑ t ′ = t t + N − 1 r t ′ \sum_{t'=t}^{t+N-1}r_{t'} ∑t′=tt+N−1rt′:从当前这一步开始,先看接下来 N N N 步的奖励;
- V π ( o t + N ) V^\pi(\text{o}_{t+N}) Vπ(ot+N):从第 t + N t+N t+N 步开始往后,按照价值函数 V π V^\pi Vπ 估计未来奖励;
- 把这两部分加起来,就是“从现在起做动作 a t \text{a}_t at,然后之后按策略走下去,整个未来预期回报”;
- 再减去 V π ( o t ) V^\pi(\text{o}_t) Vπ(ot)(不考虑具体动作时的平均价值),就得到“相对平均水平,这个动作到底好多少”。
所以 A π ( o t , a t ) A^\pi(\text{o}_t,\text{a}_t) Aπ(ot,at) 的直观含义:
在当前状态 o t \text{o}_t ot 下,执行动作 a t \text{a}_t at,比“这个状态的平均水平”大概好多少或差多少。
- A A A 正 → 说明这个动作比平均好;
- A A A 负 → 说明这个动作比平均差。
这就是后面“优势条件化”的核心:用 A A A 来区分好动作和坏动作。
时间轴: t t+1 t+2 ... t+N-1 t+N 之后
|-------------|-------------|--------------|-------------|--------------|--------------→
动作: 固定 a_t π 采样 a_{t+1} π 采样 a_{t+2} ... π 采样 a_{t+N-1} (不采样由V预测)
↑
|——— 这个动作是 “A(o_t, a_t)” 里给定的固定动作
奖励: r_t r_{t+1} r_{t+2} ... r_{t+N-1}
└───────────────────────────────┬──────────────────────────────┘
│
前 N 步真实奖励(真实经历 sample 的部分)
未来奖励估计: V(o_{t+N})
↑
从这里开始,不再滚动环境,
全部由价值函数 V 预测未来回报
─────────────────────────────────────────────────────────────────────────────────────────────→
N-step Q 估计:
Q_N(o_t, a_t) = r_t + r_{t+1} + ... + r_{t+N-1} + V(o_{t+N})
优势函数:
A(o_t, a_t) = Q_N(o_t, a_t) − V(o_t)
正则化强化学习。
为什么只最大化奖励不够?
如果你只贪心地最大化 J ( π ) \mathcal{J}(\pi) J(π):
- 策略可能剧烈变化(梯度一步步走偏);
- 在固定数据上做多步更新,可能会变得离数据分布很远(严重 distribution shift);
- 特别是离线 / off-policy 场景:数据是老策略收集的,如果新策略离老策略太远,值函数估计会很不靠谱(严重过估计)。
所以人们通常会:
同时最大化奖励 + 限制策略不要离一个“参考策略”太远。
这个参考策略 π ref \pi_{\text{ref}} πref 通常是:
- 收集数据的行为策略(behavior policy);
- 或者上一次迭代的策略。
在强化学习中,除了直接最大化 J ( π ) \mathcal{J}(\pi) J(π) 之外,还常常使用正则化方法:在最大化奖励的同时约束策略与某个参考策略 π ref \pi_{\text{ref}} πref 保持接近 [66–70]。 例如,当我们希望在同一批数据上进行多步梯度更新时,这一点尤为重要——此时 π ref \pi_{\text{ref}} πref 通常对应于采集训练数据的行为策略。 这一思想可以通过如下目标形式化:
J ( π , π ref ) = E τ ∼ ρ π θ [ ∑ t = 0 T γ t r t ] − β E o ∼ ρ π θ [ D ( π ( ⋅ ∣ o ) ∥ π ref ( ⋅ ∣ o ) ) ] , \mathcal{J}(\pi,\pi_{\text{ref}})=\mathbb{E}_{\tau\sim\rho_{\pi_\theta}}\Big[\sum_{t=0}^T\gamma^t r_t\Big]-\beta\mathbb{E}_{o\sim\rho_{\pi_\theta}}\big[D(\pi(\cdot|\text{o})\Vert\pi_{\text{ref}}(\cdot|\text{o}))\big], J(π,πref)=Eτ∼ρπθ[t=0∑Tγtrt]−βEo∼ρπθ[D(π(⋅∣o)∥πref(⋅∣o))],
其中 D D D 表示某种散度度量。
两部分:
第一项:还是“折扣回报”的期望(这里写了 γ t \gamma^t γt);
第二项:惩罚策略和参考策略的差异:
- D ( π ( ⋅ ∣ o ) ∥ π ref ( ⋅ ∣ o ) ) D(\pi(\cdot|\text{o})\Vert\pi_{\text{ref}}(\cdot|\text{o})) D(π(⋅∣o)∥πref(⋅∣o)) 是某种散度(距离度量);
- β > 0 \beta>0 β>0 控制“你有多怕离参考策略太远”。
你可以想象为:
一边奖励你完成任务(拿高回报),一边惩罚你偏离老策略太多。
这样训练会更稳定,特别是在利用固定数据集或者做多轮更新时。
当 D D D 取为KL散度时,我们有一个著名结论: π ^ ( a ∣ o ) ∝ π ref ( a ∣ o ) exp ( A π ref ( o , a ) / β ) \hat\pi(\text{a}|\text{o})\propto\pi_{\text{ref}}(\text{a}|\text{o})\exp(A^{\pi_{\text{ref}}}(\text{o},\text{a})/\beta) π^(a∣o)∝πref(a∣o)exp(Aπref(o,a)/β) 是 max π J ( π , π ref ) \max_\pi J(\pi,\pi_{\text{ref}}) maxπJ(π,πref) 的解,其中 β \beta β 是拉格朗日乘子 [67–70]。
解读这条式子:
- 先看 π ref ( a ∣ o ) \pi_{\text{ref}}(\text{a}|\text{o}) πref(a∣o):
→ 新策略的基础仍然是“参考策略”;- 再乘上 exp ( A π ref ( o , a ) / β ) \exp(A^{\pi_{\text{ref}}}(\text{o},\text{a})/\beta) exp(Aπref(o,a)/β):
→ 优势 A A A 越大(比平均好越多),指数就越大,新策略就更偏向这个动作;最后再除以一个归一化常数(式子里没写,即“ ∝ \propto ∝”),保证对所有动作求和为 1。
所以这就是一个“用优势重新加权参考策略”的配方:
新策略 = “原来你爱怎么做” × “根据优势的指数加权”。
我们的优势条件化策略提取方法基于一个与此密切相关、但较少为人所知的结果: 如果我们将策略定义为 π ^ ( a ∣ o ) ∝ π ref ( a ∣ o ) p ( I ∣ A π ref ( o , a ) ) β \hat\pi(\text{a}|\text{o})\propto\pi_{\text{ref}}(\text{a}|\text{o})p(I|A^{\pi_{\text{ref}}}(\text{o},\text{a}))^\beta π^(a∣o)∝πref(a∣o)p(I∣Aπref(o,a))β ,
其中
p ( I ∣ A π ref ( o , a ) ) = g ( A π ref ( o , a ) ) ∫ g ( A π ref ( o , a ′ ) ) da ′ p(I|A^{\pi_{\text{ref}}}(\text{o},\text{a}))=\frac{g(A^{\pi_{\text{ref}}}(\text{o},\text{a}))}{\int g(A^{\pi_{\text{ref}}}(\text{o},\text{a}')) \text{da}'} p(I∣Aπref(o,a))=∫g(Aπref(o,a′))da′g(Aπref(o,a))
p ( I ∣ A π ref ( o , a ) ) p(I|A^{\pi_{\text{ref}}}(\text{o},\text{a})) p(I∣Aπref(o,a)) 表示动作 a \text{a} a 相对于参考策略 π ref \pi_{\text{ref}} πref “带来改进”的概率,该概率由单调递增函数 g g g 刻画得到, 那么 π ^ \hat\pi π^ 保证在性能上优于 π ref \pi_{\text{ref}} πref ,即 J ( π ^ ) ≥ J ( π ref ) \mathcal{J}(\hat\pi)\ge \mathcal{J}(\pi_{\text{ref}}) J(π^)≥J(πref) [4, 71]。
其中:
- I I I 表示一个事件:“这一步动作是对参考策略的一个改进(Improvement)”;
- A π ref ( o , a ) A^{\pi_{\text{ref}}}(\text{o},\text{a}) Aπref(o,a) 是这个动作相对于参考策略的优势;
- g g g 是一个单调递增函数(优势越大, g g g 越大);
- 分母是归一化常数,保证对所有动作积分为 1。
所以 p ( I ∣ A ) p(I|A) p(I∣A) 可以理解成:
在状态 o \text{o} o 下,对某个动作 a \text{a} a, 根据它的优势 A π ref ( o , a ) A^{\pi_{\text{ref}}}(\text{o},\text{a}) Aπref(o,a), 算出“这动作很可能是个改进”的概率。
比如直觉上可以选:
- g ( A ) = exp ( λ A ) g(A)=\exp(\lambda A) g(A)=exp(λA);
- 或者 g ( A ) = max ( A , 0 ) g(A)=\max(A,0) g(A)=max(A,0)(只数优势为正的)等等。
他们提出的策略形式是:
π ^ ( a ∣ o ) ∝ π ref ( a ∣ o ) p ( I ∣ A π ref ( o , a ) ) β \hat\pi(\text{a}|\text{o})\propto\pi_{\text{ref}}(\text{a}|\text{o})p(I|A^{\pi_{\text{ref}}}(\text{o},\text{a}))^\beta π^(a∣o)∝πref(a∣o)p(I∣Aπref(o,a))β
跟刚才那个 exp ( A / β ) \exp(A/\beta) exp(A/β) 非常像,只不过现在是用“改进概率的 β \beta β 次方”来加权。
含义:
- 仍然从参考策略 π ref \pi_{\text{ref}} πref 出发;
- 如果 p ( I ∣ ⋅ ) p(I|\cdot) p(I∣⋅) 大,也就是优势高、看起来更可能带来改进,就会被放大;
- β \beta β 控制“放大的力度”。
直觉翻译:
新策略就是: “在参考策略基础上,更偏向那些更有可能是改进行为的动作”。
我们将在第 IV-B 节中利用这一性质推导我们的策略提取方法。 基于上述定义,我们可以通过求解以下最小化问题,从 π ^ \hat\pi π^ 的闭式形式中得到一个参数化策略:
min θ E s ∼ ρ π ref [ K L ( π ^ , π θ ) ] . \min_\theta \mathbb{E}_{s\sim\rho_{\pi_{\text{ref}}}}[{KL}(\hat\pi,\pi_\theta)]. θminEs∼ρπref[KL(π^,πθ)].
上面的 π ^ \hat{\pi} π^ 是一个“理想策略”,通常是一个分布的闭式形式,未必直接就是你的神经网络结构。 他们接下来做的是:
用一个参数化策略 π θ \pi_\theta πθ 去拟合 π ^ \hat{\pi} π^。让神经网络 π θ \pi_\theta πθ 模仿 π ^ \hat{\pi} π^。
办法是:在参考策略所覆盖的状态分布下,最小化 KL 散度:
min θ E s ∼ ρ π ref [ KL ( π ^ ( ⋅ ∣ s ) ∥ π θ ( ⋅ ∣ s ) ) ] . \min_\theta \mathbb{E}_{s\sim\rho_{\pi_{\text{ref}}}} \big[ \text{KL}(\hat\pi(\cdot|s) \Vert \pi_\theta(\cdot|s)) \big]. θminEs∼ρπref[KL(π^(⋅∣s)∥πθ(⋅∣s))].
解释一下各部分:
- π θ ( ⋅ ∣ s ) \pi_\theta(\cdot|s) πθ(⋅∣s): 这是你要训练的神经网络策略(在他们文章里就是“大号的 flow-based VLA 模型”);
- π ^ ( ⋅ ∣ s ) \hat{\pi}(\cdot|s) π^(⋅∣s): 是刚才通过“参考策略 + 优势 + g g g”构造出来的“理论最优分布”;
- KL ( π ^ ∥ π θ ) \text{KL}(\hat\pi\Vert\pi_\theta) KL(π^∥πθ): 衡量在这个状态 s s s 下,“理想分布 π ^ \hat{\pi} π^” 和 “实际策略 π θ \pi_\theta πθ” 的差距;
- E s ∼ ρ π ref \mathbb{E}_{s\sim\rho_{\pi_{\text{ref}}}} Es∼ρπref: 在参考策略走出来的状态分布上取平均(也就是你数据集中出现过的状态)。
这就是一个监督学习 / 蒸馏问题:
已经知道一个“教师分布” π ^ \hat{\pi} π^, 现在训练一个“学生网络” π θ \pi_\theta πθ 去模仿它。
从结构上看:
- RL 部分:用参考策略 π ref \pi_{\text{ref}} πref + 数据 + 价值函数,算出优势 A A A,构造出一个“理论上更好的策略” π ^ \hat{\pi} π^;
- 策略提取部分:解 min θ E [ KL ( π ^ ∣ ∣ π θ ) ] \min_\theta\mathbb{E}[\text{KL}(\hat\pi||\pi_\theta)] minθE[KL(π^∣∣πθ)], 相当于:用行为克隆 / cross-entropy 把这个 π ^ \hat{\pi} π^ “抽成”一个大模型策略。
这就是他们叫的“策略提取(policy extraction)”—— 在这篇文章里是“优势条件化策略提取”。
IV. 通过优势条件化策略进行经验与纠正强化学习(RECAP) RL WITH EXPERIENCE AND CORRECTIONS VIA ADVANTAGE-CONDITIONED POLICIES (RECAP)
我们的方法包含以下步骤,可以重复执行一次或多次,以改进基础的 VLA 模型:
1)数据采集。
我们让 VLA 执行任务,并为每个 episode 标注任务结果标签(用于决定奖励),同时可选择性地提供人类干预,以展示对早期错误的纠正示例。
2)价值函数训练。
我们使用迄今为止采集的所有数据来训练一个大型多任务价值函数,我们称之为
V
π
ref
V^{\pi_{\text{ref}}}
Vπref,它能够识别失败并判断完成任务所需的期望时间。
3)优势条件化训练。
为了利用该价值函数改进 VLA 策略,我们在 VLA 的 prefix 输入中加入一个基于该价值函数所导出的优势(advantage)值构造的“最优性指示器”。 这种“优势条件化”配方提供了一种简单且有效的方法,使我们能够利用并非最优的数据,从价值函数中提取更优的策略。
图 1 展示了整个训练流程的总体结构,而图 3 则给出了价值函数与策略架构的详细内容。我们的预训练阶段通过在整个预训练数据集上执行步骤(2)和(3)来进行,该数据集包含来自众多任务与多种不同机器人、超过数万小时的示教数据。随后,我们再执行步骤(1)、(2)与(3)一次或多次,以利用自主采集的数据进一步改进 VLA。我们将在下文描述价值函数训练与策略训练的具体步骤,并将在第 V 节介绍如何将该方法具体应用于训练 π 0.6 ∗ π_{0.6}^* π0.6∗。
图 1:RECAP 使得可以在奖励反馈与干预信号的参与下训练 VLA 模型。 我们的系统从一个已经预训练好的、内置优势条件化机制的 VLA 模型出发,这使得模型能够高效地从真实世界经验中学习。 对于每个具体任务,我们部署该模型,并同时收集其自主执行产生的轨迹(autonomous rollouts)以及在线的人类纠错信号(online human corrections)。 随后,我们在这些在线数据上对价值函数进行微调,以提升其对“各个动作如何影响整体表现”的估计精度。 进一步地,通过在这些更新后的优势估计上对 VLA 进行微调并进行条件化,能够反过来改进策略行为。
图 3:在 RECAP 训练过程中,
π
0.6
∗
π_{0.6}^*
π0.6∗ VLA 与价值函数之间的交互。
π
0.6
∗
π_{0.6}^*
π0.6∗ VLA 使用一个预训练的 VLM 主干网络(backbone)。 训练遵循 KI 配方(KI recipe)[73]:在预训练阶段使用多数据源进行下一 token 预测(next-token prediction),并采用“带停止梯度的 flow-matching 动作专家(action-expert)”。 VLA 以一个“二值化的优势指示器”(binarized advantage indicator)作为条件,该指示器来自一个独立的价值函数,该价值函数由一个预训练但更小的 VLM 模型初始化得到。
A. 分布式价值函数训练
这一小节其实就是在回答一个问题:
“我们怎么训练一个通用的、靠谱的价值函数 V V V,用来给很多不同任务当‘评论家(critic)’?”
它讲的是价值函数模块本身的模型结构和训练方法,跟你前面学的“优势条件化策略提取”是配套的: 先有一个靠谱的价值函数 V π ref V^{\pi_{\text{ref}}} Vπref,才能算出优势 A π ref A^{\pi_{\text{ref}}} Aπref,再去构造 π ^ \hat\pi π^、再蒸馏到 π θ \pi_\theta πθ。
为了训练一个在预训练或后训练阶段中对任何任务都能作为可靠“评论者(critic)”的价值函数, 我们将 V π ref V^{\pi_{\text{ref}}} Vπref 表示为一个多任务的分布式价值函数 p ϕ ( V ∣ o t , ℓ ) ∈ Δ B p_\phi(V \mid \text{o}_t,\ell)\in\Delta_B pϕ(V∣ot,ℓ)∈ΔB [72], 将观测 o t \text{o}_t ot 和语言指令 ℓ \ell ℓ 映射为一个关于 B B B 个离散价值桶(value bins)的分布。
目标:
他们想要一个“通用价值函数”,能在:
- 预训练阶段(人类示教数据)
- 后面 RL 迭代阶段(机器人自己练出来的数据)
都当一个可靠的 critic(评论家):看到当前观测 o t \text{o}_t ot 和指令 ℓ \ell ℓ,就能判断“从现在开始大概还能拿多少回报”。
不是输出一个标量,而是“分布式价值函数”:
他们不是让网络直接输出一个实数 V ( o t , ℓ ) V(\text{o}_t,\ell) V(ot,ℓ),
而是输出一个概率分布:
p ϕ ( V ∣ o t , ℓ ) ∈ Δ B p_\phi(V \mid \text{o}_t,\ell)\in\Delta_B pϕ(V∣ot,ℓ)∈ΔBΔ B \Delta_B ΔB 表示“在 B B B 个离散桶上的概率分布的空间”(概率 simplex):
- 有 B B B 个值桶 b = 1 , … , B b=1,\dots,B b=1,…,B;
- 对每个 b b b 都有 p ϕ ( V = b ∣ o t , ℓ ) p_\phi(V=b\mid \text{o}_t,\ell) pϕ(V=b∣ot,ℓ);
- 并且这些概率加起来等于 1。
翻译:
对于每个 ( o t , ℓ ) (\text{o}_t,\ell) (ot,ℓ),这个价值网络不是说“我觉得回报是 5.3”, 而是说“我觉得回报落在第 1 个区间的概率多少、第 2 个区间的概率多少、……、第 B 个区间的概率多少”。
这就是所谓“分布式价值函数(distributional value function)”: 不只估计期望价值,还估计价值的分布。
多任务(multi-task)的含义:
这里“任务”由语言指令 ℓ \ell ℓ 来区分:
- “把杯子放到盘子里”、
- “把毛巾展开”、
- “把碗推到边缘”等等;
一个网络 p ϕ ( V ∣ o t , ℓ ) p_\phi(V\mid \text{o}_t,\ell) pϕ(V∣ot,ℓ) 负责所有任务。
意思就是:
同一个 critic,输入不同的指令,就在不同任务上给评分。
在我们的实现中,该价值函数使用与 VLA 策略相同的架构,但采用了一个更小规模的 VLM 主干网络。
结构上:
整个价值网络的结构和 VLA 策略网络很像:
同样都是“视觉 + 语言 → 通用特征 → 输出头”这种结构;只是:
- VLA 策略是“输出动作”;
- 价值网络是“输出价值分布(B 维向量)”。
主干(backbone)上:
使用的是一个较小的 VLM(Vision-Language Model)主干;
也就是说,价值网络的容量比完整 VLA 策略更小一点:
- 省算力;
- 训练更轻。
可以理解为:
策略网络是“超大号 VLA 大脑”, 价值网络是“同一架构的小号版本”,专门用来打分。
用 R t ( τ ) = ∑ t ′ = t T r t ′ R_t(\tau)=\sum_{t'=t}^T r_{t'} Rt(τ)=∑t′=tTrt′ 表示轨迹 τ \tau τ 从时间步 t t t 开始直到结束的经验回报, 我们首先将经验回报 R t ( τ ) R_t(\tau) Rt(τ) 离散化为 B = 201 B=201 B=201 个区间(用 R t B R_t^B RtB 表示离散化后的回报),再用其训练 p ϕ ( V ∣ o t , ℓ ) p_\phi(V \mid \text{o}_t,\ell) pϕ(V∣ot,ℓ), 随后对当前数据集 D \mathcal{D} D 中的所有轨迹,最小化如下交叉熵 H H H:
min ϕ E τ ∈ D [ ∑ o t ∈ τ H ( R t B ( τ ) , p ϕ ( V ∣ o t , ℓ ) ) ] . (1) \min_\phi \mathbb{E}_{\tau\in D}\Bigg[\sum_{\text{o}_{t}{\in\tau}} H\big(R_t^B(\tau), p_\phi(V \mid \text{o}_t,\ell)\big)\Bigg].\tag{1} ϕminEτ∈D[ot∈τ∑H(RtB(τ),pϕ(V∣ot,ℓ))].(1)
这相当于对由数据集 D \mathcal{D} D 所体现的策略(即行为策略 π ref \pi_{\text{ref}} πref)的价值函数的一种蒙特卡洛估计。
- 对一条轨迹 τ \tau τ,在时间 t t t 时刻往后看: R t ( τ ) = r t + r t + 1 + ⋯ + r T R_t(\tau)=r_t+r_{t+1}+\cdots+r_T Rt(τ)=rt+rt+1+⋯+rT
非常重要: 这是蒙特卡洛(Monte Carlo) 的真实回报,因为它是根据整条轨迹真实拿到的奖励算出来的,没有用 bootstrapping。
我们首先将经验回报 R t ( τ ) R_t(\tau) Rt(τ) 离散化为 B = 201 B=201 B=201 个区间(用 R t B R_t^B RtB 表示离散化后的回报),再用其训练 p ϕ ( V ∣ o t , ℓ ) p_\phi(V \mid \text{o}_t,\ell) pϕ(V∣ot,ℓ)。
他们选择 B = 201 B=201 B=201 个“价值桶”:
可以想象比如把回报范围分成 201 个小格子,比如:
- 从 -100 到 100,每 1 一个格子;
- 或其它均匀 / 非均匀划分——文章没细写,但你可以这样理解。
对于每个 R t ( τ ) R_t(\tau) Rt(τ),
看它落在哪个区间;
然后把它转成一个one-hot / 稀疏标签 R t B ( τ ) R_t^B(\tau) RtB(τ):
- 例如:如果 R t ( τ ) R_t(\tau) Rt(τ) 在第 37 个区间,就让 R t B ( τ ) R_t^B(\tau) RtB(τ) 是一个 201 维向量,在维度 37 为 1,其它为 0。
所以:
R t B ( τ ) R_t^B(\tau) RtB(τ) 是“经验回报 discretization”出来的一个离散标签,用来监督价值分布网络。
数据集 D \mathcal{D} D:
- 包含了很多轨迹 τ \tau τ(示教或者策略执行记录);
对每条轨迹 τ \tau τ:
对轨迹中的每一个时间步 t t t,拿一个样本:
- 输入: ( o t , ℓ ) (\text{o}_t,\ell) (ot,ℓ);
- 标签: R t B ( τ ) R_t^B(\tau) RtB(τ);
- 模型输出: p ϕ ( V ∣ o t , ℓ ) p_\phi(V\mid\text{o}_t,\ell) pϕ(V∣ot,ℓ);
损失 H ( ⋅ , ⋅ ) H(\cdot,\cdot) H(⋅,⋅) 是交叉熵:
对两个分类分布(标签分布 vs 预测分布)做 cross-entropy;
因为 R t B ( τ ) R_t^B(\tau) RtB(τ) 是 one-hot,所以交叉熵就等价于
取“真实桶”的负对数概率 − log p ϕ ( V = b ∗ ∣ o t , ℓ ) -\log p_\phi(V=b^*\mid \text{o}_t,\ell) −logpϕ(V=b∗∣ot,ℓ)。
综合来看,这个训练就像是:
用“经验回报的离散版本”当作“类别标签”,训练一个 201 分类的网络, 让它学会:给定 ( o t , ℓ ) (\text{o}_t,\ell) (ot,ℓ),预测“回报落在各个桶里的概率”。
这就是分布式价值函数训练: 退化成一个“多分类 + 交叉熵”的监督学习问题。
数据集 D \mathcal{D} D 是某个策略收集来的:
- 这个策略就是行为策略 π ref \pi_{\text{ref}} πref;
- 可以是人类示教策略,也可以是当前 VLA。
你用完整的轨迹回报 R t ( τ ) R_t(\tau) Rt(τ) 来监督网络:
- 对每个 ( o t , ℓ ) (\text{o}_t,\ell) (ot,ℓ);
- 用真实路径的“从这里开始的总回报”作为标签。
这就是在实现“ V π ref ( o t , ℓ ) V^{\pi_{\text{ref}}}(\text{o}_t,\ell) Vπref(ot,ℓ) 的蒙特卡洛估计”:
- 因为理论上:
V π ref ( o t , ℓ ) = E τ ∼ ρ π ref [ R t ( τ ) ∣ o t , ℓ ] . V^{\pi_{\text{ref}}}(\text{o}_t,\ell)=\mathbb{E}_{\tau\sim\rho_{\pi_{\text{ref}}}}\big[R_t(\tau)\mid\text{o}_t,\ell\big]. Vπref(ot,ℓ)=Eτ∼ρπref[Rt(τ)∣ot,ℓ].
- 你现在是直接用很多真实的 R t ( τ ) R_t(\tau) Rt(τ) 样本来拟合这个期望。
区别只是:
- 不是直接预测一个标量 R t R_t Rt;
- 而是预测整个分布 p ϕ ( V ∣ ⋅ ) p_\phi(V\mid\cdot) pϕ(V∣⋅),然后用 cross-entropy 来做拟合。
我们可以从学习到的价值分布中提取连续价值函数(从而得到优势),其方式为:
V π ref ( o t , ℓ ) = ∑ b ∈ [ 0 , B ] p ϕ ( V = b ∣ o t ) v ( b ) , V^{\pi_{\text{ref}}}(\text{o}_t,\ell)=\sum_{b\in[0,B]} p_\phi(V=b\mid \text{o}_t ) v(b), Vπref(ot,ℓ)=b∈[0,B]∑pϕ(V=b∣ot)v(b),
其中 v ( b ) v(b) v(b) 表示对应离散区间 b b b 所代表的具体价值。
p ϕ ( V = b ∣ o t , ℓ ) p_\phi(V=b\mid\text{o}_t,\ell) pϕ(V=b∣ot,ℓ):
- 网络预测:回报落在第 b b b 个桶里的概率。
v ( b ) v(b) v(b):
- 这个桶所代表的中心值或代表值,比如该区间的中点。
总和:
V π ref ( o t , ℓ ) = ∑ b Prob ( V = b ) × value of bin V^{\pi_{\text{ref}}}(\text{o}_t,\ell)=\sum_b \text{Prob}(V=b)\times \text{value of bin} Vπref(ot,ℓ)=b∑Prob(V=b)×value of bin
就是价值分布的期望值,等价于:
E V ∼ p ϕ [ value ( V ) ] \mathbb{E}_{V\sim p_\phi}[\text{value}(V)] EV∼pϕ[value(V)]。
这一步非常关键: 他们用分布做训练(更稳、更有信息), 但最终还是可以轻松拿到一个标量 V π ref V^{\pi_{\text{ref}}} Vπref。 有了标量价值 V π ref V^{\pi_{\text{ref}}} Vπref,就能去算优势 A π ref A^{\pi_{\text{ref}}} Aπref:
- 比如你前面看到的 N N N 步优势公式: A π ref ( o t , a t ) = E [ ∑ t ′ = t t + N − 1 r t ′ + V π ref ( o t + N ) ] − V π ref ( o t ) A^{\pi_{\text{ref}}}(\text{o}_t,\text{a}_t)=\mathbb{E}\Big[\sum_{t'=t}^{t+N-1}r_{t'}+V^{\pi_{\text{ref}}}(\text{o}_{t+N})\Big]-V^{\pi_{\text{ref}}}(\text{o}_t) Aπref(ot,at)=E[t′=t∑t+N−1rt′+Vπref(ot+N)]−Vπref(ot)
所以:
分布式价值 → 标量价值 → 优势 → 构造 π ^ \hat\pi π^ → 策略提取。
链路完全连上了。
在预训练阶段,数据集 D \mathcal{D} D 对应人类示教数据, 价值函数刻画了任务及其条件信息(如元数据)的期望回报, 在后续迭代中,它将偏向于示教回报与已学习策略回报的加权组合。
刚开始(预训练):
- D \mathcal{D} D 主要是人类示教轨迹;
- 用这些轨迹的回报训练出来的 V π ref V^{\pi_{\text{ref}}} Vπref, 就是在学“人类是怎么完成任务的、平均回报有多高”。
后面的 RL 迭代:
数据集 D \mathcal{D} D 里不只有人类示教,还有:
- 机器人用当前策略自己跑出来的轨迹;
价值函数会逐渐反映:
- “人类示教的回报” + “当前策略的回报”的混合效果;
也就是:向“人类示教 + 学到的策略表现”的加权平均靠拢。
所以这个价值函数不是只看人类,也会随着策略的改进而更新视角。
尽管这种“基于行为策略的数据(on-policy)”的估计器不如经典“离策略”Q函数估计器最优, 但我们发现它简单且高度可靠,同时仍能带来显著优于模仿学习的性能提升。 未来工作中,我们的方法可以扩展以适配离策略估计器。
行为策略(behavior policy) π ref \pi_{\text{ref}} πref:
- 就是“收集数据的策略”;
- 一开始可能是人类示教策略,后面可能是某一轮策略 π θ \pi_\theta πθ。
on-policy 估计器:
用的是“当前行为策略本身的数据”;
你直接用这些数据的回报来估计 V π ref V^{\pi_{\text{ref}}} Vπref;
就像现在这样:
- 每一个数据样本都来自 π ref \pi_{\text{ref}} πref 的 rollouts。
off-policy Q 估计器:
- 典型如 Q-learning、TD-learning;
- 可以用跟当前目标策略不一样的策略的数据(别的策略、不同时期的策略);
- 通常更“最优”,可以学到超越行为策略的 Q ∗ Q^* Q∗,但更加复杂且不稳定。
他们的评价:
现在用的是“on-policy 行为策略估计器”,不是严格意义上“最优”的 off-policy Q 函数;
但他们发现:
- 这种方法简单、稳定、鲁棒;
- 已经能带来明显优于单纯模仿学习的效果;
将来可以再引入更复杂的 off-policy 估计器(比如 TD、Q-learning 之类)来进一步增强。
要点:
他们在价值函数这块选的是“简单但靠谱”的方案:
- 用 MC 的 on-policy 分布值函数,而没直接上复杂的 off-policy Q-learning。
这也契合整篇文章的思路:
- 在大模型场景下,优先选“简单、稳定、易扩展”的设计。
B. 通过优势条件化进行策略提取
我们已经有了一个价值函数 V π ref V^{\pi_{\text{ref}}} Vπref,能告诉我们“当前状态下,从现在往后预期回报有多高”。 接下来,我们要用这个价值函数,从一堆离线数据里,训练出一个比参考策略更好的新策略。 这一步叫:策略提取(policy extraction)。他们用的是一种叫“优势条件化”的套路。
一旦我们得到了价值函数 V π ref V^{\pi_{\text{ref}}} Vπref,我们就需要一种方法利用该价值函数来训练一个改进后的策略。 这一步称为策略提取(policy extraction)。在我们的设置中,一个有效的策略提取方法需要满足以下几个标准。
- 首先,它需要能够有效利用多样化的离策略数据,包括最初的示教数据、专家干预数据,以及来自最新策略和旧策略的自主执行数据。这与离线强化学习(offline RL)方法所面临的挑战密切相关 [2, 3]。
- 其次,它需要具备可扩展性,并且容易应用于大型 VLA 模型,包括那些使用 flow matching 或 diffusion 生成动作的模型。
- 第三,它必须能够有效利用好的(近最优)与差的(次优)数据 —— 如果希望模型通过自主经验不断提升,这是至关重要的。
条件1:能吃掉各种离策略数据
不只是当前策略的数据,还包括:
- 最初的人类示教数据
- 专家干预(人插手纠错)的数据
- 旧策略、自主执行累积的各种数据
这些数据是离策略 (off-policy)(不是都来自同一条“当前策略”)。 → 这就是offline RL要面对的典型难题:如何从一大堆“历史数据混合汤”里学出一个好策略。
条件2:能扩展到大 VLA / flow / diffusion 模型
不能只适用于小网络、小动作空间,
要能跑在那种很大的 VLA 上:
- 输出动作有可能是通过 flow matching 或 diffusion 生成的(不是简单高斯策略)。
也就是说,策略提取算法本身必须结构简单、数值稳定,才能塞进这样的大模型里。
条件3:能同时利用“好数据”和“差数据”
- 数据集里既有接近最优的动作(专家/好的 rollouts),
- 也有比较烂的动作(探索失败、自主乱试出来的)。
- 希望算法不仅从好数据学会“怎么做好”,也从差数据学会“哪些动作不好要少做”。
如果只学“好数据”,本质上就是模仿学习(IL),你就只能“像老师一样好”,而很难通过自我探索再进步。
在现有的策略提取方法中,策略梯度方法(包括正则化策略梯度和重参数梯度)可能是最常用的 [66, 74],但这些方法难以用于 flow matching 模型,因为此类模型不容易给出可处理的对数似然(log-likelihood),从而难以扩展到现代 VLA 架构(比较见第 VI 节)。另一种方法是权重回归(weighted regression)方法,如 AWR [68, 75, 76],它通过加权监督学习隐式地对行为策略进行正则化。然而,这类方法会丢弃或大幅降低大部分数据的权重,本质上是一种“过滤式模仿学习”。相比之下,我们采用一种优势条件化(advantage conditioning)[48] 的变体,使得策略在监督学习中能够使用所有数据,并额外提供一个基于优势值(advantage)指示动作最优性的输入。这与文献中提出的许多“基于轨迹特征进行条件化”的策略方法密切相关 [47, 50]。
现有办法为什么不太适合他们?
1 策略梯度(包括正则化 PG、重参数梯度)
他们说:
这些方法是现在策略提取里最常见的一类,但难以用于 flow matching 模型,因为:
- flow 模型不容易算出可用的 log π ( a ∣ o ) \log\pi(\text{a}|\text{o}) logπ(a∣o)(对数似然)
- 没有好用的 log π \log\pi logπ,很多策略梯度公式都用不了
- 在大 VLA 架构上不容易扩展
直白说:
对于“flow-based 动作生成”的 VLA,大部分“直接对 log π \log\pi logπ做梯度”的 RL 方法都不好用、难实现、容易炸。
2 权重回归(AWR 一类)
AWR 等方法做的是:
- 用优势 A A A对样本加权
- 权重大 → 这个样本模仿得多一点;权重小 → 样本几乎被忽略
- 这会导致大量数据被“丢弃或权重极小”
所以他们说:
本质上是一种“过滤式模仿学习”:只模仿那些高优势样本。
问题:
- 低优势 / 负优势的数据几乎没用上,
- 你失去了“从坏经验里学反例”的机会,
- 也变得和纯模仿学习没那么远。
他们的关键点:优势条件化(Advantage Conditioning)
相比之下,我们采用一种优势条件化的变体,使得策略在监督学习中能够使用所有数据,并额外提供一个基于优势值指示动作最优性的输入。
翻译成你能一眼懂的话:
不对数据 “删数据/打极端权重”,而是:
- 所有样本都参与训练(好样本和坏样本都用);
- 但在模型输入里加一个“这个动作的好坏标签/信号”(基于优势 A A A算出来);
这样模型在训练时能知道:
- “这是一个状态 + 行为 + 指令 +(这个动作是好还是一般/差)”。
也就是:
用条件化(conditioning),而不是硬过滤(filtering),让模型“带着优势信息”做监督学习。
这和很多“基于轨迹特征进行条件化”的方法类似(比如用成功率、任务难度、偏好分数之类做条件输入)。
我们方法的具体形式与 CFGRL [4] 最为接近。 基于第 III 节的公式推导,我们可以利用贝叶斯公式将策略改进的概率改写为:
p ( I ∣ A π ref ( o , a ) ) = π ref ( a ∣ I , o ) π ref ( a ∣ o ) . p(I\mid A^{\pi_{\text{ref}}}(\text{o},\text{a}))=\frac{\pi_{\text{ref}}(\text{a}\mid I,\text{o})}{\pi_{\text{ref}}(\text{a}\mid \text{o})}. p(I∣Aπref(o,a))=πref(a∣o)πref(a∣I,o).
I I I:一个“动作是否带来改进”的事件(improvement indicator);
左边 p ( I ∣ A ) p(I|A) p(I∣A):原来我们在第III节里用优势 A A A定义“概率这个动作是改进行为”;
现在他们用贝叶斯公式,把这个量写成一个策略条件分布之比:
- 分子: π ref ( a ∣ I , o ) \pi_{\text{ref}}(\text{a}|I,\text{o}) πref(a∣I,o)
→ 在“ I I I是真的”(动作是改进行为)这个条件下,选择动作 a a a的概率;- 分母: π ref ( a ∣ o ) \pi_{\text{ref}}(\text{a}|\text{o}) πref(a∣o)
→ 在普通状态下(不区分好坏),参考策略选择 a a a的概率。
在结合语言条件化后,我们可以得到第 III 节改进后正则化策略的另一种闭式表达:
π ^ ( a ∣ o , ℓ ) ∝ π ref ( a ∣ o , ℓ ) ( π ref ( a ∣ I , o , ℓ ) π ref ( a ∣ o , ℓ ) ) β . (2) \hat\pi(\text{a}\mid \text{o},\ell)\propto \pi_{\text{ref}}(\text{a}\mid \text{o},\ell)\left(\frac{\pi_{\text{ref}}(\text{a}\mid I,\text{o},\ell)}{\pi_{\text{ref}}(\text{a}\mid \text{o},\ell)}\right)^\beta. \tag{2} π^(a∣o,ℓ)∝πref(a∣o,ℓ)(πref(a∣o,ℓ)πref(a∣I,o,ℓ))β.(2)
当 β = 1 \beta=1 β=1 时,有: π ^ ( a ∣ o , ℓ ) = π ref ( a ∣ I , o , ℓ ) \hat\pi(\text{a}\mid \text{o},\ell)=\pi_{\text{ref}}(\text{a}\mid I,\text{o},\ell) π^(a∣o,ℓ)=πref(a∣I,o,ℓ)。
可以这样看这条式子:
- 原来的正则化 RL 结果是: π ^ ∝ π ref ⋅ p ( I ∣ A ) β \hat\pi\propto \pi_{\text{ref}}\cdot p(I|A)^\beta π^∝πref⋅p(I∣A)β
- 现在用 p ( I ∣ A ) = π ref ( a ∣ I , o ) π ref ( a ∣ o ) p(I|A)=\frac{\pi_{\text{ref}}(a|I,o)}{\pi_{\text{ref}}(a|o)} p(I∣A)=πref(a∣o)πref(a∣I,o)代入,就得到(2)这个形式。
拆开看(2)里的各项:
- π ref ( a ∣ o , ℓ ) \pi_{\text{ref}}(\text{a}|\text{o},\ell) πref(a∣o,ℓ): 基础分布 = 参考策略在 ( o , ℓ ) (\text{o},\ell) (o,ℓ)下对 a a a的概率;
- π ref ( a ∣ I , o , ℓ ) \pi_{\text{ref}}(\text{a}|I,\text{o},\ell) πref(a∣I,o,ℓ): “在动作是改进行为的条件下”的策略分布;
- 比值 π ref ( a ∣ I , o , ℓ ) π ref ( a ∣ o , ℓ ) \frac{\pi_{\text{ref}}(\text{a}|I,\text{o},\ell)}{\pi_{\text{ref}}(\text{a}|\text{o},\ell)} πref(a∣o,ℓ)πref(a∣I,o,ℓ): 强调“那些在改进条件下被显著提高概率的动作”;
- 再整体加个指数 β \beta β,控制强化程度。
特别地,当 β = 1 \beta=1 β=1时:
有: π ^ ( a ∣ o , ℓ ) = π ref ( a ∣ I , o , ℓ ) \hat\pi(\text{a}|\text{o},\ell)=\pi_{\text{ref}}(\text{a}|I,\text{o},\ell) π^(a∣o,ℓ)=πref(a∣I,o,ℓ)。
也就是说:
- 理论上的最优改进策略 π ^ \hat\pi π^,
- 其实就是“在 I I I为真这个条件下的策略分布”。
这点非常关键:
所以你只要能学会表达“带 I I I条件的策略 π ( a ∣ I , o , ℓ ) \pi(a|I,o,\ell) π(a∣I,o,ℓ)”,就等于在表达 π ^ \hat\pi π^。
因此,我们无需显式表示改进概率 p ( I ∣ A π ref ( o , a ) ) p(I\mid A^{\pi_{\text{ref}}}(\text{o},\text{a})) p(I∣Aπref(o,a)) 即可表示 π ^ \hat\pi π^, 只需训练策略同时能够表示 π ref ( a ∣ o , ℓ ) \pi_{\text{ref}}(\text{a}\mid \text{o},\ell) πref(a∣o,ℓ) 与 π ref ( a ∣ I , o , ℓ ) \pi_{\text{ref}}(\text{a}\mid I,\text{o},\ell) πref(a∣I,o,ℓ) 即可。
不用再去建一个单独的 p ( I ∣ A ) p(I|A) p(I∣A) 模型(省事);
只要让策略网络 π θ \pi_\theta πθ具备一个额外输入条件 I I I:
- 当 I = 0 I=0 I=0,它学 π ref ( a ∣ o , ℓ ) \pi_{\text{ref}}(a|\text{o},\ell) πref(a∣o,ℓ)(普通行为策略);
- 当 I = 1 I=1 I=1,它学 π ref ( a ∣ I , o , ℓ ) \pi_{\text{ref}}(a|I,\text{o},\ell) πref(a∣I,o,ℓ)(“改进行为”策略)。
这一原理类似于 classifier-free guidance(CFG)中的做法, 即扩散模型同时学习“有条件”和“无条件”的两种分布 [4]。
在 CFG 里,扩散模型同时学习:
- “有条件”的分布 p ( x ∣ y ) p(x|y) p(x∣y)(例如给文本提示);
- “无条件”的分布 p ( x ) p(x) p(x);
然后推理时用线性组合 p guided ∝ p ( x ∣ y ) γ / p ( x ) γ − 1 p_{\text{guided}}\propto p(x|y)^\gamma / p(x)^{\gamma-1} pguided∝p(x∣y)γ/p(x)γ−1 来增强条件效果。这里则是“带 I I I条件”与“不带 I I I条件”的两种策略分布。
我们假设改进指标 I I I 遵循如下 delta 分布:
p ( I ∣ A π ref ( o , a , ℓ ) ) = δ ( A π ref ( o , a , ℓ ) > ϵ ℓ ) , p(I\mid A^{\pi_{\text{ref}}}(\text{o},\text{a},\ell))=\delta(A^{\pi_{\text{ref}}}(\text{o},\text{a},\ell)>\epsilon_\ell), p(I∣Aπref(o,a,ℓ))=δ(Aπref(o,a,ℓ)>ϵℓ),
δ ( ⋅ ) \delta(\cdot) δ(⋅)是一个 delta 分布(你可以当成“硬指示/one-hot 事件”);
意思就是:
- 如果优势 A π ref ( o , a , ℓ ) > ϵ ℓ A^{\pi_{\text{ref}}}(\text{o},\text{a},\ell)>\epsilon_\ell Aπref(o,a,ℓ)>ϵℓ,则 I = True I=\text{True} I=True(好动作);
- 否则 I = False I=\text{False} I=False(一般/差动作)。
其中 ϵ ℓ \epsilon_\ell ϵℓ 是任务相关的改进阈值。 该阈值让我们能够控制最优性指示器,并减少在训练后调节衰减因子 β \beta β 以增强改进分布的需求(先前研究 [4] 采用固定 ϵ = 0 \epsilon=0 ϵ=0,并在测试时调节 β \beta β,类似 CFG。然而较大的 CFG 权重会将动作分布推向其支持域边界(导致过激行为),且不会影响模型的自回归部分。我们发现通过使用阈值 ϵ ℓ \epsilon_\ell ϵℓ 来平衡正则化与最优性更容易获得好结果)。
这里的 ϵ ℓ \epsilon_\ell ϵℓ是任务相关的阈值:
不同任务回报/优势范围可能不同;
用一个 ϵ ℓ \epsilon_\ell ϵℓ控制“什么样的优势才算真正的‘改进’”;
这个阈值让你可以:
- 控制 I I I的比例(多少样本被标成好);
- 减少后面再去用 β \beta β硬调 CFG 强度的压力。
他们对比前人[4]:
- 以前是 ϵ = 0 \epsilon=0 ϵ=0不调,只在测试时调 β \beta β(像 CFG 一样,调 guidance weight);
- 但大 β \beta β会把分布往支持域边界推(变得非常极端、过激动作),而且不会影响自回归部分;
- 他们发现:调 ϵ ℓ \epsilon_\ell ϵℓ来平衡“正则化 vs 最优性”更好调,更稳定。
策略学习目标对应于最小化如下负对数似然:
min θ E D π ref [ − log π θ ( a t ∣ o t , ℓ ) − α log π θ ( a t ∣ I t , o t , ℓ ) ] , (3) \min_\theta \mathbb{E}_{\mathcal{D}_{\pi_{\text{ref}}}}\Big[-\log\pi_\theta(\text{a}_t\mid \text{o}_t,\ell)-\alpha\log\pi_\theta(\text{a}_t\mid I_t,\text{o}_t,\ell)\Big], \tag{3} θminEDπref[−logπθ(at∣ot,ℓ)−αlogπθ(at∣It,ot,ℓ)],(3)
其中 I t = 1 ( A π ref ( o t , a t , ℓ ) > ϵ ℓ ) I_t=\mathbf{1}(A^{\pi_{\text{ref}}}(\text{o}_t,\text{a}_t,\ell)>\epsilon_\ell) It=1(Aπref(ot,at,ℓ)>ϵℓ)。
数据来自 D π ref \mathcal{D}_{\pi_{\text{ref}}} Dπref:
这个数据集包含“目前为止收集到的所有数据”:
- 所有示教数据
- 自主尝试数据(旧策略、新策略 rollouts);
所以参考策略 π ref \pi_{\text{ref}} πref是“人类示教+旧策略执行”混合而成。
第一项: − log π θ ( a t ∣ o t , ℓ ) -\log\pi_\theta(\text{a}_t|\text{o}_t,\ell) −logπθ(at∣ot,ℓ)
→ 训练网络去拟合“无 I I I条件”的行为策略(普通策略)。第二项: − α log π θ ( a t ∣ I t , o t , ℓ ) -\alpha\log\pi_\theta(\text{a}_t|I_t,\text{o}_t,\ell) −αlogπθ(at∣It,ot,ℓ)
→ 训练网络在 I I I条件下拟合“改进行为策略”,
→ 且只在 I t = 1 I_t=1 It=1(好样本)时这个项才非常关键;
→ α \alpha α是一个超参数,控制这个“改进行为”分支的权重。你可以把式(3)理解为:
对每个数据点 ( o t , a t , ℓ ) (\text{o}_t,\text{a}_t,\ell) (ot,at,ℓ),
- 无论好坏,模型都要学会“普通模式下如何输出这个动作”(第1项);
- 如果这个动作是好动作( I t = 1 I_t=1 It=1),模型还要学会“在标记为 I I I的模式下,更加偏向这个动作”(第2项)。
和 AWR 的差异:
- AWR:只给高优势样本大权重,其它样本权重接近0;
- 这里:所有样本都参与第一项(普通行为建模),好样本额外参与第二项(改进行为建模)。
→ 所以它不会丢掉大量差样本,而是通过 I I I标签让模型学区分“什么是好动作,什么只是普通/差动作”。
优势值 A π ref ( o t , a t , ℓ ) A^{\pi_{\text{ref}}}(\text{o}_t,\text{a}_t,\ell) Aπref(ot,at,ℓ) 来自上一小节的价值函数,而 α \alpha α 是一个权衡超参数。 在实际中,数据集 D π ref \mathcal{D}_{\pi_{\text{ref}}} Dπref 包含目前为止收集的所有数据, 包括所有示教数据与自主任务尝试数据, 因此参考策略 π ref \pi_{\text{ref}} πref 是“人类示教 + 旧策略执行”组成的混合策略。 为纳入专家纠错,我们发现:对以人工干预形式出现的动作强制设定 I t = True I_t=\text{True} It=True (i.e., positive) 十分有用。 如果我们假设专家的纠错动作总是高质量的,这一做法是合理的。
在数据集中,有一些动作是“专家在机器人执行过程中插手纠正的”;
对这些动作,他们直接设 I t = 1 I_t=1 It=1,不管价值函数 A A A算出来多少;
这样做相当于告诉模型:
“这些动作是必须当成高质量样本来学的。”
只要你认为“专家纠错动作是高质量的”,这个做法是合理的。
正如我们将在第 V 节中讨论的,我们的 VLA 模型同时生成离散与连续输出,其中连续分布使用 flow matching 表示。 因此,真实的训练目标由:离散部分的似然项 + 连续部分的 flow matching 损失共同构成。
他们的 VLA 策略网络输出既有:
- 离散信号(比如某些离散决策:开/关夹爪、子任务切换之类);
- 连续信号(连续动作,位置/速度/力等);
连续部分本身是用 flow matching 的生成模型来表示的;
所以总损失 =
- 离散输出部分的负对数似然(刚才式(3))
- 连续部分 flow matching 的损失
→ 一起反向传播到模型参数。
在实际中,我们先在整个预训练数据集上训练一个能够表示 π θ ( a t ∣ I t , o t , ℓ ) \pi_\theta(\text{a}_t\mid I_t,\text{o}_t,\ell) πθ(at∣It,ot,ℓ) 的模型, 随后,对每个任务执行一次或多次“使用 on-policy rollout(及可选的专家干预)”的迭代更新。
可以理解成两阶段:
阶段1:纯离线预训练(大数据上)
用人类示教数据(加上已收集的旧 rollouts),
训练一个 π θ ( a t ∣ I t , o t , ℓ ) \pi_\theta(\text{a}_t|I_t,\text{o}_t,\ell) πθ(at∣It,ot,ℓ):
- 学会同时表示“普通行为”和“改进行为”。
阶段2:按任务迭代更新(on-policy rollout + 可能有人插手)
对每个具体任务:
- 用当前策略 π θ \pi_\theta πθ跑任务(on-policy rollout),收集新数据;
- 可选:专家在关键时刻介入纠错 → 生成专家干预数据;
- 用新的数据更新价值函数 V π ref V^{\pi_{\text{ref}}} Vπref、优势 A π ref A^{\pi_{\text{ref}}} Aπref;
- 重新给 I t I_t It打标签(基于 A > ϵ ℓ A>\epsilon_\ell A>ϵℓ或专家干预);
- 用式(3)再训练一次 π θ \pi_\theta πθ(策略提取)。
如此循环:迭代式离线/半离线 RL。
他们先用分布式价值函数估计出每个 ( o t , a t , ℓ ) (\text{o}_t,\text{a}_t,\ell) (ot,at,ℓ)的优势 A π ref A^{\pi_{\text{ref}}} Aπref; 然后用一个“优势条件化”的策略提取方法: 不再丢弃低优势样本,而是给每个样本打一个好坏标签 I t I_t It(基于 A A A和任务阈值 ϵ ℓ \epsilon_\ell ϵℓ,专家干预强制为好); 再训练一个能同时表示 π θ ( a ∣ o , ℓ ) \pi_\theta(a|\text{o},\ell) πθ(a∣o,ℓ)和 π θ ( a ∣ I , o , ℓ ) \pi_\theta(a|I,\text{o},\ell) πθ(a∣I,o,ℓ)的大模型策略,用式(3)的负对数似然目标; 最终,带 I = 1 I=1 I=1的那一支就对应“改进后的策略 π ^ \hat\pi π^”,既能利用全部离线数据,又能特别偏向高优势行为,而且适配flow-based的大 VLA。
C. 方法小结

我们在算法 1 中给出了完整方法的总体概览。正如本节开头所总结的,我们的方法可以完全由三个子过程的应用来定义:
(1)通过自主 rollout 采集数据(可选地加入专家的纠错干预),
(2)按照公式(1)训练价值函数,
(3)按照公式(3)训练策略。
在不同阶段之间,方法唯一改变的是:提供给各个子过程的数据来源不同,预训练阶段使用所有已有的示教数据,而针对每个技能 ℓ ( i ) \ell^{(i)} ℓ(i) 训练 “专才(specialist)” 模型的过程会使用额外的自主执行数据。在实际中,各个专才模型是从预训练模型上进行微调得到的,而最终的通才模型(generalist)则是从头开始训练的。关于该方法的更多细节见附录 F。
V. 实现、模型与系统细节
我们使用一个称为 π 0.6 ∗ π_{0.6}^* π0.6∗ 的 VLA 来实例化 RECAP。 π 0.6 ∗ π_{0.6}^* π0.6∗ 基于 π 0.6 π_{0.6} π0.6 VLA,而 π 0.6 π_{0.6} π0.6 是在 π 0.5 π_{0.5} π0.5 VLA [5] 基础上演化而来,并在随附的 model card [6] 中详细说明了其改进。 π 0.6 ∗ π_{0.6}^* π0.6∗ 额外加入了对“二值化优势指示器” I t I_t It 的条件化能力,使其能够进行 RECAP 的强化学习训练。 模型架构如图 3 所示。 我们按照第 IV-A 节的方法,与 VLA 同时训练一个价值函数。 该价值函数同样由一个 VLM 初始化。 利用 RECAP 对 VLA 与价值函数进行训练后,我们得到最终模型 π 0.6 ∗ π_{0.6}^* π0.6∗。 在本节中,我们首先阐述模型的设计,以及如何将价值函数的优势值扩展接入模型, 随后描述奖励函数与价值函数,最后再说明实际实现中的训练与数据采集流程。
一开始有一个老模型:π₀.₅
→ 这是一个已经存在的 VLA 模型。在 π₀.₅ 的基础上升级了一版:π₀.₆
→ 提升了数据、主干 VLM、动作专家的规模等(后面会详细说)。然后这一篇论文又在 π₀.₆ 的基础上,做了 RECAP 的 RL 强化训练:
- 加入了“优势指示器 I t I_t It 的条件化”,
- 加了价值函数,做了几轮 RECAP 的 “价值+策略提取” 迭代,
- 最后得到一个“强化过的版本”,叫 π₀.₆*。
所以:
- π₀.₆:基础预训练 VLA;
- π₀.₆*:在 π₀.₆ 上再用 RECAP 做 RL 训练后的最终模型。
你可以理解成:
π₀.₅ → 升级成 π₀.₆ → 加 RECAP(价值函数 + 优势条件化策略提取) → 得到 π₀.₆*。
π₀.₆ 本身只是一个“预训练的 VLA”:
- 输入:图像 + 机器人状态 + 语言;
- 输出:子任务文本 + 动作 token + 连续动作;
- 通过 log-likelihood 分解做监督训练。
在 RECAP 里,他们会在这个架构上再加一个“输入条件”:
- 把二值优势指示 I t I_t It 加进来(你前面已经看过策略提取部分的式(3));
- 再配合价值函数 V π ref V^{\pi_{\text{ref}}} Vπref 训练;
- 最后得到的就是能利用优势信息改进策略的 π₀.₆*。
A. π 0.6 π_{0.6} π0.6 模型
π 0.6 π_{0.6} π0.6 模型 [6] 派生自 π 0.5 π_{0.5} π0.5 模型, π 0.5 π_{0.5} π0.5 能通过 flow matching 灵活表示分段式(chunked)动作分布,并生成中间语言 token 以进行高层策略推理。 它采用 Knowledge Insulation(KI)训练流程 [73], 即对连续动作与离散 token(包括通过 FAST [77] 离散化的动作)进行端到端训练, 同时通过 stop gradient 防止 flow-matching 动作专家对模型其他部分产生干扰。 预训练阶段使用机器人数据与来自网络的视觉—语言共同训练数据。
π
0.6
π_{0.6}
π0.6 在多个方面改进了
π
0.5
π_{0.5}
π0.5:
(i)预训练数据加入来自多种机器人平台的额外数据。
(ii)基础 VLM 换成了 Gemma 3 [78] 的 4B 模型。
(iii)动作专家模块扩大到 860M 参数。
π₀.₅ 做了什么?
flow matching 表示分段式动作分布(chunked actions)
机器人动作不是一步一步出,而是一段一段(chunk) 出:
- 比如每次输出未来 0.5 秒或者 1 秒的一整段关节轨迹;
这段动作的分布不是简单高斯,而是用 flow matching 这种复杂的连续生成模型来表示:
可以理解为:从“简单噪声”通过一个“流”变形成长得很复杂的动作序列分布。
同时生成中间语言 token 做高层策略
模型不仅输出“低层动作”(关节角、夹爪开合),
还输出“文本 token”,相当于 子任务描述,比如:
- “pick up the coffee cup”
- “move cup to saucer” 等等;
这些文本相当于模型内置的 高层决策/规划,动作是“在这个子任务条件下”的低层执行。
Knowledge Insulation(KI)训练流程
这个 VLA 有两大类输出:
- 连续动作(真实控制信号);
- 离散 token(包括文本 + 把动作离散化后的 token)。
KI 的核心思想是:
用 一个“动作专家”子网络 专门生成连续动作(用 flow matching 训练);
同时用另一个头预测离散 token(包括动作 token 和文本 token);
并通过 stop-gradient 把“连续动作专家”的梯度隔离开:
避免“动作生成那一块”把整个 VLM 主干搞崩, 让知识结构(语言/视觉理解)不会被动作部分乱带偏。
预训练数据来源
- 一方面用大量机器人数据(真实/仿真操作轨迹);
- 一方面用从互联网来的视觉-语言数据(图片 + 文本),做联合预训练;
- 这样 VLM 主干既懂真实场景,又能做视觉理解和语言理解。
π₀.₆ 相比 π₀.₅ 做了三类升级
π 0.6 π_{0.6} π0.6 在多个方面改进了 π 0.5 π_{0.5} π0.5:
(i)预训练数据加入来自多种机器人平台的额外数据。
(ii)基础 VLM 换成了 Gemma 3 的 4B 模型。
(iii)动作专家模块扩大到 860M 参数。翻译:
数据更丰富:更多不同机器人平台的数据
- 不只在一个机器人(比如单一机械臂)上训练;
- 引入多种机器人平台的数据 → 提高 跨机器人泛化能力。
VLM 主干加强:换成 Gemma 3 4B
- 之前的主干 VLM 容量比较小;
- 现在换成一个更强的基础模型:Gemma 3,参数规模 4B(40 亿);
- 这部分负责理解图像 + 文本,是“通用多模态大脑”。
动作专家更大:860M 参数
- 专门做动作生成的部分(flow matching 动作专家)变成了 8.6 亿参数;
- 表达能力更强,能生成更复杂、更稳定的动作轨迹。
所以:π₀.₆ = 更强的视觉-语言理解 + 更强的动作生成 + 更多样的机器人数据。
模型形式可写为: π θ ( a t : t + H , ℓ ^ ∣ o t , ℓ ) π_\theta(\text{a}_{t:t+H},\hat\ell \mid \text{o}_t,\ell) πθ(at:t+H,ℓ^∣ot,ℓ),其中 o t = [ X t 1 , … , X t n , q t ] \text{o}_t=[\text{X}_t^1,\ldots,\text{X}_t^n,\text{q}_t] ot=[Xt1,…,Xtn,qt] 包含相机图像 X \text{X} X 与机器人配置 q \text{q} q, 而 ℓ = ℓ t + s \ell=\ell_{t}+s ℓ=ℓt+s 是语言输入,包括总体任务提示 ℓ t \ell_t ℓt (如 “make me an espresso”), 以及额外的语言输入 s s s,提供调节任务执行方式的元信息。
π₀.₆ 接收什么输入?输出什么?
他们用一个数学形式写出了模型:
模型形式可写为:
π θ ( a t : t + H , ℓ ^ ∣ o t , ℓ ) . π_\theta(\text{a}_{t:t+H},\hat\ell \mid \text{o}_t,\ell). πθ(at:t+H,ℓ^∣ot,ℓ).这句话的意思是:
输入: o t \text{o}_t ot (观测) + ℓ \ell ℓ(语言输入);
输出:
- 一段动作 a t : t + H \text{a}_{t:t+H} at:t+H
- 一些离散 token ℓ ^ \hat\ell ℓ^(子任务文本)。
我们把每个符号拆开:
1 观测 o t \text{o}_t ot其中 o t = [ X t 1 , … , X t n , q t ] \text{o}_t=[\text{X}_t^1,\ldots,\text{X}_t^n,\text{q}_t] ot=[Xt1,…,Xtn,qt] 包含相机图像 X \text{X} X 与机器人配置 q \text{q} q
[ X t 1 , … , X t n ] [\text{X}_t^1,\ldots,\text{X}_t^n] [Xt1,…,Xtn]:
来自不同相机的图像:
- 比如俯视相机、侧视相机、腕部相机等;
q t \text{q}_t qt:
机器人当前的配置:
- 关节角度
- 夹爪开合
- 甚至可能包括末端位姿、速度等等。
所以 o t \text{o}_t ot 就是一次完整的“机器人看到什么 + 自身是什么姿态”。
2 语言输入 ℓ = ℓ t + s \ell = \ell_t + s ℓ=ℓt+s
而 ℓ = ℓ t + s \ell=\ell_{t}+s ℓ=ℓt+s 是语言输入,包括:
- 总体任务提示 ℓ t \ell_t ℓt (如 “make me an espresso”),
- 以及额外的语言输入 s s s,提供调节任务执行方式的元信息。
意思是:
ℓ t \ell_t ℓt:高层任务指令
- 比如 “make me an espresso”、
“fold the towel”、
“pour water into the cup”。s s s:附加说明/元信息
比如:
- “请慢一点”;
- “小心不要弄洒”;
- “只用左手”;
- “优先安全”。
总的语言输入就是这两部分拼起来,让模型知道要做什么 + 怎样做。
模型生成动作片段 a t : t + H \text{a}_{t:t+H} at:t+H,包含以 50 Hz 提供的关节角与夹爪指令, 使用一个独立的“动作专家”(860M 参数),专门通过 flow matching 训练用于动作生成, 但它可以访问模型其他部分的激活信息。
3 输出 1:动作片段 a t : t + H \text{a}_{t:t+H} at:t+H
动作片段:从 t t t到 t + H t+H t+H
- 不是每次只出一个动作,而是一小段连续控制序列:
a t : t + H = [ a t , a t + 1 , … , a t + H ] . \text{a}_{t:t+H}=[\text{a}_t,\text{a}_{t+1},\ldots,\text{a}_{t+H}]. at:t+H=[at,at+1,…,at+H].50 Hz 的关节角 + 夹爪指令
也就是说,每秒 50 个时间步;
每个动作 a k \text{a}_k ak 包含:
- 机械臂各个关节角度;
- 夹爪开合指令(开/合或连续开度)。
动作由独立“动作专家”生成
- 这个专家网络有 860M 参数;
- 使用 flow matching 作为训练方法;
- 它可以读取 VLM 主干 / Transformer 的中间特征(激活), 但本身是专门为“动作生成”服务的模块。
模型还会生成离散 token 输出 ℓ ^ \hat\ell ℓ^, 其中包含预测的下一个子任务的文本表示(例如 “pick up the coffee cup”),用于高层决策。 由于动作是在生成 ℓ ^ \hat\ell ℓ^ 之后才生成的,因此动作生成是基于该子任务条件化的, 从而提供高层指导。
4 输出 2:离散 token ℓ ^ \hat\ell ℓ^(子任务预测)
模型在每个高层决策点,会先输出一些文本 token ℓ ^ \hat\ell ℓ^:
这段文本是“下一步要做的子任务”;
例如:
- “pick up the coffee cup”
- “move cup to espresso machine”
- “press start button”。
动作是在预测完 ℓ ^ \hat\ell ℓ^ 之后才生成的
所以 a t : t + H \text{a}_{t:t+H} at:t+H 是“在这个子任务条件下”的动作;
也就是:
先规划:我要干什么(子任务文本);
然后执行:具体怎么动手臂(动作片段)。推理阶段,子任务预测的频率比动作生成低
比如:每 1 秒预测一次子任务(高层策略),
但每 0.02 秒(50Hz)输出一次动作;
所以:
- 子任务是慢频率的“高层脑子”;
- 动作是高频率的“低层肌肉”。
推理阶段中,子任务预测的频率低于动作生成。 训练时,模型还会使用 FAST tokenizer [77] 预测动作片段 a t : t + H \text{a}_{t:t+H} at:t+H 的 token 化表示,这是 KI recipe [73] 的一部分。 我们将这些离散动作记为 a t : t + H ℓ {a}^\ell_{t:t+H} at:t+Hℓ。 动作专家并不会接收这些离散动作作为输入,因此离散动作与连续动作是独立预测的。
动作也被“token 化”成离散符号
- 使用 FAST tokenizer 把连续动作序列 a t : t + H \text{a}_{t:t+H} at:t+H 压缩 / 编码成一串离散 token;
- 就像 NLP 里把句子编码成 token 序列一样;
- 这些 token 叫 a t : t + H ℓ a^\ell_{t:t+H} at:t+Hℓ(上标 ℓ \ell ℓ 表示离散 / language-like)。
模型在训练时要同时预测这个离散版本
- 这相当于让模型再多做一个“动作序列的文本压缩预测任务”,
- 有利于让主干网络习得更好的“对动作结构的抽象理解”。
动作专家不看这些离散动作
连续动作专家只用来生成真正执行的连续控制信号;
它不把这些离散 token 当输入;
这保证:
- 连续动作生成 和 离散 token 预测 是两条独立分支;
- 但它们共享同一个多模态主干(VLM)。
这就是 KI 思路的一部分:
多任务训练(文本 token、动作 token、连续动作), 但是通过结构和 stop-gradient 让各部分互不破坏对方的知识。
最终训练 log-likelihood 如下:
log π θ ( a t : t + H , a t : t + H ℓ , ℓ ^ ∣ o t , ℓ ) . \log π_\theta(\text{a}_{t:t+H}, a^\ell_{t:t+H}, \hat\ell \mid o_t,\ell). logπθ(at:t+H,at:t+Hℓ,ℓ^∣ot,ℓ).
在 ( o t , ℓ ) (\text{o}_t,\ell) (ot,ℓ) 条件下,
模型对整个输出三元组:
- 连续动作 a t : t + H \text{a}_{t:t+H} at:t+H
- 离散动作 token a t : t + H ℓ a^\ell_{t:t+H} at:t+Hℓ
- 子任务文本 token ℓ ^ \hat\ell ℓ^
的联合对数似然。
由于 ℓ ^ \hat\ell ℓ^ 是先预测的,因此该 log-likelihood 可以分解为:
log π θ ( a t : t + H , a t : t + H ℓ , ℓ ^ ∣ o t , ℓ ) = log π θ ( ℓ ^ ∣ o t , ℓ ) + log π θ ( a t : t + H ℓ ∣ o t , ℓ , ℓ ^ ) + log π θ ( a t : t + H ∣ o t , ℓ , ℓ ^ ) . \log π_\theta(\text{a}_{t:t+H}, a^\ell_{t:t+H}, \hat\ell \mid \text{o}_t,\ell) = \\ \log π_\theta(\hat\ell \mid \text{o}_t,\ell) + \log π_\theta(a^\ell_{t:t+H} \mid \text{o}_t,\ell,\hat\ell) + \log π_\theta(\text{a}_{t:t+H} \mid \text{o}_t,\ell,\hat\ell). logπθ(at:t+H,at:t+Hℓ,ℓ^∣ot,ℓ)=logπθ(ℓ^∣ot,ℓ)+logπθ(at:t+Hℓ∣ot,ℓ,ℓ^)+logπθ(at:t+H∣ot,ℓ,ℓ^).
先预测高层子任务文本 ℓ ^ \hat\ell ℓ^:
- 概率是 π θ ( ℓ ^ ∣ o t , ℓ ) \pi_\theta(\hat\ell|\text{o}_t,\ell) πθ(ℓ^∣ot,ℓ);
- 对应第一项:
log π θ ( ℓ ^ ∣ o t , ℓ ) . \log π_\theta(\hat\ell \mid \text{o}_t,\ell). logπθ(ℓ^∣ot,ℓ).然后在给定 ( o t , ℓ , ℓ ^ ) (\text{o}_t,\ell,\hat\ell) (ot,ℓ,ℓ^) 的条件下,预测离散动作 token:
- 概率是 π θ ( a t : t + H ℓ ∣ o t , ℓ , ℓ ^ ) \pi_\theta(a^\ell_{t:t+H}|\text{o}_t,\ell,\hat\ell) πθ(at:t+Hℓ∣ot,ℓ,ℓ^);
- 对应第二项。
再在同样条件下,预测连续动作片段:
- 概率是 π θ ( a t : t + H ∣ o t , ℓ , ℓ ^ ) \pi_\theta(\text{a}_{t:t+H}|\text{o}_t,\ell,\hat\ell) πθ(at:t+H∣ot,ℓ,ℓ^);
- 对应第三项。
这就是一句标准的概率分解:
p ( x , y , z ) = p ( z ) , p ( y ∣ z ) , p ( x ∣ y , z ) , p(x,y,z)=p(z),p(y|z),p(x|y,z), p(x,y,z)=p(z),p(y∣z),p(x∣y,z),
在这里变成了“三步生成过程”:
先想好“要做哪个子任务”(文本)
→ 再输出这个子任务下的动作 token
→ 最后输出真正执行用的连续动作。训练时,总损失就是这三部分 log-likelihood 的和(取负号做最大似然)。
B. 通过优势条件化从 π 0.6 π_{0.6} π0.6 过渡到 π 0.6 ∗ π_{0.6}^{*} π0.6∗
“有了优势值以后,我们具体是怎么把它‘接’到大模型 π₀.₆ 上,把它变成 π₀.₆ 的?”*
为将“优势值”信息纳入策略中,我们将模型输入扩展为包含一个额外的“改进指示器”(improvement indicator),并将其作为额外的文本输入, 当 I t = True I_t = \text{True} It=True 时输入 “Advantage: positive”,否则输入 “Advantage: negative”。 除此之外,VLA 模型与第 V-A 节描述一致。
从 π₀.₆ 到 π₀.₆ 的第一步:在输入里加“优势指示器” I t I_t It*
原来的 π₀.₆ 只看这些东西:
- 图像 + 机器人状态: o t \text{o}_t ot
- 语言任务提示: ℓ \ell ℓ
- 前面已经预测出来的子任务文本: ℓ ^ \hat\ell ℓ^
现在为了把“动作好不好(优势)”的信息灌进去,他们再加一个额外的文本条件:
- 如果这个样本的优势 A π ref ( o t , a t , ℓ ) A^{\pi_{\text{ref}}}(\text{o}_t,\text{a}_t,\ell) Aπref(ot,at,ℓ) 超过阈值 ϵ ℓ \epsilon_\ell ϵℓ,即 I t = True I_t=\text{True} It=True,就喂一句文本: “Advantage: positive”
- 否则, I t = False I_t=\text{False} It=False,就喂: “Advantage: negative”
这和前面第 IV-B 节说的“优势条件化”一一对应: 只是这里在实现上,直接用文本 prompt 的方式喂给大模型,而不是额外搞一个独立的 embedding。
等价于:大模型的输入序列里多了一段“描述当前动作是不是好动作”的语言标签。
优势指示器出现在训练序列中 位于 ℓ ^ \hat\ell ℓ^ 之后、但在(离散与连续)动作之前, 这样只有动作的 log-likelihood 会受到影响。
这个优势指示器在序列里放在哪?
回忆 π₀.₆ 的生成顺序:
输入 ( o t , ℓ ) (\text{o}_t,\ell) (ot,ℓ);
先生成子任务文本 ℓ ^ \hat\ell ℓ^;
然后在条件 ( o t , ℓ , ℓ ^ ) (\text{o}_t,\ell,\hat\ell) (ot,ℓ,ℓ^) 下,生成:
- 离散动作 token a t : t + H ℓ a^\ell_{t:t+H} at:t+Hℓ;
- 连续动作 a t : t + H \text{a}_{t:t+H} at:t+H。
现在,他们在这条序列中 插一个“Advantage: …”的文本片段,位置是:
[观测与任务] → 预测子任务 ℓ ^ \hat\ell ℓ^ → Advantage: positive/negative → 动作 token & 连续动作
为什么要这么放?
因为他们想要:
子任务文本 ℓ ^ \hat\ell ℓ^ 不受优势信号影响(子任务规划本身还是由视觉+语言+历史决定);
只有“动作”的生成要被 I t I_t It 影响:
- 也就是:同一个子任务下,
如果 I t = p o s i t i v e I_t=positive It=positive,动作更偏向“好动作模式”;
如果 I t = n e g a t i v e I_t=negative It=negative,动作更偏向“普通/一般模式”。顺序决定了谁能看到它: 放在 ℓ ^ \hat\ell ℓ^ 后,就不会影响 ℓ ^ \hat\ell ℓ^ 的预测;放在动作之前,就会影响动作。
连续动作部分的 log-likelihood 无法精确计算,因此使用 flow matching 损失 [79] 进行训练。 在一定假设下,可以将 flow matching 与 diffusion 视为紧密相关的方法, 而 diffusion 进一步可以被解释为 log-likelihood 的下界 [80], 因此我们可将“离散动作的 log-likelihood”与“连续动作的 flow matching 损失”的和视为整体动作似然的一个下界:
log π θ ( a t : t + H , a t : t + H ℓ ∣ I t , o t , ℓ , ℓ ^ ) ≥ E η , ω [ log p θ ( a t : t + H ℓ ∣ I t , o t , ℓ , ℓ ^ ) − α η ∣ ∣ ω − a t : t + H − f θ ( a t : t + H η , ω , I t , o t , ℓ , ℓ ^ ) ∣ ∣ 2 ] , (4) \log π_\theta(\text{a}_{t:t+H}, a^ℓ_{t:t+H}\mid I_t, \text{o}_t, \ell, \hat\ell) \ge \\ \mathbb{E}_{\eta,\omega}\Big[\log p_\theta(a^ℓ_{t:t+H}\mid I_t, \text{o}_t, \ell, \hat\ell) - \\ \alpha_\eta \left| \right| \omega - \text{a}_{t:t+H} - f_\theta(\text{a}^{\eta,\omega}_{t:t+H}, I_t, \text{o}_t, \ell, \hat\ell) \left|\right|^2 \Big], \tag{4} logπθ(at:t+H,at:t+Hℓ∣It,ot,ℓ,ℓ^)≥Eη,ω[logpθ(at:t+Hℓ∣It,ot,ℓ,ℓ^)−αη∣∣ω−at:t+H−fθ(at:t+Hη,ω,It,ot,ℓ,ℓ^)∣∣2],(4)
其中 a t : t + H η , ω = η a t : t + H + ( 1 − η ) ω \text{a}^{\eta,\omega}_{t:t+H} = \eta \text{a}_{t:t+H} + (1-\eta)\omega at:t+Hη,ω=ηat:t+H+(1−η)ω, ω ∼ N ( 0 , I ) \omega \sim \mathcal{N}(0,I) ω∼N(0,I) 表示噪声动作; η ∈ [ 0 , 1 ] \eta \in [0,1] η∈[0,1] 是 flow matching 的时间索引, f θ f_\theta fθ 表示 diffusion expert 的连续输出。 α η \alpha_\eta αη 为损失权重项(可以随噪声而变)。损失的完整细节见附录 C。
离散部分(动作 token a t : t + H ℓ a^\ell_{t:t+H} at:t+Hℓ):
- 很好算对数似然:就是一个标准的分类 / 序列建模任务, log p θ ( a t : t + H ℓ ∣ ⋅ ) \log p_\theta(a^\ell_{t:t+H}|\cdot) logpθ(at:t+Hℓ∣⋅)。
连续部分(真实动作 a t : t + H \text{a}_{t:t+H} at:t+H):
- 是用 flow matching / diffusion 那种连续生成模型表示的;
- 对这种模型来说,精确的 log p ( a t : t + H ∣ ⋅ ) \log p(\text{a}_{t:t+H}|\cdot) logp(at:t+H∣⋅) 很难算;
- 但是 diffusion / flow matching 的训练目标(一个加噪 + 去噪的 MSE)在理论上可以看成是 log-likelihood 的一个下界(类似 ELBO 的味道)。
所以整体动作的 log-likelihood:
- 无法直接精确写成一个干净的 log;
- 他们用“离散 log-likelihood + 一个基于 flow matching 的二次误差损失”当作下界估计;
- 训练时就最大化这个下界。
1 a t : t + H ℓ a^ℓ_{t:t+H} at:t+Hℓ 的 log-likelihood 项
log p θ ( a t : t + H ℓ ∣ I t , o t , ℓ , ℓ ^ ) \log p_\theta(a^ℓ_{t:t+H}\mid I_t, \text{o}_t, \ell, \hat\ell) logpθ(at:t+Hℓ∣It,ot,ℓ,ℓ^)
- 就是“不带连续动作的”那一部分: 模型在给定 ( I t , o t , ℓ , ℓ ^ ) (I_t,\text{o}_t,\ell,\hat\ell) (It,ot,ℓ,ℓ^) 时,预测动作 token 序列 a t : t + H ℓ a^\ell_{t:t+H} at:t+Hℓ 的对数概率。
- 这是个标准的“序列分类 / LM”任务,可以用交叉熵训练。
2 flow matching 部分: a t : t + H η , ω \text{a}^{\eta,\omega}_{t:t+H} at:t+Hη,ω、 ω \omega ω、 η \eta η、 f θ f_\theta fθ、MSE
先看变量:
ω ∼ N ( 0 , I ) \omega \sim \mathcal{N}(0,I) ω∼N(0,I):
- 表示一段纯噪声动作序列;
- 可以理解为“diffusion 的 t=1 时的随机起点”。
η ∈ [ 0 , 1 ] \eta\in[0,1] η∈[0,1]:
- flow matching / diffusion 里的时间索引;
- η = 0 \eta=0 η=0 时完全是噪声; η = 1 \eta=1 η=1 时完全是数据;
- 实际训练里会从某个分布(例如均匀)采样 η \eta η。
a t : t + H \text{a}_{t:t+H} at:t+H:
- 真实动作片段(ground truth)。
a t : t + H η , ω = η a t : t + H + ( 1 − η ) ω \text{a}^{\eta,\omega}_{t:t+H}=\eta \text{a}_{t:t+H} + (1-\eta)\omega at:t+Hη,ω=ηat:t+H+(1−η)ω:
- 把“真实动作” a \text{a} a 和“噪声” ω \omega ω 按比例混合,
- 相当于在训练中取一个“介于噪声和数据之间”的中间状态;
- 这和 diffusion / flow matching 里“加噪过程”的思想一样。
f θ ( ⋅ ) f_\theta(\cdot) fθ(⋅):
flow / diffusion expert 的输出;
输入包括:
- 当前的“中间状态” a t : t + H η , ω \text{a}^{\eta,\omega}_{t:t+H} at:t+Hη,ω;
- 条件 ( I t , o t , ℓ , ℓ ^ ) (I_t,\text{o}_t,\ell,\hat\ell) (It,ot,ℓ,ℓ^);
输出是某种“预测量”,具体形式看附录 C,但可以理解为:
模型在这个时间 η \eta η 位置上,预测“流的方向 / 去噪向量”。
ω − a t : t + H − f θ ( ⋅ ) \omega - \text{a}_{t:t+H} - f_\theta(\cdot) ω−at:t+H−fθ(⋅):
- 这部分是某个理论上推导出的目标(与 score / 速度场有关),
- MSE ∣ ⋅ ∣ 2 |\cdot|^2 ∣⋅∣2 就是 flow matching 的训练损失。
综合起来理解:
把真实动作与噪声混在一起, 让模型学会:在这个中间时间点,该怎么“推”这段动作, 才能把噪声变成真实动作。 这个推的方向用 f θ f_\theta fθ回归,用二次误差训练。
α η \alpha_\eta αη 是一个权重系数:
- 可以随着时间 η \eta η 变化;
- 比如在接近数据端或接近噪声端时权重不同。
右边那一大坨的期望:
E η , ω [ log p θ ( a ℓ ∣ ⋅ ) ⏟ 离散动作LL α η ∣ ⋯ ∣ 2 ⏟ 连续动作的flow损失 ] \mathbb{E}_{\eta,\omega}[\underbrace{\log p_\theta(a^ℓ|\cdot)}_{\text{离散动作LL}} \underbrace{\alpha_\eta|\cdots|^2}_{\text{连续动作的flow损失}} ] Eη,ω[离散动作LLlogpθ(aℓ∣⋅)连续动作的flow损失αη∣⋯∣2]
→ 可以看成是:
离散动作 token 的 log-likelihood
减去
连续动作 flow matching 的 MSE 损失(带权重)。最大化这个东西,对应于:
- 让离散动作 token 预测更准(交叉熵更小,log-likelihood 更大);
- 同时让连续动作的 flow matching MSE 更小(去噪更准)。
而这整体被解释为联合动作分布的 log-likelihood 的一个下界。 所以 从优化角度来看:
训练目标就是:
最大化“动作 token 的 log-likelihood”
- 最大化“对连续动作的 flow matching 下界”(即最小化 MSE)。
在训练中,我们会随机省略优势指示器 I t I_t It,而不是微调损失权重 α α α, 这样我们既可以直接使用 I t = True I_t=\text{True} It=True 从策略中采样(对应式 (2) 中 β = 1 β=1 β=1), 也可以结合“有条件模型”与“无条件模型”实现 classifier-free guidance (CFG),使推理时能使用 β > 1 β>1 β>1。 细节见附录 E。
1 “随机省略 I_t”是怎么做的?
在训练时,有一部分样本会带着 I t I_t It 的文本:
- “Advantage: positive” / “Advantage: negative”
另一部分样本会故意把这个文本去掉:
- 也就是让模型学一个“不依赖 I t I_t It 的版本” → 无条件模型(w.r.t. I I I)。
和我们前面讲 CFG 时非常类似:
在 CFG 中,扩散模型同时学:
- 有条件版本: p ( x ∣ y ) p(x|y) p(x∣y)(给文本 y y y 条件);
- 无条件版本: p ( x ) p(x) p(x);
然后在推理时,把两者组合成一个带 stärk guidance 的新分布。
这里的 I t I_t It 就像一个额外条件(“这个动作是不是好/advantage positive”):
- 有 I I I → “有优势条件”的模型;
- 无 I I I → “不看优势的普通模型”。
2 推理时怎么用?
他们说有两种模式:
直接用 I t = True I_t=\text{True} It=True 来采样
- 这对应于理论里式(2)中 β = 1 \beta=1 β=1;
- 即:直接使用“带改进行为条件”的策略分布:
π ^ ( a ∣ o , ℓ ) = π ref ( a ∣ I , o , ℓ ) . \hat\pi(\text{a}|\text{o},\ell)=\pi_{\text{ref}}(\text{a}|I,\text{o},\ell). π^(a∣o,ℓ)=πref(a∣I,o,ℓ).- 在模型里,就是: 输入里加上文本 “Advantage: positive”, 让模型按这个条件生成动作。
用 CFG 方式构造更强的 guidance(β>1)
因为我们有“有 I I I版本”和“无 I I I版本”;
可以像标准 classifier-free guidance 一样,在输出层做线性组合:
- 大致类似:
p CFG ∝ p uncond 1 − β , p cond β p_{\text{CFG}} \propto p_{\text{uncond}}^{1-\beta}, p_{\text{cond}}^\beta pCFG∝puncond1−β,pcondβ
或在 logit 级别加权;这样就能实现“ β > 1 β>1 β>1”的更强引导(更偏向高优势动作)。
关键点:
通过“训练时随机省略 I t I_t It”,我们在一个单一的 π₀.₆* 模型里, 同时学到了:
- 不看优势的普通策略(unconditioned w.r.t. I)
- 看优势的“改进行为策略”(conditioned on I)。
推理时就可以:
- 要稳一点:用 β=1,只用 I_t=True 版本;
- 要更 aggressive:用 CFG 式组合,让 β>1,强行往“好动作”方向推。
这比在训练中直接调一个损失权重 α \alpha α 更灵活,也更接近扩散模型里常用的 CFG 习惯。
C. 奖励定义与价值函数训练
由于我们的目标是开发一种通用、可广泛应用的基于经验训练 VLA 的方法,因此我们采用了一种通用的稀疏奖励定义,该定义几乎可用于任何任务。对于每个 episode,我们都会获得一个标签,表示该 episode 是否成功。我们根据 episode 级别的成功标签来构造奖励,使得价值函数对应于距离成功完成该 episode 所需步数的“负数”。这等价于下面的奖励函数,其中 T T T 表示 episode 的最后一步,而 C fail C_{\text{fail}} Cfail 是一个较大的常数,用来确保失败的 episode 具有很低的价值:
r t = { 0 , if t = T and success − C fail , if t = T and failure − 1 , otherwise . (5) r_t = \begin{cases} 0, & \text{if } t = T \text{ and success} \\ -C_{\text{fail}}, & \text{if } t = T \text{ and failure} \\ -1, & \text{otherwise}. \end{cases} \tag{5} rt=⎩⎨⎧0,−Cfail,−1,if t=T and successif t=T and failureotherwise.(5)
用该奖励函数,我们训练价值函数,使其在成功的 episode 中预测“距离成功还需要的步数的负值”,而在失败 episode 中预测一个很大的负值。
奖励 r t r_t rt =
状态 奖励 r_t 成功并且是最后一步 0 失败并且是最后一步 (-C_{fail})(一个很大很大的负数) 其他所有中间过程 -1
在实践中,我们将预测出的价值归一化到 (−1, 0) 区间。 由于训练任务多样,不同任务的典型时长差异显著,因此我们根据每个任务的最大 episode 长度来对其价值进行归一化。
- 不同任务长度差异非常大 (折衣服可能 150 秒,开冰箱可能 30 秒,调咖啡可能 300 秒)
- 如果不归一化,不同任务的价值尺度完全不一样,模型难以学
所以他们用 该任务的最大 episode 长度 来归一化:
- 成功 → 0
- 在最开始的状态 → -1
- 失败 → -1(或更低)
这个归一化把所有任务拉到同一个区间,使得价值函数更稳定。
价值函数的输入包括与 π 0.6 ∗ π_{0.6}^{*} π0.6∗ VLA 相同的语言输入,并采用相同的架构设计,只是其 VLM 主干更小(670M 参数),同样由 Gemma 3 初始化(见图 3)。 为防止过拟合,我们还使用少量多模态网页数据对价值函数进行联合训练。 图 4 展示了价值函数在一些成功与失败 episode 上的可视化结果,更多可视化见附录 B 的图 13。
- 价值函数和策略网络共享相同的“视觉感知 + 语言理解”套路
- 但价值函数不需要输出动作,模型可以比策略小
- backbone 是 Gemma 3,但更小规模
价值函数输入:
- 当前图像 o t o_t ot(多视角相机)
- 当前机器人 proprioceptive state q t q_t qt
- 任务语言 l(如 “fold the laundry”)
价值函数输出:
- B=201 个“离散桶”(value bins)构成的分布 (这个在 IV-A 讲过,就是分布式价值函数)
- 多任务数据其实数量有限
- 价值函数容易记住特定场景导致过拟合
- VLM 对“视觉理解”的泛化能力很重要
- 加一点“外部网页视觉-语言数据”让 VLM backbone 更稳健

图 4:价值函数的可视化。 我们训练了一个多任务价值函数,用于预测“到达成功还需要的步数”,并按每个任务的最大长度将其归一化到区间 (−1, 0),其中 0 表示任务已经成功完成。 我们对价值函数在两个任务上的输出进行了可视化:左侧是一个成功完成的折叠任务,右侧是预训练数据集中一个未成功的操作任务示例。 红色部分表示价值的下降,绿色部分表示价值的上升;上方的图像展示了 episode 中对应时间步的画面帧。 该可视化表明,价值函数能够正确识别 episode 中出现的错误,以及任务推进的快慢程度。
D. 预训练、数据收集与从经验中学习
他们把整个训练流程分成两大阶段:
① 预训练阶段:先让大模型具备多任务能力 + 训练一个价值函数
② 经验阶段:用示范、自主执行、人工纠正构建数据集 → 用优势条件化反复提升策略
我们在预训练阶段所使用的数据混合方案大体遵循 π0.5 [5] 的训练流程, 包括网页上的视觉–语言数据、子任务 ℓ ^ \hat{\ell} ℓ^ 的预测,以及来自多种机器人平台的多任务低层动作预测。 值得注意的是,经过预训练后, π 0.6 ∗ π_{0.6}^{*} π0.6∗ 能执行的任务远超过第 VI 节评估中使用的那些任务。
网页视觉–语言数据(例如图像 + caption)
- 用来强化 VLM 的视觉理解能力
子任务预测数据(预测下一步该做什么,高层 planning)
- 例如: “put cup on table” → 下一步 “grasp cup”
机器人多平台的低层动作数据(joint angles / actions)
- 各种机器人做各种任务的动作轨迹
在预训练期间,我们首先使用相同的数据集训练价值函数,使其预测“完成任务成功所需步数的负值”。
价值函数 V(o_t, l) 的目标是预测“离成功还需要多少步(负号)”
- 越负 → 离成功越远
- 越接近 0 → 越接近成功
预训练阶段就要让价值函数会“看懂”这些任务。
随后,我们估计每个任务的“改进阈值” ϵ ℓ ϵ_\ell ϵℓ,用于确定基于优势的改进指示器 I t I_t It。我们将 ϵ ℓ ϵ_\ell ϵℓ 设置为该任务 ℓ ℓ ℓ 价值预测分布的 30% 分位点。
一个任务 ℓ(比如折衣服):
- 它的价值函数输出 V(o_t) 可能分布在 [-1,0] 区间
- 那我们如何判断 “一个动作算优势 positive”?
答案:
使用该任务价值分布的 30% 分位数 作为分界点
就是说:
- 价值比 30% 分位更高 → 算“好动作” → I_t = True
- 否则 → I_t = False
注意:
- 每个任务自己的分布不同,所以每个任务有自己的 εₗ
- 这样任务之间不会互相干扰
接着,我们在 VLA 训练过程中实时运行价值函数,以计算每个样本的 A π ref ( o t , a t , ℓ ) A^{π_{\text{ref}}}(\text{o}_t, \text{a}_t, \ell) Aπref(ot,at,ℓ),并基于 ϵ ℓ ϵ_\ell ϵℓ 得到 I t I_t It。 如第 V-A 节所述, I t I_t It 会作为额外输入提供给 π 0.6 ∗ π_{0.6}^{*} π0.6∗。 由于价值函数使用的是较小的 VLM 主干(670M 参数),其在线推理在 VLA 训练中几乎不增加额外成本。
- 策略 π_ref 产生一个动作 a_t
- 价值函数评估 V(o_t) 和 V(o_{t+1})
- 计算优势: A π ref ( o t , a t ) = r t + V ( o t + 1 ) − V ( o t ) A^{π_{\text{ref}}}(o_t,a_t) = r_t + V(o_{t+1}) - V(o_t) Aπref(ot,at)=rt+V(ot+1)−V(ot)
- 如果 A > εₗ → I_t = True
然后:
I_t 作为额外输入喂给 π₀.₆*
预训练结束后,我们对目标任务启动策略改进循环。 我们首先使用目标任务 ℓ 的示范数据 D ℓ \mathcal{D}_\ell Dℓ 来微调 π 0.6 ∗ π_{0.6}^{*} π0.6∗。 在此阶段,我们将 I t I_t It 固定为 True,这样能带来略好效果,因此该阶段相当于监督微调(SFT)。 这将得到初始策略 π ℓ 0 π_\ell^0 πℓ0,随后用它来收集更多数据,并加入到 D ℓ \mathcal{D}_\ell Dℓ 中。 其中一些 episode 完全由机器人自主收集,另一些则由专家远程监控,并在必要时进行干预以提供纠正。 这些纠正能示范如何避免灾难性失败,或如何从错误中恢复。 然而,仅靠人工纠正无法解决所有问题,因为在自主执行中插入干预是一种“打断式”事件, 即便是专家操作员也无法保证每次干预都质量一致,更无法改善一些行为的细微特征(例如整体速度)。 因此,纠正的主要作用是修复大的错误,并帮助克服探索困难, 但单靠它们无法提供理论上真正“最优”的监督 [7]。 回顾第 IV-B 节,我们对所有人工纠正动作强制设置 I t = True I_t=\text{True} It=True, 但除纠正本身外,整个 episode(包括自主部分与纠正部分)都可以加入数据集 D ℓ \mathcal{D}_\ell Dℓ。
第一步:用目标任务示范数据对 π₀.₆ 做一次 SFT(监督微调)*
为什么固定为 True?
因为示范数据来自人类 → 高质量 → 优势 positive → 自然应该标 True。
这样:
- 模型学习“专家应该怎么做”
- 得到初始策略 π ℓ 0 π_ℓ⁰ πℓ0
如:
- 折衣服任务 → π f o l d 0 π_{fold}⁰ πfold0
- 打开冰箱任务 → π f r i d g e 0 π_{fridge}⁰ πfridge0
第二步:用 π ℓ 0 π_ℓ⁰ πℓ0 收集更多数据(自主 + 人工纠正)
这里有三类数据:
- 机器人自主执行
机器人自己试 → 会犯错 → 会失败 → 这些数据仍加入数据集! 这是 offline RL 的关键。
- 专家远程监控并“插入纠正”
例如:
- 机器人朝错误方向抓 → 人类接管一下
- 机器人掉东西 → 人类快速接手补救
这些纠正动作用于告诉模型:
“在这种状态下应该这么救回来”
- 所有数据都纳入数据集 D ℓ D_ℓ Dℓ
包括:
- 自主部分(可好可坏)
- 纠正部分(强制 I t = T r u e I_t = True It=True)
- 整个完整 episode(包括前后)
原因:
这些数据共同构成“真实任务经验”,比单纯模仿示范更完整。
第三步:为什么人工纠正不够?
原文:
纠正只能修复大错误,无法解决细微行为,也无法给出真正最优监督。
例如:
- 人类能纠正机器人“方向错误”、“失败风险”,
- 但无法对机器人动作的速度、最优路径、细粒度策略给出完整示范
所以:
人类不是最优策略 → 不能只靠人类
这正是 RECAP 的目标:
让机器人自己通过价值函数 → 自己判断哪些动作比其他动作好 → 从经验中学更“细致”的行为
第四步:人工纠正动作 I t I_t It 一律设为 True
原文:
对所有人工纠正动作 I t = T r u e I_t = True It=True, 因为我们假设这些纠正动作都是高质量的。
这样模型知道:
- 这些动作确实是“比机器人自己更好”的动作
- 属于高价值行为
第五步:数据收集后 → 再次微调价值函数 + 策略
步骤:
- 用全部 D ℓ D_ℓ Dℓ 再微调价值函数(使它适配最新数据)
- 用新的价值 → 重新计算 A A A、 I t I_t It
- 用优势条件化(公式 (3))微调策略
注意:
价值函数与策略均从预训练 checkpoint 开始,而不是前一轮微调结果。
原因:
- 防止模型“逐轮漂移”,越训越糟
- 预训练 checkpoint 是非常“稳定”的起点
最后:可以重复这个循环,但通常一次就够
原文:
在实践中一次迭代就能显著提升性能。
因为 π₀.₆ 的基础能力已经很强,只要加一点任务特定经验 + 价值驱动,就能快速变得优秀。
在数据收集结束后,我们使用所有任务数据微调价值函数, 随后使用更新后的 I t I_t It 微调策略,过程与预训练一致。 价值函数与策略均从预训练 checkpoint 开始微调,而不是使用上一轮迭代的模型。 这样做能有效避免模型在多轮训练中的“漂移”, 尽管持续从上一模型微调也可能获得不错结果。 根据需求,我们可以多次重复这一流程, 但在实践中,即使只有一次迭代,也往往能显著提升性能。
最终整体总结(非常重要)
下面我用一段完整的流程总结整节内容:
预训练阶段:打好基础
- 用海量网页视觉–语言数据 + 各种机器人数据训练 π₀.₆
- 同时训练价值函数 V(预测“离成功还差多少步”)
- 为每个任务 ℓ 计算价值分布的 30% 分位点 εₗ
- 价值函数实时输出优势 A,从而给数据自动加标签 I_t
经验阶段(最关键)
STEP 1:用示范数据微调 π₀.₆*(全部 I_t = True) 得到初始策略 π_ℓ⁰
STEP 2:机器人执行任务并收集经验:
- 自主执行(会犯错)→ 全部加入数据
- 专家纠正(I_t=True)→ 加入数据
- 整个 episode(包括出错前后的全部数据)→ 全加入 D_ℓ
STEP 3:重新微调价值函数(适配新数据)
STEP 4:用新价值函数得到新的 I_t → 微调策略 (公式 (3):优势条件化)
STEP 5:如有需要,重复
浙公网安备 33010602011771号