VLA 把「放进碗里」绑到错物体:留出种子上 27/128,改一次权重就到 106/128
机器人策略有一类失败特别让人难受:它明明会做这个任务,只是在某一步「理解错了」。你让它「先把方块放进碗里,再放香蕉」,它抓起方块、抬起来几厘米,然后松手——离碗还有半米。你把同一句话换个说法,它就成了。
这篇论文问的是一个很窄但很实际的问题:如果不改指令、不重训、不收集示范、也不加 adapter,能不能只改权重,把这个「读错」修掉?作者给出的答案是能,而且给的是一个闭式解——不需要梯度,不需要优化器,只需要一次激活采集和几次矩阵运算。
先把结论摆在前面,免得读者被后面的数字绕晕:
- 被修的对象是一个零样本的
π0.5DROID 检查点,约 3.35B 参数,在 16 个 RoboLab 任务上从没训练过。 - 修的动作发生在 VLM 的 17 层 MLP 下投影上,一次闭式更新,秩不超过 72。
- 128 个留出种子上,成功率从 27/128 涨到 106/128,81 个起点被修好、2 个被弄坏,
p = 7.2 × 10⁻²²。 - 同样大小、同样层、同样奇异值的随机方向更新,只拿到 9/64,和未编辑策略的 13/64、9/64 一个水平。
- 代价不是钱,是「你得先找到一个管用的说法」——论文把这条写成了方法的前提,也写成了它的边界。
这篇解析会按「问题 → 方程 → 参数位置 → 样本与成本 → 结果 → 边界 → 局限 → 落地」走一遍,凡是论文没做的对照,我会明确标出来。

图 1|同一个留出起点(90002)在未编辑与编辑后策略下的四个同步控制步:上排未编辑策略在抓起方块后三步就松手,下排编辑后策略一路握到碗上方,指令文本一个字没改。
一分钟速览
- 失败类型:语言绑定错误(language binding)——抓对了东西,但把目的短语绑到了另一个物体上。指令说「方块然后香蕉进碗里」,它在握着方块的时候认为「该进碗的是香蕉」。
- 诊断手法:把 21 条已经录下来的「过早松手」决策在固定图像、固定机器人状态、固定流匹配噪声的条件下重放,只换指令文本。改掉方块的名字,21 条全部照旧松手;把「in the bowl」挪到方块后面,只剩 1 到 3 条。
- 方法:把「管用的那个说法」在每一层 VLM 上造成的残差增量,当成值矩阵;把原句在该层的 MLP 下投影输入,当成键矩阵;解一个正则化最小范数方程,把键映射到值。
- 编辑位置:
language.blocks.00–16.mlp.linear,每层 16,384 维到 2,048 维的那一块。全量编辑改动 450,468,837 个存储值,占 13.4%。 - 主结果:128 个留出种子上 27/128 → 106/128,+61.7 个百分点(95% 区间 52.3–70.3),Wilson 区间 75.3–88.4% 对 14.9–29.0%,两者不重叠。
- 更小的版本:只用 32 个图像格子的键、只改 8–16 层,秩不超过 32,低秩因子存下来 5.3M 参数(0.16%),留出 102/128 对 19/128。
- 副作用:同一条编辑原封不动跑到另外 15 个任务上,眼镜和「方块放碗左边」两个任务显著变好,其余 13 个任务没有可测差异(全部
p ≥ 0.12)。 - 边界:感知混淆、缺技能、接触物理、夹爪阈值这四类失败,编辑全部无效;七个盲编辑只有一个通过留出评分。
误读长什么样:把「放进碗里」绑到了错的东西上
这一节把失败本身拆开。作者用的例子是 RoboLab 里的「方块然后香蕉进碗」任务,指令原文是 Put the cube then the banana in the bowl。
一个动作早了三次控制步
未编辑策略在这个任务上的表现有一个很干净的结构:它先去拿方块(64 次里 63 次),抓起来,抬几厘米,然后在还没到碗的时候松手。作者给这个动作起了名字,叫过早松手(premature release)。而只要方块真的先到了碗里,这一局基本就成了——九次里大约七次成功。
这两句话合起来说明一件事:技能在。策略会抓、会搬、会放,缺的只是「什么时候该松手」这一个判断。这也是后面所有讨论的前提:如果技能不在,改权重是没用的。
论文给的第一个数字是 64 局里成功 9 局。这个数字和后面主结果里的 27/128 不是同一批种子,论文在讲噪声地板时也交代了未编辑策略自己的波动范围:同一套权重,不同留出批次上从 5/64(7.8%)到 27/128(21.1%)都出现过。这一点很重要,后面讲噪声地板时会再回来。
把指令换掉、权重不动,21 条决策里 19 条不再放手
真正把「这是读错」这个判断立住的,是重放实验。作者从录制的决策里挑出 21 条「过早松手」,在图像、机器人状态、流匹配噪声全部固定的条件下重放,只改指令文本。结果:
- 原句:21/21 仍然松手。
Put the rubiks cube then the banana in the bowl(只改了方块的名字):21/21 仍然松手。Put the banana then the cube in the bowl(换顺序):3/21 松手。Put the cube in the bowl then the banana(把目的短语挪到方块后面):3/21 松手。Put the cube in the bowl then put the banana in the bowl(显式重复目的短语):2/21 松手。Put the cube in the bowl(只说第一步):1/21 松手。
这个对照表的设计很讲究。改名字不影响,说明问题不在「认不出方块」;换顺序和挪短语都大幅改善,说明问题在目的短语和哪个名词绑定。作者由此把显式重复的那个说法叫已知好指令(known-good instruction):权重一个字没动,闭环成功率从 3/32 变成 22/32,20 个被修好、1 个被弄坏。
这句话值得单独拎出来:同一个网络、同一批种子、同一套权重,只因为把话说全了,成功率从 9.4% 变成 68.8%。这不是「模型不会」,这是「模型读错了」。
一个注意力头里的绑定错误
论文还给了一个微观证据:在 VLM 的第 1 层第 1 个注意力头里,目的词(bowl 那一类)对相邻名词的注意力是 0.69,对第一个名词的注意力是 0.02。
这个数字不能过度解读——它只是一个头、一层、一个样本上的观察,作者自己也只把它当旁证。但它和图 2 的重放表指向同一个结论:错误发生在「指令怎么被读进表征」这一步,而不是发生在动作生成那一步。这个定位直接决定了后面编辑该加在哪里。

图 2|上半部分是改写指令、权重不动时 21 条记录决策里还剩几条松手;下半部分是各类权重编辑按建造顺序的结果与变体,右侧是闭环成功率(编辑后/未编辑)。
闭式解:解的是「一组键到一组值」的最小范数方程
这一节是全文最技术、也最值得慢慢看的部分。结论先说:它解的不是「让输出变对」的优化问题,而是「让某一层的输入-输出关系,从原句的样子变成好指令的样子」的线性方程组。
π0.5 的结构与被编辑的张量
π0.5 由两部分拼起来:一个 18 层的 PaliGemma 视觉语言模型,加一个 18 层的 Gemma 动作专家。VLM 吃两路 224×224 相机的图像 token、指令 token 和机器人状态 token,注意力是双向的,所以图像 token 能看到指令。动作专家通过注意力读 VLM 的键和值,用流匹配产出 15 步的动作块,里面含 7 个关节命令和一个夹爪命令,夹爪在 0.5 处二值化。
编辑只动 VLM 里的一块:language.blocks.00–16.mlp.linear,也就是第 0 到第 16 层 MLP 的下投影,每一层把 16,384 维隐特征压到 2,048 维的残差流上。动作专家、动作头、视觉塔都不碰。
键和值分别是什么
这是全文最容易被略过、但决定成败的一步。作者在每一层构造 72 个键:
- 40 个键落在两个 prompt 共有的位置上:序列起始、
Task:这个标记、以及机器人状态 token。 - 32 个键落在图像格子上:两路相机各 16 个。
每个键的定义是「原句下、该层 MLP 下投影的输入」,在 6 条记录下来的过早松手决策上取平均。值则是「好指令下该位置的残差增量」减去「原句下该位置的残差增量」,逐层算。
于是每一层有一对矩阵:Kℓ 是 72 × 16,384,Vℓ 是 72 × 2,048。目标是找一个 ΔWℓ,让 Kℓ ΔWℓ ≈ Vℓ。
方程本身
写成闭式解就是标准的正则化最小范数更新:
ΔWℓ=Kℓ⊤(KℓKℓ⊤+λI)−1Vℓ \Delta W_\ell = K_\ell^{\top}\left(K_\ell K_\ell^{\top} + \lambda I\right)^{-1} V_\ell ΔWℓ=Kℓ⊤(KℓKℓ⊤+λI)−1Vℓ
这里的 Kℓ 是键矩阵、Vℓ 是值矩阵,λ 是正则项,取 10⁻³ · tr(KℓKℓᵀ) / 72,也就是按键的尺度自动定标;I 是 72 维单位阵。因为求逆的是 72 × 72 的小矩阵,整个解只在每层算一次。
作者明确交代了来源:这是语言模型里改写存储关联用的多键闭式解,出自 MEMIT 与 ROME 那条线。它和上下文蒸馏不是一回事——上下文蒸馏是训练一个模型去模仿「带着某段 prompt」的行为,而这里一次训练都不做。
值得说清的一点是:更新在每层的秩不超过 72。这意味着它不是「把某个神经元拧一下」,而是把 72 个方向上的线性响应整体改写。后面讲「为什么它不稀疏」时会回到这里。
为什么这算「把指令写进权重」
论文给的机制解释是三句话,我认为第三句最关键:
- 显式改写只把图像 token 移动了它们范数的 2–4%。
- 但动作专家把 13–44% 的注意力放在图像 token 上,33–58% 放在指令和状态 token 上。
- 因为前缀注意力是双向的,图像 token 会去注意指令。作者的工作假设是:指令被读进了图像表征,而动作专家在决定「要不要继续握住」时读的正是这份图像表征。
也就是说,这条编辑改的不是「动作策略」,而是「动作专家要读的那份图像表征里,关于『谁该进碗』的那部分内容」。这解释了为什么把它挪到动作专家或动作头上效果会差——那里已经没有「指令」这个变量了。
离线验证先做:编辑后,21 条过早松手全部消失;9 条正确搬运和 19 条第二阶段(放完方块去拿香蕉)的决策一条没变;编辑后的动作和好指令下的动作距离是 4.5 cm,未编辑是 8.1 cm。这三条同时成立,才允许进闭环。
编辑落在哪些参数上,为什么能不碰别的行为
这一节回答读者最关心的工程问题:如果我要改,改哪一块?改错了会怎样?论文用同一份蒸馏、同样的 6 条决策、同一个好指令,在五个不同位置各建了一份编辑,然后在 64 个共享留出种子上统一比。
五个位置、同一份蒸馏
| 编辑位置 | 改动存储值 | 离线剩余松手(21 条) | 留出成功(未编辑 5/64) | 眼镜迁移(32 对) | 碗左迁移(32 对) |
|---|---|---|---|---|---|
| VLM 全量 | 450M | 0 | 55/64(50 修好 0 弄坏) | 25(未编辑 14) | 20(未编辑 4) |
| VLM,0.16% 变体 | 248M | 2 | 41/64(38/2) | 未跑 | 未跑 |
| VLM + 动作专家 | 506M | 0 | 43/64(41/3) | 未跑 | 未跑 |
| 动作专家 | 60M | 1 | 20/64(20/5) | 11 | 2 |
| 动作头,最小范数 | 8,056 | 2 | 0/64(0/5) | 未跑 | 未跑 |
| 动作头,门控(盲编辑) | 1,024 | 0 | 30/64(28/3) | 12 | 1 |
这张表的信息量比它看起来大。请注意最后一列和倒数第二列:只有 VLM 那一行在两个迁移任务上都明显超过未编辑基线,动作专家那一行在眼镜上还有 11 对 14 的差距(没赢),在「碗左」上只有 2 对 4。而动作头的最小范数编辑把留出成功率打到 0/64——不是没效果,是负效果。
只有 VLM 会迁移
论文的说法很干脆:修的地方就是 VLM,因为指令是在那里被读的。
VLM 编辑对每层权重的改动中位数是它们范数的 1.7%(范围 0.5%–8.3%),不大。而在被蒸馏的那 6 条决策上,它复现了好指令对动作专家残差流造成的 104%–114% 的变化——也就是说,动作专家没被碰过,但它算出来的东西和「被告知好指令」时几乎一样。
这个「不碰下游、却让下游算出同样的东西」是整篇论文最漂亮的一处。它也是「为什么可以不动其他行为」的第一层答案:编辑改变的是上游表征,下游的行为差异是这份表征的自然结果,而不是被硬拧出来的。
为什么下游需要更大的改动却更差
第二层答案来自失败的那几个位置。
动作专家那一版,最小范数更新的大小中位数是权重本身的 0.99 倍(范围 0.04–2.22)。原因写在附录里:动作专家的 MLP 输出在加进残差流之前要乘一个自适应范数门控,按层不同,这个门控在 27%–99% 的维度上小于 0.05。也就是说,你写进去的东西大部分被门控压掉了。正确做法是解带门控的同一个岭问题:
minΔW ∥g⊙(KΔW)−V∥22+λ∥ΔW∥22 \min_{\Delta W}\ \left\| g \odot \left(K \Delta W\right) - V \right\|_2^2 + \lambda \left\| \Delta W \right\|_2^2 ΔWmin ∥g⊙(KΔW)−V∥22+λ∥ΔW∥22
g 就是那道门控,⊙ 是逐元素乘。当所有门控都等于 1 时,它退化成前面那个闭式解。直接套用不看门控的版本,21 条松手一条都没修掉;按门控解开,修好 20 个起点、弄坏 5 个,但它的第一个动作块在 52% 的回合里就下令闭合夹爪——手臂还没伸到任何东西跟前。
动作头的最小范数版本更极端:它在「过早松手」和「接近香蕉」这两种状态上施加的夹爪速度变化几乎一样(−1.09 对 −1.10),于是在 94% 的回合里第一个动作块就闭爪,一个都没修好。盲编辑的门控版本好一些(30/64),但迁移不到任何任务。
结论可以压成一句:编辑必须加在「已知好输入和坏输入真正分叉的那一层」。在这里,分叉发生在 VLM 读指令的那一步;再往下游走,你只能用更大的改动去覆盖一个已经错了的中间结果,副作用随之而来。

图 3|六个编辑位置在 64 个共享留出种子上的成功率(虚线是未编辑的 5/64),以及各位置在眼镜与碗左两个迁移任务上的表现:只有 VLM 那一行同时赢下两边。
需要多少样本、什么信号、一次编辑多贵
这一节把「成本」拆成三件事:要多少数据、要什么监督、算多久。这三件事的答案差别很大,混在一起说容易误导。
一次采集,六条决策,八个说法
构造一次编辑需要的东西是:
- 一次激活采集,覆盖 6 条记录下来的过早松手决策。
- 每条决策在 8 个不同指令下各回放一次(原句加上各种改写),采集每层 VLM 的残差和 MLP 激活。
- 一个已知好指令,也就是前面那个把目的短语说全的版本。
监督信号不是动作标签,也不是成功标签,而是「同一个决策、同一帧图像、同一个噪声,在好指令下这一层的残差增量减去原句下的残差增量」。换句话说,监督来自网络自己在两种输入下的内部差异,不需要人工标注,也不需要额外示范。
这一点是它和微调最本质的区别:微调要的是「正确答案」,这里要的是「同一个网络在另一种说法下的内部状态」。所以它天然只能修「已经存在正确内部状态」的失败——这条限制后面会反复出现。
离线先筛,闭环再验
流程是四段,作者把它做成了一条命令 weightsmith distill:
- 选:按规则从未编辑策略的练习回合里挑出失败决策(工具用的是「过早松手」规则,不是人工挑)。
- 采:在原句和好指令下重放这些决策,抓激活。
- 建:按层解那个闭式方程,得到
ΔWℓ。 - 验:在没有参与建造的决策上做离线回放,看目标决策有没有被改掉、保护决策有没有被破坏。
这条命令有一个明确的边界:它自己从不启动闭环评测。闭环留给操作者,用留出种子跑。这个设计是有意的——离线回放能挡住大部分坏编辑(论文里那几个失败的尝试都是在这一步被拦下的),但它证明不了成功率。
成本的三个口径
- 数据:6 条决策 × 8 个指令 = 48 次决策级前向,用于建键值。离线检查另需在 49 条记录决策(21 条松手 + 9 条正确搬运 + 19 条第二阶段)上回放。
- 算力:整项「编辑位置」研究用了 5.9 GPU 小时,卡是 RTX 3090,其中大头是闭环评测而不是编辑本身。编辑本身是每层一次 72 × 72 求逆加两次矩阵乘,共 17 层——按这个规模推断是秒级,但论文没有单独报 build 步的墙钟时间,这个数字是我按算术量估的,不是论文数据。
- 钱:Claude Opus 编辑组的 API 花费约 799 美元(其中堆叠任务 632、首个项目 94、扁盒任务 73),同协议复现那一次约 20 美元。操作者会话与 GPU 时间没有计价。
作为对比参考:这个任务上没有微调基线,论文也没打算和微调比。它比的是「同一批权重 + 换一句话」这条上界,以及「同尺寸随机方向」这条下界。
能不能批量叠加多条指令
这是读者一定会问、而论文没有回答的问题。诚实的说法是:没有实验。
能拿来推断的只有一处:作者做过一个「保留键」变体,在图像格子的 32 个键之外,再加 160 个来自另外五个任务的键,全部映射到「零变化」,然后在 0–16 层上一起解。离线只剩 1 条松手,闭环 24/32 对 3/32,21 修好 0 弄坏,黄油任务上也没变差(10/16,和原版一样)。
这说明「在同一个解里同时写『这些要变、那些不许变』」在数学上是通的,也说明把多条修正叠进一次更新并非不可能。但论文只做了「一条修正 + 一组保持约束」,没有做「多条修正互相叠加」,也没有测叠加之后彼此的干扰。所以这条只能算「有依据的猜测」,不能算结论。
仅示意:weightsmith distill 的实际步骤(按论文第 4.5 节与附录 C 重述)
1 从未编辑策略的练习回合里,按规则筛出目标失败决策(如 early-release 规则)
2 对每条决策,在原句 + 若干改写(含已知好指令)下各回放一次,记录每层 VLM
的残差与 MLP 下投影输入
3 for layer in 0..16:
K = 原句下该层 MLP 下投影输入的均值 # 40 个共享位置 + 32 个图像格子
V = 好指令下的残差增量 - 原句下的残差增量
dW = K^T (K K^T + lambda I)^-1 V # 闭式解,秩 <= 72
4 在未参与建造的决策上离线回放:目标决策应被改掉,保护决策应保持不变
5 冻结编辑并计算指纹;交给操作者在练习种子上跑闭环
6 通过后,在从未用于编辑的留出种子上评分(配对种子 + McNemar)
主结果:128 个留出种子上从 27 到 106
这一节只讲三件事:主数字、随机方向对照、以及成功率之外的两个细节。
数字与配对口径
128 个留出种子,未编辑 27/128(21.1%),编辑后 106/128(82.8%)。配对结果是 81 个被修好、2 个被弄坏,配对差 +61.7 个百分点,95% 自助区间 52.3–70.3,精确 McNemar 检验 p = 7.2 × 10⁻²²。单边率的 Wilson 区间是 75.3–88.4% 与 14.9–29.0%,不重叠。
评测口径值得说清:每个种子是一个固定的仿真槽位,两种策略在同一个槽位上各跑一次,形成一对。一对的结局只有四种——都成功、都失败、只有编辑后成功(fixed)、只有未编辑成功(broke)。前后两半槽位交替改变先后顺序,防止「谁先跑」带来的系统偏差。附录里还把 128 个留出种子按顺序拆成两半重算,两半都是正增益(13→50 和 14→56)。
同尺寸随机方向:9/64
这是全文最重要的一条对照。作者保留了蒸馏更新的每一层、秩、奇异值和 Frobenius 范数,只把左右奇异向量换成随机正交基(numpy default_rng(0))。这个随机更新的改动量甚至更大:502,291,925 个存储值(15.0%),对蒸馏编辑的 450,468,837(13.4%)。
结果是 9/64,而未编辑策略在同样种子上的两次运行是 13/64 和 9/64,p = 0.45;同一条蒸馏编辑在同样种子上是 50/64,对随机方向是 0 修好 41 弄坏。
这条对照的意义在于:它排除了「只要往权重里加足够大的扰动就能碰对」这个解释。修好这件事的是方向,不是幅度。
同一批种子上,未编辑策略配上好指令拿到 57/64,对蒸馏编辑 p = 0.12。也就是说,编辑复现了「换一句话」效果的大部分,但没完全追平——这个差距在统计上不显著,但方向是清楚的。
成功率之外的两个细节
第一个细节是成功率怎么来的。按 RoboLab 的分阶段事件拆开看:未编辑策略在 64 个留出回合里只有 17 个把方块放进碗里,最终成功 5 个,放完方块后完成香蕉步骤的比例是 29%,平均每回合 2.89 次错误抓取。VLM 编辑后:方块进碗 60/64,成功 55/64,香蕉步骤完成率 92%,错误抓取降到 0.19 次。
第二个细节是速度。成功回合的平均长度从 412 步降到 300 步(0.16% 变体是 396 降到 333)。这个变化不是「学会了更快」,而是「不再花时间在错误的对象上反复」。事件日志里更直接:81 个被修好的起点中,未编辑策略有 75 个在运输途中把方块掉在碗外,编辑后有 15 个仍然会掉,但都恢复了。

图 4|配对结局的四类分布:蒸馏编辑在自己任务上几乎只朝一个方向翻(修好远多于弄坏),而随机方向和「同权重重跑」这两类对照会双向翻动。
更小的编辑与迁移:0.16% 的参数,两个任务一起变好
主结果那一版改动 4.5 亿个存储值,听起来不像「轻量」。这一节回答两个问题:能不能更小?改完之后别的任务会不会坏?
把键限制到 32 个图像格子
把键从 72 个减到 32 个(只用图像格子),层从 0–16 缩到 8–16,每层秩上限降到 32。用低秩因子存,参数量 5.3M,占 0.16%。
效果:留出 102/128 对 19/128(86 修好 3 弄坏,p = 3.8 × 10⁻²²)。在前 64 个种子上是 54/64,而好指令是 57/64(p = 0.63)——在这一批上它基本追平了改写指令的效果。
但它没有保住全部效果。在 64 个新的留出种子上和全量编辑正面对比,41/64 对 55/64,p = 0.007。差了 14 个点,是显著的。
这里有一个容易被标题带偏的地方:0.16% 指的是用低秩因子存下来的参数量,不是「只改了 0.16% 的权重」。低秩更新在权重矩阵里是稠密的,落到存储上仍然是 248,057,499 个值,占 7.4%。作者在局限一节专门写了这句,是诚实的。
迁移到两个任务,13 个任务无可测损伤
同一条编辑原封不动搬到另外 15 个任务上(键的位置每个任务都有,所以不需要改建):
- 捡眼镜:22/64 → 44/64,31 修好 9 弄坏,+34.4 点(17.2–51.6),
p = 6.8 × 10⁻⁴。 - 方块放碗左边:8/64 → 36/64,33 修好 5 弄坏,+43.8 点(28.1–59.4),
p = 4.3 × 10⁻⁶。 - 方块放碗右边:0/32 → 0/32,一点没动。
- 其余 13 个任务:全部
p ≥ 0.12,没有显著差异。
「碗左变好、碗右不变」这一对是本节最有信息量的地方。它说明这条编辑不是「空间语言的通用开关」,而是「把目的短语和正在搬的物体绑得更紧」这个更窄的东西。作者的工作假设是:碗右那个任务里,先坏掉的是别的环节。这个假设没有验证。
看起来最大的一处损失是黄油放架子上:10/16 对 14/16,0 修好 4 弄坏。但同一套权重重跑一次,未编辑策略自己只拿到 8/16(对着自己第一次跑是 0 修好 6 弄坏,p = 0.031)。也就是说,这个「损失」比未编辑策略自己的波动还小。这就是为什么这篇论文坚持配对重跑——没有重跑,你会把一个噪声当成副作用。
保留键:想修副作用,结果是没副作用可修
作者还试了一个更保守的版本:图像格子 32 个键,加上来自另外五个任务的 160 个键,全部映射到「零变化」,在 0–16 层一起解。
离线只剩 1 条松手;闭环 24/32 对 3/32,21 修好 0 弄坏;黄油任务上和原版一样是 10/16。作者的结论很直白:它没能去掉任何真实的副作用,因为本来就没有可测的副作用可去。

图 5|论文表 5 里每一条配对比较的四类结局:青色的加粗行是留出结果,斜体行是不改权重的对照。可以看到失败的编辑和「同权重重跑」都是双向翻动。
闭式编辑的边界:能修读错的概念,修不了缺的技能
这是全文最有价值的一节,也是我最想推荐给读者的部分。作者没有停在成功案例上,而是把失败按层级分类,然后逐一去改,看能不能改得动。
能修的是「读错」
论文把 16 个任务的失败分成六层,只有第一层被改动了:
| 失败层级 | 出了什么问题 | 例子 | 权重编辑的结果 |
|---|---|---|---|
| 语言绑定 | 把错的对象当成当前目标 | 方块然后香蕉 | 留出 106/128 对 27/128;迁移到眼镜与碗左 |
| 感知 | 去拿一个长得像的东西 | 黄块叠红块 | 三次 Claude 编辑 −10.9 点;Astra 与同协议 Claude 共 6 个提案全部未过 |
| 缺技能 | 从产生不出可用动作 | 捡扁盒 | 10 次编辑改动了动作,0 次成功 |
| 接触物理 | 决策看着对,抓握打滑 | 芥末瓶进桶 | 没有决策级杠杆;编辑在离线就被拦下;一个权重 13/64 对 13/64 |
| 夹爪决心 | 开合决策卡在阈值附近 | 七个任务 | 一个权重,117/240 对 117/240 |
| 技能内卡住 | 有能力的技能在某一步停住 | 本批 16 个任务里没有 | 未测;他人报告在任务微调过的检查点上有增益 |
这张表本身就是结论:能改的是「读错」,改不了的是「不会」和「物理」。
感知层:信号在,但路由不过去
黄块叠红块这个任务,未编辑策略在 64 个练习回合里成功 28 个。论文记录的是 63 次里有 48 次:手臂先去拿了旁边一个带黄面的魔方。
有意思的是诊断结果:VLM 其实分得开这两个物体,区分度 d′ ≈ 10–20;但动作专家几乎不用这个区分,d′ ≈ 2–3,而随机水平的零假设大约是 1.7。也就是说,信息在 VLM 里有,但没有被传到动作侧。
三个 Claude 编辑分别通过注意力增益、键值增益、以及键值增益加注意力头重连去放大这个信号,结果都是 21/64 对 28/64,还顺手压掉了一个有用的习惯——碰完魔方之后往回退。四个 GPT-6 Astra 编辑(791 到 6,225 个值)全部落在噪声里。另有一个按同伴研究协议跑的 Claude 编辑独立诊断出了同样的混淆,两个提案 16/32 和 11/32 对 12/32,都没过门,最后提交了未编辑策略。
缺技能:十个编辑改出了动作,改不出成功
扁绿盒从来没被捡起来过(0/64)。原因是几何的:盒子的长边超过夹爪开度,在默认腕角下手指落在盒面上。
十个编辑试了读出层手术、神经元翻转、「保持闭合」闩锁、腕角与夹爪偏置。九个拿到 0/16,一个 0/32。最好的那个把「到达可抓腕角」的回合比例从 9/16 提到 16/16——动作确实变了,但成功仍然是 0。技能不在,改决策没用。
接触物理与夹爪阈值:没有可改的决策
芥末瓶进桶:未编辑策略 96 局里成功 16 局。它抓住瓶盖、夹爪全程命令闭合,多数回合在搬运途中滑脱。作者查了接近高度、腕角、时机、搬运速度,没有一个能预测哪次抓握会成(|ρ| ≤ 0.26)。图 6 那两行腕部相机画面就是这件事的样子:两次都是抓瓶盖,一次滑了,一次成了,肉眼与记录变量都分不开。
两个按 Gupta 等人风格做的神经元翻转编辑,从 192 条记录抓握里建,分别改了 131,072 和 1,048,576 个值,结果要么动作几乎没变(平均关节变化 0.0005 rad,96 条决策里 0 条翻转),要么把动作推向错误方向,都在离线阶段被拦下。
夹爪阈值这一层更干脆:把运行时二值化阈值从 0.5 改成 0.4 能涨分(36/64 对 23/64),但把同样的偏移做成一个权重(夹爪输出偏置)之后,七个任务合计 117/240 对 117/240,37 修好 37 弄坏,完全中性。离线看它确实起了作用——平均夹爪命令抬高 0.109,闭合行数从 674 涨到 781(共 1,440 行)——但闭环里这个偏移在所有任务上等量地推向「更爱闭合」,收益和损失互相抵消。
一个把错决策修掉了、成功率却没动的例子
这是全篇我最喜欢的一段,因为它把「修决策」和「修任务」的区别摆得最清楚。
堆叠任务里,失败不是抓不起来,而是两个方块叠好之后,空夹爪悬在堆上方、在堆的高度下令闭合,抓了个空(73 次这样的重规划),或者把顶上那块拽下来。一个盲编辑在拿到更多时间后,把动作专家最后一个 MLP 的一个单元改成了「此处不要闭合」的状态门控,改了 3,072 个值。
结果:离线时每一个留出的保护决策都保住了夹爪命令;闭环里「在堆上方空抓」从 73 次重规划降到 5 次,「第三次抓取前就闭爪」从 17 降到 2,到达第三个方块的回合从 24 涨到 27。
但成功率只从 16/32 变成 17/32(6 修好 5 弄坏),留出 39/64 对 35/64,p = 0.585。原因写在后面:剩下的失败是「第三个方块放不准」,那是运动精度问题,编辑碰不到。
它修掉了一个明确的错误决策,但没有提供缺失的技能。 这句话可以当作整篇论文的一句话总结。
七个盲编辑只过一个
为了检验这套东西能不能被别人独立复现,作者给了七个全新的 Claude Opus 编辑各一个任务,每个任务对应一种失败层级,彼此隔离、看不到论文、不能用网络,预算是 96 个练习回合、192 个激活条目、最多两个闭式候选。
结果:七个提交里只有一个通过留出评分——就是那个拿到「读错指令」任务的编辑。它独立地把松手追到了措辞上(16 条松手在 Put the cube in the bowl 下全部变成握住),然后写了一个和作者不同的编辑:动作头夹爪列上的秩一改动,1,024 个值,用「过早松手状态」做门控。留出从 11/64 到 27/64(22 修好 6 弄坏,p = 0.004,七个任务 Holm 校正后 0.026)。
另外六个:眼镜 +14.1 点(p = 0.12)、芥末 +4.7 点(p = 0.61),四个直接提交了未编辑策略。在「长得像」那个任务上,没有任何改写能推动手臂,所以没有东西可蒸。
这条对照对读者的意义是:这套方法不是「随便找个 agent 就能改好模型」,它要求任务本身存在一个已知好输入。这也正是作者反复强调的前提。

图 6|芥末瓶进桶的腕部相机序列:上下两行都是抓瓶盖,上一行在第 98 步滑脱,下一行在第 168 步在桶上方松开。没有任何记录下来的决策变量能把这两次分开。
局限与失效场景
论文的局限一节写得比多数论文坦白,我把它和自己的观察分开列。
30% 的配对结果会自己翻面
这是最该被记住的一条。同一套权重、同一批种子,重跑一次,结局会变:
- 同一条编辑跑两次,64 对里只有 46 对结局一致(28% 不一致)。
- 一个近乎中性的单权重编辑,在有空间的四个任务上改动了 192 对里的 70 对(36%)。
- 未编辑策略在黄油任务的同一批 16 个种子上,先拿 14/16,重跑拿 8/16(38% 不一致)。
- 同伴研究的未编辑重跑,不一致率 45%–58%。
作者给的一个候选解释是 GPU 仿真的非确定性,被开环的动作块放大。这个解释没有被验证。
检测下限:32 对看 27 点,128 对看 14 点
在约 30% 配对不一致、80% 功效、双侧 α = 0.05 的假设下,一次比较能检出的最小差异是:
| 每臂配对数 | 可检出的最小差异 |
|---|---|
| 32 | 约 27 个百分点 |
| 64 | 约 19 个百分点 |
| 128 | 约 14 个百分点 |
| 256 | 约 10 个百分点 |
所以论文那句话是对的:16 个回合的筛查是过滤器,不是证据。这也解释了为什么正文里那么多「+10 点但 p = 0.61」的行——不是效果不存在,是样本量看不见它。
论文自己承认的六条边界
- 全量编辑是低秩的,但不稀疏:改动 13.4% 的存储值,0.16% 变体落地后也改 7.4%。
- 蒸馏编辑是操作者会话在编辑规则下建出来的,不是全自动发现的。
- 发布的工具能端到端重建,但只在一个任务上跑过,而且需要把已知好指令作为输入。
- 编辑位置的对比只覆盖一个任务、一个措辞。
- 迁移没有被提前预测(碗左行、碗右不行),所以部署需要广覆盖的回归检查。
- 全部结果来自一个零样本检查点、纯仿真,每次比较 16 到 128 对;失效层级是作者自己分的,没有独立评分者。
我认为还应该补两条作者没写进去的观察。第一,这条路线没有和「用几十条示范微调」做过任何对比,所以它省下的到底是钱还是麻烦,在这篇里没有答案。第二,所有闭环评测都在 Isaac Sim 的 RoboLab 里,真机一次都没跑;作者在结论里把「物理机器人」列进了未来工作。

图 7|把每一次比较的效应量放在配对样本数与检测下限的坐标里:落在曲线下方意味着这个差异比该样本量能看见的变化还小。青色点是蒸馏编辑,灰色点是不改权重的重跑。
落地判断:什么团队该试,什么团队别碰
这一节是我自己的判断,材料来自论文,结论不等于论文的结论。
三个前置条件
想试这套东西,先确认三件事同时成立:
- 存在一个已知好输入。 换个说法、加一句澄清、给一个更具体的指代,策略就能做对。这一条不成立,后面全都不用谈——论文里所有失败层级都缺这一条中的某一项。
- 有一个可复现的评测台。 能按种子配对、能重跑未编辑策略、有至少 64 对的预算。只有 16 对的评测台,你分不清 10 点和 0 点。
- 失败被定位到「读错」而不是「不会」。 具体判据:同一句话换个说法就能过,且失败发生在某一个决策上而不是整条轨迹上。
值得试的四种场景
- 指令不能改的固定产线:上位系统下发的指令文本是死的,但你可以换措辞去测出一个「好说法」,再把它的内部效应写回权重。
- 一个通用策略在若干个任务上各差一步:一条编辑可能顺带修好相邻任务(这篇里是眼镜和碗左),而且不需要为每个任务单独建。
- 存储受限的边缘部署:0.16% 变体只要 5.3M 参数的低秩因子,比再挂一个 adapter 便宜。
- 需要「不动其他行为」的增量修复:这篇给了可测的副作用证据(13 个任务无可测差异),方法上也支持加保持约束。
别碰的五种情况
- 技能缺失。 扁盒的十个编辑、堆叠的第三个方块,都在说同一件事:改决策不等于给技能。
- 接触物理与阈值类问题。 这类问题的杠杆往往是一个标量,直接把阈值调了试一遍更便宜,不需要闭式解。这篇里夹爪偏置的实验正好证明「写进权重」不比「运行时改」更好(117/240 对 117/240)。
- 没有已知好输入。 长得像的感知混淆就是例子:没有任何改写能推动手臂,就没有东西可蒸。
- 没有留出评测预算。 30% 的配对不一致意味着你必须配对重跑;不配对的话,你看到的涨点很可能只是运气。
- 要「一次修很多条指令」。 论文没做过这个实验,只有保留键这一处间接证据。
一个可执行的最小流程
如果真要落地,我会按这个顺序走,每一步都有明确的止损点:
- 固定检查点与指令,跑 64 对基线,记录每对的四类结局与失败阶段。
- 对失败回合做措辞扫描(同一帧、同一噪声,只换文本),找到能把失败决策翻过来的说法。找不到就停。
- 取 6 条左右的目标失败决策,采一次激活,按层解闭式方程。
- 在没参与建造的决策上离线回放:目标决策要改掉,保护决策要不变。改不掉就停。
- 练习种子上闭环,配对比较;通过后冻结并记指纹。
- 新留出种子上评分,同时跑一条随机方向对照和一次未编辑重跑。两个对照都过,才算修好。
- 最后跑全任务回归,重点是「看起来像但机制不同」的那几个任务。
第 6 步的两个对照是这篇论文最值得抄的东西。没有随机方向对照,你证明不了是方向在起作用;没有未编辑重跑,你分不清副作用和噪声。
术语速查表
| 术语 | 英文 | 在这篇里的意思 |
|---|---|---|
| 过早松手 | premature release | 策略抓起物体、抬几厘米后在到达目的地之前松手,是本文要修的目标失败 |
| 语言绑定错误 | language binding | 抓对了物体,但把目的短语绑到了另一个物体上;六层失败里唯一能被编辑修好的一层 |
| 已知好指令 | known-good instruction | 权重不变、只改措辞就能让策略做对的说法,是蒸馏的监督来源 |
| 闭式指令蒸馏 | closed-form instruction distillation | 把好指令在每层造成的残差增量,用一次正则化最小范数解写进 MLP 下投影 |
| 键 | key | 原句下该层 MLP 下投影的输入,在 6 条决策上取平均;每层 72 个(40 个共享位置 + 32 个图像格子) |
| 值 | value | 好指令下的残差增量减去原句下的残差增量,逐层逐位置计算 |
| 配对种子 | paired seeds | 两种策略在同一个仿真槽位上各跑一次,形成一对;结局分四类,fixed 与 broke 是核心指标 |
| 噪声地板 | noise floor | 权重不变、只重跑也会翻面的那部分结局变化;本文实测约 28%–58% |
| 门控 | gate | 动作专家 MLP 输出上的自适应范数缩放,按层在 27%–99% 的维度上小于 0.05;忽略它会让编辑失效 |
| 保留键 | preservation keys | 来自其他任务的键,映射到零变化,用来在同一次解里约束「这些不许变」 |
| 检测下限 | smallest detectable change | 给定配对数与不一致率下,80% 功效能看见的最小差异:32 对约 27 点,128 对约 14 点 |
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)