GPT-6 Astra只改65行词嵌入,让机器人听懂换种说法
斯坦福让GPT-6Astra直接修改机器人参数:只动65行词嵌入,修复一..
在335条包含被改词元的留出指令上,成功率由74.3%升到87.5%;另有430个回合,成功或失败的结果逐一没有变化。
GPT-6 Astra改动的仅仅是65行词嵌入,却把机器人「换种说法就失败」的毛病修掉了一类。
研究用的任务是打开炉灶。机器人收到的指令是「activate the cooking appliances heat source」,也就是启动烹饪设备的热源。可原始策略伸手去拿盘子,走了300步也没完成任务。
换成修改后的权重,场景、指令、随机种子都不变,机器人在第78步就把任务做完了。整个编辑过程既没有做梯度更新,也没有加入新的机器人示范数据。
同一道留出指令下,改动前后的机器人表现对比(动图 1)。原先那套策略跑到 300 步就超时;编辑过的版本到 78 步就完成,之后一直停在终帧。两边用的场景、随机种子 7、初始状态 0 都相同,录像是真实仿真画面。这条只是挑出来的修复例子,完整统计里也算了退化的回合。
论文题为《Can LLMs Debug Robots by Editing Their Weights?》,由 Jusheng Zhang、Keze Wang 和 Liang Lin 共同完成。效果最好的一组实验里,335条含被改词元的留出指令成功率从74.3%提高到87.5%,另外430个回合的成败结果逐一不变。所谓「零变化」,指的是每个回合成功还是失败的结果。
论文、实际评测过的权重修改、代码以及全部16次实验记录都已公开。研究盯住的是一个具体问题:机器人已经会做的操作,能不能靠局部改权重,被不同的语言说法更可靠地调用起来?
-
论文:https://arxiv.org/abs/2611.09376
-
GitHub:https://github.com/jushengzhang/robot-weight-debugging
-
项目主页记录了整个过程:https://jushengzhang.github.io/posts/robot-weight-debugging/zh.html
让LLM去干调试器的活。
实验对象是OpenPI发布的π₀.₅ LIBERO检查点。这是个视觉—语言—动作模型,输入相机画面、语言指令和机器人状态,输出下一步要执行的动作。基座已完成预训练和微调,测试环境选了LIBERO操作任务与LIBERO-Plus指令改写。[1][5][6]
Astra在这套实验里管的是策略权重的检查与修改。研究者给它一个能持续保留状态的Python工作区,外加可调用的前向工具。它能翻看张量、写入替换值,再去查仿真任务的结果、动作或内部信号。改动定下来之后,动作照样由被编辑过的机器人策略算出来。
每改一次语言,预算为50次工具请求,一次请求里可以包含多个回合或输入。候选方案靠练习样本的反馈来挑,测试集的结果不会回传给Astra。所以「没有梯度更新」并不等于「没有反馈」,机器人更不是从没训练过。
问题由此变了:不再是机器人学没学过这个动作,而是这条指令在模型内部被表示成什么样、能不能把已有行为调得更稳。
动图 2|GPT-6 Astra 调整机器人权重的过程被完整回放。关键节点从 50 次工具请求中挑出并公开,Astra 依仿真反馈改动词嵌入、核对候选效果,最后留下 65 行修改。同一指令下,机器人改动前后的行为分列左右,练习样本结果与工具反馈则放在底部。
65行改动,落在语言进入模型的那一层。
指令进模型,先被切成词元(token)。词元未必就是一个完整英文单词。接着模型按词元ID去嵌入表里取出一行对应向量,后面网络处理的就是这些数值。
Astra最后留下的修改都集中在嵌入表上。它挑出一批词元,把向量往更常见的任务说法上挪,比如 cooker→stove、basin→bowl、fermented→wine。有的行直接换成目标向量,有的行只保留一部分原向量;碰上歧义,还能取多个目标向量的均值。
开场那条炉灶指令里的 cooking 就是一例。该词元的嵌入改成25%原向量加75%的 stove 向量。交给机器人的文字里 cooking 还在,但进入后续网络的数值已经不同。这一行属于整份65行修改,其效果研究没有单独评估。
其他几个案例同样能对上号:酒瓶那条指令里,fermented、grapes 被往 wine 方向挪;取碗那条里,rounded 被挪向 bowl,uppermost 则靠向 top。完整的词元映射和配对录像都已经公开。
这 65 行一共改动了 132,768 个参数值,只占导出检查点的 0.00367%。所谓「行」指的是嵌入表里的行数,不是 65 个参数,也不是 65 行代码。提交的语言修复只动这些嵌入值,具体词元 ID、目标行和混合比例都已对外公布。让通用 LLM 直接读取、改写神经网络权重,此前已有权重空间编程(Weight-Space Programming)这条路。[2] ROME、MEMIT、MEND 等研究的是模型编辑。[8][9][10] 而本研究要看的是:LLM 能不能靠权重检查和仿真反馈,拼出对机器人策略的修改。它没有跟这些编辑算法做正面对比。
765 条留出指令:48 次修复,4 次退化
一段成功视频说明不了修改是否稳定。研究从同一个原始检查点出发,做了三次互相独立的编辑,三次搜索之间不继承笔记,也不继承修改。候选定下来之后,再拿同一组 765 条留出改写指令,与原始策略逐条配对比较。
表 1|三次独立编辑搜索的留出结果。测试用的是同一批 765 条指令和随机种子 7;三项主要检验经 Holm 多重比较校正后依然显著。三次搜索共用同一个测试集,因此不能算三组独立测试数据。
表现最好的是 C:成功数从 660 升到 704,48 个原本失败的回合翻盘成功,同时有 4 个原本成功的回合失败,净增 44 次。整体成功率由 86.3% 升到 92.0%,提高 5.8 个百分点,精确配对检验 p=1.31×10⁻¹⁰。按指令有没有读到被改的嵌入行来拆分,变化落在哪里就更清楚了:含被改词元的 335 个回合,成功数从 249 涨到 293,对应 74.3%→87.5%;不含这些词元的 430 个回合,成败结果一条都没变。
表 2|编辑 C 的词元覆盖分组。完整结果把修复和退化都算了进去,430 个回合的「零变化」只指逐回合成败结果。
图 2 显示,编辑 C 带来的结果变化,集中在那些包含被改动词元的指令上。最难一级改写的成功率由 59.8% 升到 78.2%,图中数字取自逐回合记录。
这种局部性有个直接的解释:指令若没读到被改动的那一行,查表得到的文本向量就是一样的。相机观察、采样噪声等输入固定时,其余未改动网络拿到的计算输入也相同。不过,含有这些词元的其他新语境仍可能被波及,所以不能就此断定模型在所有任务上都不会产生副作用。
从炉灶到取碗、酒瓶:修复落在哪里?
取碗任务里,指令用「darkcolored rounded container」和「uppermost storage compartment」来描述目标与位置,被改词元 rounded、uppermost 的嵌入分别向 bowl、top 靠拢。同一场景下,原始策略到 220 步超时,编辑后的策略在 138 步完成。
动图 3|取碗:原始策略 220 步超时,编辑后 138 步成功。
酒瓶任务则把目标说成装着「fermented grapes」的玻璃容器,fermented 和 grapes 对应的嵌入被移向 wine,这条指令还牵扯 atop→top 的改动。原始策略 300 步超时,编辑后 90 步成功。这些效果出自整份 65 行修改,并没有对单个词元逐一做消融评估。
动图 4|酒瓶:原始策略 300 步超时,编辑后 90 步成功。
上述案例是从留出测试里挑出来的修复样本,用来解释模型读到了哪些修改。整体结论仍要看全部 765 个回合的配对结果,其中包含 4 次退化。完整指令、词元映射和逐回合结果都能在公开代码仓库中查到。
高分只是一时,修改还得扛住下一批样本
最终那份 65 行修改,也有过看似成功、随后又暴露问题的阶段。一次编辑中,原始模型先在 80 条较难的目标任务改写上成功了 49 次。Astra 从词汇表达入手提修改,早期候选在这组诊断样本上做到 69/80。
换到另一批样本,这个候选补回了 8 个失败回合,同时让 6 个原本成功的回合掉了链子。旧样本上的高分并没有让搜索停下来。Astra 接着去动那些意思有歧义的词汇映射,最后攒出一个牵扯 65 行嵌入的版本,先把它冻住,再拿预留的练习样本做验证。
对运行错误按同种子重试、去重之后,460 个练习样本的成功数由 412 升到 429。Astra 最终留下了这份修改。挑哪些词元、往哪些目标向量上靠、每行挪多少,都是 Astra 在会话里自己提出并逐项检查的。
这些节点交代的是候选被筛掉或留下的过程,但不同练习批次的分数拼不成一条训练曲线,练习里涨的分也顶不了 765 条留出指令上的最终评估。整个试错过程在公开实验记录里可以一次次翻看。
那换一组同义词,是不是也能成?
一个很自然的问题跟着来了:收益到底来自 Astra 找到了有意义的词汇对应关系,还是随便扰动一下参数也能把结果拉上去?研究针对相同的 65 个源行做了两组对照。
一组沿随机方向挪,挪的距离跟原修改对齐。另一组照着 Astra 找到的词汇对应关系,把源嵌入整个换成目标嵌入,多目标取均值的设置也照旧。这里比的是嵌入值的完整替换,输入的字符串并没有被改写。
表 3|同一组 765 个回合上的对照。完整替换出现 2 次运行错误,随机对照出现 3 次,表中都按失败计;论文另外报告了剔除无效配对后的分析。随机方向是这次专门搭的一个对照实例。
这回随机方向的对照没带来任何提升。完整替换倒是已经把相当一部分收益解释掉了:成功率达到 90.5%。换句话说,搞清楚哪些词元该改、该往哪儿移,本身就是修复里很关键的一环。
Astra 的编辑 C 成功率为 92.0%,点估计更高,退化也更少;可它跟完整替换在 763 个有效配对上的直接比较 p=0.0614,没够到 0.05 的显著性线。所以现有结果既没有确认「部分混合明显强过完整替换」,也没有证明它比独立编制的人工词表、提示词改写或微调方法更好。
没修好的,同样留了底
公开的 16 次机器人实验,还涉及相机视角、背景、语言扰动、指令后缀,以及 LIBERO-RECOVER 失败恢复和 LIBERO-PRO 鲁棒性搜索。[11][12] 按论文的最终决定来数,三次语言修复全部保留,而且都有显著的留出收益;剩下 13 次搜索里有 12 次把候选放弃了,唯一算作保留的后缀跟进同样没有显著的留出收益,p=0.542。
失败恢复这一组实验,把差别摆得很清楚。有个改动能令机器人空抓之后更常重新张开夹爪,可在一次练习评测里,真正把任务做完的次数从 213/352 掉到 208/352。某个内部信号是照着预期动了,整体任务表现却没跟着好起来。
还有一次恢复搜索,在预留练习验证中做最后一轮,288 个有效配对里成功数由 166 变成 164,修改最终被撤回。研究方面并没有因此宣称,留出集上的失败恢复能力已经被修好。
这么一来,候选究竟是留还是撤,本身就成了和提出修改一样要查的事。只是 12/13 这个数只反映这组运行里的决定,还不足以说明 LLM 普遍分得清哪些故障修得了。过去的运行里还出现过收尾代码没执行、撤回的候选仍留在磁盘上的情况;框架的 bug 已经修掉,材料里也把归档文件和最终决定分开写了。
另一处独立发现:指令末尾的数字同样会左右成功率
FastWAM 实验里,研究还撞上一种指令格式上的敏感反应:任务描述末尾只要挂上「view 0 0 100 2 354 initstate 0」这类元数据,策略的表现就会明显变样。[14]
同样 210 个配对回合,FastWAM 用纯任务指令时成功率是 70.0%,加上后缀就掉到 48.6%。对照组的被测π₀.₅总体成功率两次都停在 88.6%,里面 9 次改善、9 次退化,逐回合看并不是全都没变化。
图 3|指令格式敏感性。每个检查点都在相同的 210 个回合上,分别比较纯任务指令与带后缀指令。
不过这个现象还没变成稳定的权重修复。首轮 FastWAM 归档候选是带着撤回要求一起走的,后面几轮实验也没能确认有显著收益。所以它和前面π₀.₅的词汇修复得分开看:一个是评测里观察到的现象,一个是已有留出证据撑着的编辑结果。
这项比较只覆盖两个已发布的检查点。DreamZero、E0.5 等世界动作模型给出了更宽的研究背景,但都不在这次后缀测试的范围里。[15][16] 它留给评测的问题很实在:报成功率的时候,模型收到的完整指令到底是什么?
第一版已经开源,真机验证还在进行
论文标题问的是:LLM 能不能靠改权重来调试机器人?这组实验对一类词汇理解上的失败给出了肯定答案:少量直接的权重修改,就让一批留出指令更可靠地调起了策略本来就有的操作行为。至于语言到动作这条完整的因果通路,眼下还没有逐层定位出来。
验证的边界也划得很清楚。主留出测试用的是同一个随机种子;早期拿200条留出子集跑,没看到明显提升,之后才在既有的完整留出划分上评测同一个候选。补充的多种子检查取自练习集,收益并不均匀。另外,目前公开的结果全部来自仿真,真机迁移和新运动技能能不能拿到,都还没有验证。
GitHub 上放出的是第一版(v1)。实际评测过的那65行稀疏修改、应用脚本、运行框架,还有全部16次会话和逐回合证据,都能在上面找到——最终分数可以核对,候选怎么一步步形成、哪些修改被放弃、结论在什么条件下成立,也能顺着记录看下来。第二版研究和真机实验眼下正在推进。第1篇是《π₀.₅: a Vision-Language-Action Model with Open-World Generalization》。
参考文献
第2篇:《Sparks of Weight-Space Programming: LLMs can natively read and write neural network weights》。
第3篇:《π₀: A Vision-Language-Action Flow Model for General Robot Control》。
第4篇:《OpenVLA: An Open-Source Vision-Language-Action Model》。
第5篇:《LIBERO: Benchmarking Knowledge Transfer for Lifelong Robot Learning》。
第6篇:《LIBERO-Plus: In-depth Robustness Analysis of Vision-Language-Action Models》。
第7篇:《Stable Language Guidance for Vision–Language–Action Models》。
第8篇:《Locating and Editing Factual Associations in GPT》。
第9篇:《Mass-Editing Memory in a Transformer》。
第10篇:《Fast Model Editing at Scale》。
第11篇:《LIBERO-RECOVER: Beyond Task Success Towards Failure Recovery in Robotic Manipulation Models》。
第12篇:《LIBERO-PRO: Towards Robust and Fair Evaluation of Vision-Language-Action Models Beyond Memorization》。
第13篇:《LoRA: Low-Rank Adaptation of Large Language Models》。
第14篇:《Fast-WAM: Do World Action Models Need Test-time Future Imagination?》。
第15篇:《World Action Models are Zero-shot Policies》。
第16篇:《E0.5: From Reconstructive to Future-Predictive 3D Foundations for Robotic World-Action Modeling》。