论文精读 · Harness for Robotics · 评估与反馈

TT-VLA

On-the-Fly VLA Adaptation via Test-Time Reinforcement Learning

在部署时边执行边更新策略:每走一步,冻结的进度估计器 VLAC 给当前画面打一个 0–1 的任务进度分,相邻两步的差就是奖励。每 8 步用去掉价值函数和熵项的 PPO(γ = λ = 0,优势就是这一步的奖励)更新一次 LoRA。每个回合开始时重新载入原始权重。

  • 密苏里大学堪萨斯城分校 · 港科大(广州)· 美国海军研究实验室 · Lamar · Meta AI · RIT
  • arXiv 2601.06748v3
  • v1 2026-01-11 · v3 2026-04-07
  • arXiv(代码称录用后公开)
示意:上为进度 pt,中为奖励 rt = pt − pt−1,下为每 8 步一次的 LoRA 更新。曲线是构造的,不是实验数据。

做了什么

把 PPO 压到最简:不学价值函数(单回合数据不够、时间也不够),不加熵正则(测试时要尽快贴合当前任务,不要探索),优势直接取即时奖励。奖励来自现成的 VLAC 进度估计器,不需要人工标注或环境成功信号。

放在 Harness 里看

典型的「评估与反馈」:执行后由外部评价器给出稠密信号,直接用来改策略参数,在一个回合之内形成闭环。和其他三篇不同,它不改任务结构,只在原 VLA 外面套一层在线学习。

结果

ManiSkill3 上 15 个未见任务、4 个 VLA(Nora、OpenVLA、OpenVLA-RL、TraceVLA),三个维度的平均成功率提升 0.8–3.8 个点。Franka 真机上 OpenVLA 三类任务分别 +3.3、+13.3、+13.3 个点(每类 30 次)。

最该留意的

提升大多小于单任务 240 次试验的统计误差。主表至少有 3 个基线数字两位数字颠倒、1 个 Δ 算错,用分项均值可以反推出正确值。没有任何延迟或算力数字。更新间隔、学习率、LoRA 秩都是从一组候选里选的,选择方式没说。

问题 · §1–2

训练完就冻结的 VLA,遇到没见过的情况只能硬扛

VLA 要么用监督微调训练,要么在训练阶段做强化学习(RL4VLA、SimpleVLA-RL、VLA-RL 等),两者都是「训练和部署分离」:一旦部署,参数不再变化。论文要解决的是部署后、在单个回合内,遇到分布偏移(物体被挪走、桌面换了、指令换了说法)时让策略自己调整。

语言和视觉模型里已有测试时训练(TTT):TLM 最小化输入困惑度,TTRL 用多数投票构造伪标签做 RL。论文认为它们不能直接搬到 VLA:自监督目标关注表征一致性,不关注动作好坏;多数投票不反映动作质量。同期的 EVOLVE-VLA 也用任务进度做测试时奖励,但用 GRPO,需要对同一状态采样多条动作,真机上无法复位,算力开销也大。

原文 Figure 1左:TT-VLA 以「插头」的方式接到现成 VLA(OpenVLA、Nora、TraceVLA……)上,用环境给出的奖励和 VLA 的动作闭环更新。右:同一句指令「拿起勺子」,原模型失败(上),适配后成功(下)。图里的插图是示意。

方法 · 稠密进度奖励 · §3.2

奖励 = 进度的增量

把操作建模为 POMDP,策略 at ~ πθ(at | ot−H+1:t, l)。任务进度 pt ∈ [0, 1] 由一个冻结的进度估计器从观测历史和指令给出,每步奖励是它的差分:

pt = Φ(o0:t+1, l),    rt = pt − pt−1(6–7)

Φ 用的是 VLAC(Vision-Language-Action-Critic),一个预训练的多模态进度回归器。作者列出三个好处:推理时不需要外部监督;每一步都有反馈,可以在回合中途修正;推进时得正奖励,倒退时得负奖励,抑制来回摆动。

稀疏的成功/失败奖励在训练阶段可以用(能重放、能复位),但测试时要等回合结束才知道,回合内无法修正。

解读整个方法的上限由 VLAC 决定

差分奖励把估计器的每一点误差都直接变成梯度方向。如果 VLAC 在某个场景下把「夹着香蕉远离盘子」误判为进度增加,策略就会被推向错误方向。论文没有报告 VLAC 在这些任务上的估计质量,没有说明用的是哪个规模的 VLAC,也没有比较其他进度估计器。Φ 的输入写成 o0:t+1(含下一帧),算法 1 里又写成 o0:t,具体用了多长的历史也不清楚。

方法 · 无价值函数的 PPO · §3.2 · 算法 1

只留下裁剪项,优势就是即时奖励

标准 PPO 目标有三项:裁剪策略损失、价值损失、熵正则:

LPPO(θ) = 𝔼t[ LCLIPt(θ) − c1 LValuet(θ) + c2 Lentropyt(θ) ](3)

TT-VLA 取 c1 = c2 = 0,再令 GAE 的 γ = λ = 0,于是:

L(θ) = 𝔼t[ min( ρt(θ) Ât, clip(ρt(θ), 1−ε, 1+ε) Ât ) ],   Ât = rt,  ε = 0.2(8–9)

为什么不要价值函数

测试时只有一个回合的数据,不够估计回报;更新要在线完成,没有时间同时训练一个价值网络。

为什么不要熵项

熵项鼓励探索,测试时的目标是尽快贴合当前任务,探索在真机上还可能有风险。

为什么 γ = λ = 0

只看每个动作对即时进度的贡献,不估计长期回报。论文的理由是长期回报在这里不可靠,会给无效动作过于乐观的优势。

算法 1 的流程(附录 G):

for 每个回合:
    # 每个回合开始都重新载入预训练权重,适配不跨回合累积
    载入 π_θ;  p_0 ← 0;  缓冲区 B ← ∅;  环境复位
    for t = 0 … T:            # T = 160 步
        采样 a_t ~ π_θ,记下 log π_old(a_t),执行
        p_t ← Φ(o_0:t, l);  r_t ← p_t − p_{t−1}
        B 存入 (o, a_t, r_t, log π_old)
        if t mod K == 0:       # K = 8 最好
            对 B 中样本算 ρ = exp(log π_θ − log π_old)
            L = Σ min(ρ·r, clip(ρ, 0.8, 1.2)·r)
            θ ← θ + η ∇L;  清空 B   # 只更新 LoRA(秩 16 或 32)

一个回合里的奖励、优势和更新

进度曲线是构造的示意;更新间隔对应的成功率来自表 4

更新间隔 K

方法 · 理论分析 · §3.3

为什么不能把价值函数设成「剩余进度」

论文给出一个命题、一个推论和一个引理。命题:若奖励是进度差分、价值取剩余进度 V(st) = 1 − pt−1、γ = 1,则 TD 误差恒为零:

δt = (pt − pt−1) + γ(1 − pt) − (1 − pt−1) = (γ − 1)(1 − pt)命题 1 · 推论 1

γ = 1 时 δt = 0,策略梯度没有信号;0 < γ < 1 时 δt < 0,优势被系统性压低。引理则说明 λ = 0 时 Â = δ,γ = 0 且 V ≡ 0 时 Â = r。

拖动看看 TD 误差

按命题的假设计算:V = 1 − pt−1

解读这些结论是代数恒等式,不是对方法的证明

命题只说明「如果价值函数恰好等于剩余进度,TD 误差就和动作无关」,也就是这个特定的价值函数会让奖励塑形完全抵消。它并不说明学到的价值函数会收敛到这里,也不说明 γ = 0 是好的选择。引理是 GAE 定义的直接展开。真正支持 γ = λ = 0 的证据是图 4 的实验对比(下文),差距在 1–3 个点。

实验设置 · §4.1 · 附录 C

沿用 RL4VLA 的 15 个未见任务

  • 仿真:ManiSkill 3,WidowX-250S 机械臂,单张 640×480 RGB + 指令,输出末端笛卡尔增量和二值夹爪命令。训练分布:16 种物体、16 种桌面,指令模板「put O on R」,接收物是黄色盘子。用 16,400 条自动生成的示范做预热。
  • 15 个未见任务,分三个维度:Execution(物体与接收物位置范围扩大、机器人初始位姿随机、第 5 步把物体瞬移到新位置);Vision(5 种新桌面、动态纹理叠加在物体/接收物/机械臂上 0.3 或 0.5 透明度、动态噪声叠加在全图);Semantics(9 种新物体、16 种新接收物、16 种新指令模板、多物体、多接收物、干扰接收物)。
  • 评测:每个任务 80 次 × 3 个随机种子 = 240 次,每回合固定 160 步。
  • 适配超参:LoRA 秩 ∈ {16, 32},学习率 ∈ {1e-5, 5e-5, 1e-4},AdamW,裁剪 ε = 0.2,每 8 步更新。RTX 6000 Ada GPU。
  • 基座模型:Nora(Qwen-2.5-VL-3B + FAST+,在自采的 ManiSkill3 数据上再训 50K 步);OpenVLA(Llama-2-7B,预热 10K 步);OpenVLA-RL(RL4VLA 训练阶段 RL 后的 OpenVLA);TraceVLA(视觉轨迹提示)。全是离散动作 token 的自回归模型。
  • 真机:Franka Research 3,单张 500×480 RGB,OpenVLA 为基座,9 个拾放任务(执行/视觉/语义各 3 个),每个 10 次。
原文 Figure 2(a) 输入初始观测和指令「把烧烤酱瓶放到盘子上」;VLA 逐步输出动作,冻结(雪花)的进度估计器 Φ 给出 p0…pT−1,差分得到稠密奖励 r,进入无价值 PPO 损失,对 VLA 做测试时 LoRA 更新(火焰表示可训练)。(b) 两个雷达图展示 15 个任务上的提升,论文没有标明对应哪两个模型。

解读为什么只支持离散 token 的 VLA

附录 A 解释:flow matching 或扩散动作头没有可算的单步对数似然 log π(a|s),PPO 的概率比无法计算;动作要经过几十步去噪,内部的随机链和环境时间对不上;末端 MLP 头基本是确定性的。所以 π0、π0.5、GR00T 这类主流连续动作 VLA 都不在适用范围内,论文把它列为未来工作。

主结果 · 表 1

60 个格子全部不降,维度平均提升 0.8–3.8 个点

各维度平均成功率:基座 vs 加 TT-VLA

每对柱子左为基座,右为加 TT-VLA。数字取自表 1 的 Avg. 列。

基座模型+ TT-VLA

15 个任务的绝对提升 Δ(百分点)

颜色越深提升越大。悬停看原始成功率。虚线框是我们核对后认为表中数字有误的格子,见下方疑点。

原表数字(表 1,成功率 %)

论文强调「在所有基线和任务类别上一致提升」。Nora 在 15 个任务里 14 个有提升,相对提升 5.26%–44.4%;最大的绝对提升是 Nora 的 Table(+6.66)、OpenVLA 的 M Recep(+9.17)和 Obj. Rep.(+6.67)。基线越强提升越小:OpenVLA-RL 的三个维度只有 +2.64 / +1.75 / +1.55。

疑点四处数字对不上,三处是两位数字颠倒

每格是 240 次试验的成功率,应为 1/240 ≈ 0.417% 的整数倍。用表中给出的 Δ、相对提升和维度均值反推,可以定位到错误:

位置表中反推应为依据
Nora · Table(基座)39.7237.92Δ = 6.66、相对 17.56% 和 Vision 均值 29.92 都只与 37.92 吻合
OpenVLA · Table(基座)54.8554.58Δ = 2.50 和 Vision 均值 39.83 只与 54.58 吻合;54.58 = 131/240
Nora · Instruct(基座)39.8539.58Δ = 2.92 和 Semantics 均值 23.57 只与 39.58 吻合
OpenVLA · Instruct(Δ)+0.28+0.5950.17 − 49.58 = 0.59;相对提升 1.18% 也对应 0.59

另有几个格子(如 OpenVLA M-Obj. OOD 的 32.05、TraceVLA Robot Pose 的 21.50、OpenVLA Noise-s 的 31.33)不是 1/240 的整数倍,但和均值一致,可能是种子间不等量或四舍五入方式不同。这些都不改变结论的方向,但说明表格是手工整理的。

疑点提升普遍小于统计误差,却没有一个格子下降

成功率在 30%–50% 附近时,240 次试验的标准误约 3 个点,两组之差的标准误约 4.5 个点。表 1 里 60 个 Δ 中 55 个小于 4.5。如果两组独立评测,在真实效应只有 1–3 个点时,理应看到不少负的 Δ;实际上 60 个格子没有一个为负(4 个为 0)。一种可能是两组使用了相同的环境种子配对评测,使噪声大部分抵消。论文没有说明评测是否配对,也没有报告方差或显著性。

诊断实验 · §4.4–4.5 · 图 4 · 表 4–5

三个代表任务上的对照

诊断实验在 Nora 和 OpenVLA 上,各用一个代表任务:Execution 用 Robot Pose,Vision 用 Table,Semantics 用 Object(附录 D)。下面三张图都加上了不做任何适配的基座分数作参照,它来自表 1。

更新间隔 K(表 4)

每 K 个环境步更新一次。灰色虚线是基座(不适配)的分数。

K = 8 在 6 个组合里 5 个最好(另一个与 K = 4 并列)。值得注意的是 K = 1:OpenVLA 三个任务都低于不做适配的基座(40.42 vs 41.25,54.12 vs 54.58,43.33 vs 45.00)。也就是说,更新太频繁会让策略变差。

优势估计:GAE vs 即时奖励(原文 Figure 4)

GAE:γ = 0.99,λ = 0.95,截断长度 8。数字取自原图矢量 PDF 的柱顶标注。

基座(不适配)GAETT-VLA(Â = r)

和语言模型的测试时训练方法比(表 5)

TLM:最小化指令 token 的负对数似然,每 8 步更新。TTRL:每步采 8 个动作 token 多数投票当伪标签,匹配得 1 分,每步更新。两者都用 LoRA 秩 32、学习率 1e-4。

基座(不适配)TLMTTRLTT-VLA

解读加上「不适配」这根柱子,图的意思变了

论文的对比只有 GAE vs Ours、TLM / TTRL vs Ours,没有画出不做适配的基座。补上之后可以看到:GAE 在 Nora Semantics(15.00 vs 17.08)和 OpenVLA Execution(40.42 vs 41.25)上低于基座;TLM、TTRL 在 OpenVLA 的三个任务上全部低于或等于基座。也就是说,大多数测试时更新方式在这里是有害的,TT-VLA 是少数能稳定不掉分的设置之一。这一点比「Ours 最好」更有信息量,也说明测试时更新本身有风险。

疑点超参数在测试任务上选择

K 的消融直接在测试任务上做,选出的 K = 8 用于主表;学习率从三个候选里选、LoRA 秩从两个候选里选,论文没说按什么选、是否每个模型或任务单独选。如果是按测试成功率挑的,表 1 的提升里含有选择偏差。另外,TTRL 被引用为 hu2025test,与 TLM 是同一个引用键,属于引用错误。

真机 · §4.3 · 图 3、5

Franka 上三类任务,每类 30 次

原文 Figure 3三列是香蕉、胡萝卜、茄子放到盘子上;三行分别对应 Execution(不同机器人初始位姿)、Vision(深色背景)、Semantics(换盘子)。右侧柱图:OpenVLA 36.7 → 40.0(+3.3)、20.0 → 33.3(+13.3)、56.7 → 70.0(+13.3)。注意三张柱图的纵轴都是截断的。

同一份数字,纵轴从 0 开始

每类 3 个任务 × 10 次 = 30 次。+3.3 是 1 次成功,+13.3 是 4 次。

OpenVLA+ TT-VLA
原文 Figure 5「把香蕉放到盘子上」,按行从左到右。第二行末夹爪带着香蕉越过了盘子,第三行回到盘子上方并放下。论文把这次修正归因于稠密进度奖励带来的快速调整。
原文 Figure S1另外三次放香蕉。第一行先放错位置、重新抓起再放好;第二行把香蕉带到盘子后方后改正方向;第三行先越过盘子右侧,再调整放下。

疑点真机的证据很薄

  • 附录 C 写执行类任务是「香蕉、柠檬、苹果」,图 3 里却是香蕉、胡萝卜、茄子。
  • Execution 类只差 1 次成功;三张柱图的纵轴都从非零截断(如 30–42),视觉上把差距放大了几倍。
  • 案例里的「修正」无法归因:VLA 本身采样就有随机性,没有同一初始状态下不适配的对照回合。
  • 没有报告真机上每步的耗时:每步要跑一次 VLAC,每 8 步要对 7B 模型做一次 LoRA 反向传播。

读懂它

这篇真正说明了什么

关键 insight

1. 外部评价器可以直接变成梯度

不用环境的成功信号、不用标注,只用一个现成的进度估计器就能构造出每步奖励。这是「评估 → 反馈 → 修正」最直接的一种实现:评价信号不经过任何决策层,直接更新动作策略的参数。

2. 测试时更新需要非常保守

每步更新会掉到基座以下,TLM、TTRL 也大多掉分。TT-VLA 能稳定不掉,靠的是三件事:裁剪比、LoRA、每回合重置。提升小,但至少不伤害原模型。

3. γ = 0 把 RL 变成了「奖励加权的行为克隆」

优势就是这一步的进度增量,目标函数相当于:让刚才推进了进度的动作更可能出现,让倒退的动作更不可能出现。没有信用分配,也没有对未来的估计,所以更像在线的过滤式模仿。

4. 适配不跨回合

每个回合都从原始权重开始,只有 160 步、最多 20 次更新可用。它解决的是「这一回合里出了状况」,不是「部署后越用越好」。论文结尾说「迈向自我改进的 VLA」,但实验设置并不支持跨回合的累积改进。

容易误解的地方

  • 「相对提升 44.4%」是从很低的基数算出来的(Nora Obj. Rep. 7.50 → 10.83,在 240 次里多了 8 次成功)。绝对提升才是更合适的读法。
  • 「无需外部监督」指的是不需要人类或环境的奖励,但需要一个预训练好的进度估计器 VLAC,它本身是用大量机器人数据训练的。
  • 「Mid-episode reposition」任务在第 5 步瞬移物体,而 K = 8 时第一次更新发生在第 8 步,适配的作用是之后的调整。
  • 雷达图(图 2b)和真机柱图的坐标都不是从零开始,视觉差距比数值差距大。

FAQ

每 8 步一次更新,每次用多少数据?

缓冲区里只有最近 8 步的 (o, a, r, log π_old),更新后清空。按算法 1,每次只做一步梯度更新。8 个样本、奖励都是很小的进度差,梯度噪声很大,这也是为什么需要裁剪和小学习率。

OpenVLA 每步输出 7 个动作 token,PPO 的概率比按什么算?

论文没有说明。自回归 VLA 的一个动作对应多个 token,log π(a|s) 通常取这些 token 对数概率之和,但论文没写,也没说 Nora 的 FAST+ 序列如何处理。

和 EVOLVE-VLA 有什么区别?

两者都用任务进度做测试时奖励。EVOLVE-VLA 用 GRPO,需要对同一状态采样一组动作再比较,真机上无法复位,算力开销大。TT-VLA 只用实际执行的那条轨迹,代价是没有组内基线、方差更大。论文没有和 EVOLVE-VLA 做实验对比。

为什么强基线(OpenVLA-RL)提升更小?

OpenVLA-RL 已经在训练阶段用 RL 优化过,成功率在 64–90%,剩余空间小;论文没有给出解释。另一种可能是 VLAC 的进度估计在接近完成时区分度较低,奖励信号更弱,但这没有被检验。

局限与疑点

作者承认的,和我们读出来的

论文自己提到的

  • 只适用于离散 token 的 VLA,扩散/flow matching 动作头需要后续扩展(附录 A、K)。
  • 测试时在线更新可能带来意外或不安全的行为,真机部署需要动作约束、终止条件、保守的更新和人工监督(附录 J)。
  • GRPO 式采样在测试时不现实(附录 F)。

我们读出来的

  • 疑点表 1 有 3 处数字颠倒、1 处 Δ 算错。
  • 疑点提升大多小于统计误差,却没有一个负值;未说明是否配对评测,没有方差。
  • 疑点K、学习率、LoRA 秩在测试任务上选择,选择方式未披露。
  • 疑点真机任务名称前后不一致;纵轴截断;Execution 类只差 1 次。
  • 没有任何延迟、吞吐或算力数字;VLAC 的规模和准确度未报告。
  • 每回合重置权重,适配不累积,和「自我改进」的叙述不符。
  • 理论部分是代数恒等式,没有收敛性或改进保证。
  • TTRL 引用错误;没有和 EVOLVE-VLA 实验对比。

放到专题里看

评价信号最「底层」的一种用法

在 Harness for Robotics 专题里,评估与反馈指在执行前或执行后引入显式的评价信号,用来修正计划、更新状态或调整策略。四篇里,TT-VLA 是唯一一篇用评价信号去改模型参数的。

TT-VLAτ₀-VLAMotorMindACoT-VLA
评价器VLAC 进度估计器(冻结)世界模型 + 价值模型(Qwen3.5-9B 微调,5 级打分)同一个通用 VLM(Verifier / Monitor)+ 实测状态无
评价时机执行后,每一步执行前,对候选子任务的想象结果执行中(并行)和执行后—
评价的对象刚执行的低层动作尚未执行的高层子任务子目标是否达成—
反馈改变什么LoRA 参数(回合内)选哪个子任务继续 / 停 / 重试 / 重规划—
能否撤销每回合重置不执行就不产生后果只能事后补救—
  • 和 τ₀-VLA:两者是「评估与反馈」的两端。τ₀ 在执行前评价(用想象的后果避免错误承诺),作用在子任务层;TT-VLA 在执行后评价,作用在动作层。τ₀ 的作者在引言里明确说,执行后才发现错误时,「重规划可以响应,但无法收回失败承诺的代价」。TT-VLA 正是在承诺之后修正。
  • 和 MotorMind:都把「进度」当反馈,但 MotorMind 的反馈是离散决策,不改模型;TT-VLA 的反馈是连续梯度。MotorMind 的诊断显示通用 VLM 判断进度的准确率只有 43–76%,这提醒我们 TT-VLA 依赖的进度估计器同样可能不可靠。
  • 和 ACoT-VLA:ACoT 用的是 flow matching 动作头,按 TT-VLA 附录的说法,目前无法直接套用它。

术语表

读这篇会遇到的词

展开术语表
TTT
Test-Time Training,测试时训练:在推理阶段用无标签的测试数据更新模型。
VLAC
Vision-Language-Action-Critic,预训练的多模态模型,本文用它回归任务进度。
PPO
近端策略优化,用裁剪的概率比 ρ 限制每次更新的幅度。
GAE
广义优势估计, = Σ(γλ)l δt+l;γ 为折扣,λ 为平滑参数。
value-free PPO
本文的变体:去掉价值损失和熵项,γ = λ = 0, = r。
LoRA
低秩适配,只训练插入的低秩矩阵,本文秩 16 或 32。
RL4VLA
研究 RL 对 VLA 泛化影响的工作,本文沿用其 ManiSkill3 任务设置,OpenVLA-RL 来自它。
TLM / TTRL
两种语言模型的测试时方法:最小化输入困惑度 / 多数投票伪标签做 RL。
Obj. Rep.
Mid-Episode Object Reposition,第 5 步把物体瞬移到新位置。
Texture-w / -s,Noise-w / -s
动态纹理或噪声以 0.3(弱)/ 0.5(强)透明度叠加。