051|SayCan:语言计划还需要可执行性
原论文:Do As I Can, Not As I Say: Grounding Language in Robotic Affordances,Michael Ahn 等,2022。论文。
先接住前作的问题
CLIPort让语言选择桌面抓放对象,但复杂请求还需要决定先执行哪项已有技能。SayCan把语言相关性与当前技能可行性分开评分,补的是高层选择接口,不是重新训练同一抓放策略。
五个前置概念
五个前置概念:分层策略用高层技能调用低层控制;可供性描述现有执行者在状态中可完成的行为;条件语言概率给上下文后的候选文本打分;稀疏终止奖励只在任务结束评价成功;概率校准要求数值大小与真实成功频率相符。
一、问题设定:语言上有用的技能此刻是否真的能执行
人说“我把饮料洒了,帮一下忙”,语言模型可能建议拿吸尘器,而机器人既没有吸尘器,也不会使用它。SayCan的办法是同时问两个问题:这个技能对请求有没有用?机器人现在能不能做成?
SayCan是一种分层控制框架。高层接收自然语言请求,选择“寻找某物”“拿起某物”“放下某物”等技能;底层策略处理图像与控制。语言模型不直接输出每个关节的力矩,也不会因一句新指令自动学会新动作。
机器人是带七自由度机械臂和双指夹爪的移动平台。实验厨房有15种物体和5个语义位置。技能训练体系涉及更多对象和551种技能描述,但正式组合实验选取了当时适合组合、效果较好的部分。不能把551理解为所有技能都接受了等量完整任务评测。
技能策略可由BC、RL、脚本或传统规划构成。§4介绍的学习动作空间包含末端六维位姿、夹爪、底盘平移与偏航及终止;附录D.2进一步说明,实际组合使用的抓取是多任务学习策略、放置是脚本策略、导航是知道对象可能位置的规划方法。整套系统并不是所有能力都由RL从零产生。
任务奖励在学习价值时采用成功终止1、其他0,成功由三位人工标注者多数决定。高层终止依赖“done”候选;底层还会按动作预算或自身终止输出结束。这两级终止不同:底层一次抓取结束,不意味着整个用户请求已经完成。
论文所说的零样本,是把已学技能组合来处理新的高层表达;机器人已经积累大量示范与交互,语言模型也经过大规模预训练。
二、相乘语言相关性与状态条件可行性
“Say”用语言模型给已有技能描述打分,“Can”用技能成功价值或其他可行性函数评估当前状态。两者相乘选出下一项技能,执行后重新观察,再做下一次选择。
论文v2中,模拟厨房布置的真实机器人测试为84%规划成功、74%执行成功;实际办公室厨房为81%和60%。这里的“模拟厨房”是搭建的真实训练场地,不是把物理仿真成绩当真机结果。
1. 两种评分对应两种错误
令用户请求为 ,已选技能历史为 ,当前观测状态为 ,候选技能描述为 :
第一项回答文字上下文中下一步是否合适;第二项估计这项技能能否在此刻完成。用乘法是为了让任一项很低的候选受到抑制,而不是让语言极其流畅就掩盖物理不可行。
这有概率解释,但依赖假设:技能失败不产生请求进展,语言分数能代表有用性,两个估计的口径能匹配。真实token似然受到描述长度、措辞和提示影响,不天然等于校准过的任务进展概率。价值分数也不天然是安全概率。
2. 价值什么时候等于成功概率
若一项技能只在成功终止时奖励1,其余0,且不折扣,则
若使用折扣,实际上更接近 :较慢成功会被打折。若奖励还含惩罚或密集塑形,更不能直接叫概率。论文§2也限定了无折扣、稀疏奖励的解释条件。
此外,这通常是该技能策略成功的概率,不是“物理世界中存在某种未知方法可以成功”的概率。一个笨拙抓取器可能给可抓物体低值,说明现有技能不擅长,不代表物理不可行。
实际接口还允许基于夹爪状态或距离的手工可行性函数。不同来源分数相乘前的校准,是系统设计的重要部分,不会因统一写成 自动解决。
3. 贪心选择与执行反馈
SayCan逐步枚举固定技能描述,以语言模型评分而非自由生成任意动作。选择最高组合分,执行后把技能描述追加到历史,并重新用当前状态计算可行性。
这不是在完整技能树上搜索全局最优计划。当前可行性重算提供闭环信息,但语言历史主要记录已选技能,不能保证完整记录每个失败结果。手中是否抓到物体可能通过下一次可行性反映出来;复杂故障解释则仍有限。
高层组合无需为每个新请求重新训练语言模型。低层BC最小化动作监督误差,RL价值通过TD目标学习;组合阶段优化的是候选分数。执行成功率改善是最终实验证据,不能从乘法形式直接推出。
乘积排序对校准敏感。教学例:技能A语言分数0.8、可行性0.2,乘积0.16;技能B为0.4、0.6,乘积0.24,因此选B。若把可行性平方,内部排序虽完全不变,组合分变0.032与0.144;它改变了语言与物理证据的相对力度。单个评分器的排序正确,不代表乘起来仍是所需决策。
还可以用对数看接口:,其中 是当前技能成功估计。对任一分量乘温度系数,就在改变两种证据权重。原文附录确实为不同可行性函数进行经验校准,因此完整系统不只是把两个未经处理的概率直接相乘。原文方法与可行性校准
一个可以手算的例子
自构例子,未运行。 请求是“给我一个水果”。候选抓苹果的语言分0.8,但苹果不在眼前,可行性0.05,组合0.04;先去果盘的语言分0.5,可行性0.9,组合0.45。系统会先导航。到达后重新观察,抓苹果可行性变0.9,组合就可能升高。
如果把“抓苹果”的描述改成很长的一句话,原始语言似然可能下降,这与动作本身没有变化。这个例子说明分数校准和描述设计也是方法的一部分。
可继续研究:让低层失败文字反馈进入历史;对技能描述同义改写测试选择稳定性;构造必须先降低眼前得分的准备动作,检查贪心选择的边界。
三、枚举技能、联合评分并在执行后重选
语言模型只提出已有技能的相关性,当前状态的可行性还需独立估计。选中技能执行后再读状态,下一次评分才有机会反映刚才的实际结果。
输入:用户请求、技能及文字描述、可行性接口、语言模型
历史设为空
重复:
读取当前机器人观测
对每个候选技能,包括完成候选:
计算它在请求与历史之后的语言分数
查询当前状态下该技能的可行性分数
将两项相乘
选组合分最高的技能
若选中完成候选:结束
调用相应学习策略、脚本或导航规划器
技能执行结束后重新读取环境
把所选技能描述加入历史
输出:技能序列及真实执行结果
四、分别核对规划成功和整机执行成功
规划选择正确仍可能在低层执行失败。原论文因此分别报告规划与执行,并区分搭建厨房和实际办公室厨房,不能把84%与74%混为同一个成绩。
原图怎么读: 图8,原论文图注与图像。逐项看语言评分、可行性评分及其合成评分,最终选择依据合成结果。语言偏好的技能若当前不可执行,应在可行性项被压低。

结果图怎么读: 表2把规划与实际执行分开统计:先比较完整PaLM-SayCan和No VF的规划列,观察可行性项的作用;再比较实验厨房(Mock Kitchen)与办公厨房(Kitchen)的执行列。101条指令的总分和仅11条的具身状态子集拥有不同分母,不能把单类的大幅差异外推到全部任务。

这里的结果按2022年8月修订版解释;后续语言模型变化不应倒填到原实验的技能选择准确率。
| 项目 | 设置与含义 |
|---|---|
| 高层测试 | 101条指令,7类,包含单技能、抽象名词、自然动词、结构化表达、具身状态、众包与长任务 |
| 场景 | 训练用实体厨房布置,以及真实办公室厨房 |
| 语言模型 | 主实验PaLM540B;对照FLAN137B等 |
| BC示范 | 10台机器人、约11个月收集68000条遥操作示范 |
| 自主数据 | 276000条自主运行中筛选约12000条成功片段用于BC,不能全算成功示范 |
| BC训练预算 | 16个TPUv3芯片、约27小时 |
| RL价值预算 | 仿真与示范启动,16个TPUv3芯片约100小时,3000个采集CPU工作进程及3000个目标计算进程 |
| 技能质量控制 | 人工过滤碰撞、扰动物体、不可行等片段;低层评测持续选择较好模型 |
| 评价 | 三名评分者,多数判断规划有效与实际执行成功 |
| 重复与不确定性 | 主表给每类指令数与成功比例;未逐项确认独立重训种子或置信区间 |
低层训练用RetinaGAN缩小仿真视觉差距,但实际策略还用了大量真实BC数据。把系统叫“纯仿真零样本迁移”会遗漏核心资源。
规划成功与执行成功有不同裁判问题。计划按理能完成目标,即使机器人抓取失误,也可算规划成功。反过来,语言模型提出错误对象,即使机械臂动作完美,整体任务也失败。将两列分开,才能定位高层与低层瓶颈。
No VF、Generative主要报告规划列,BC NL和BC USE主要报告执行列。横向比较时要使用同一列,不要用完整系统执行74%减去另一个方法的规划67%,制造一个没有意义的“提升”。
五处证据与边界
表2总体:可行性有帮助。 同一PaLM框架,完整方法规划84%,No VF为67%,绝对提升17个百分点;Generative为74%,相差10个百分点。支持的是当前技能库与指令集中的状态接地收益,不是所有任务都会近乎翻倍。
表2具身状态类:最直接的机制检验。 11条此类请求中,完整规划64%,No VF18%。这类任务改变是否已持有对象等状态,正好对应Can的职责。但样本很小,且可行性误判仍使完整方法大量失败。
表2真实场景:高层与低层不同程度退化。 规划从84%到81%,执行从74%到60%,分别下降3和14个百分点。它提示底层感知控制对场景变化更敏感;不能直接按差值精确分配所有失败原因,因为规划与执行不是完全独立事件。
表3语言模型替换:改进并非处处单调。 PaLM平均执行74%,FLAN61%;但自然名词类PaLM47%,FLAN53%。高层模型更强可使整套系统受益,但不能把参数量当作唯一原因,二者训练数据与训练方法也不同。
图8、附录D与失败分析:解释接口的价值和限度。 分开显示语言与可行性分数,能看出候选为何被抑制。作者报告长任务容易提前停止,否定与模糊指代也是问题。这个可视化解释的是评分决策,不是证明内部语言推理完全忠实或经过形式验证。
“65%错误来自LLM、35%来自可行性”的分类出现在§5.1,具体统计口径应结合原文错误集合理解,不能直接套到全部真机执行失败,忽略控制器本身的失败。
五、技能库与评分可靠性限定组合范围
成本主要不在高层乘法,而在技能质量、状态估计、数据收集、人工评级和模型服务。图示看起来只有几个模块,背后有长期机器人运维。可读的技能序列不等于执行安全保证;过滤危险示范有价值,但没有覆盖所有未知组合。
作者承认技能库、语言模型误解、长时域能力等限制。本文的进一步判断是:贪心可行性偏好可能压制暂时没有直接进展的准备动作。例如移动障碍后才能抓到目标,单步有用性和可行性未必正确体现这项长期因果关系。
追问:两种评分都排对顺序,为什么乘积仍可能选错技能?
参考答案:排序正确不意味着分数尺度可直接相乘。一个评分变化极陡、另一个很平时,乘积可能主要由前者决定。应固定技能候选,检查可行性分数与实际完成率的对应,再测试尺度变化是否导致选择翻转。乘法提供组合接口,不能自动校准两个来源的概率或消除相关误差。
六、沿机制关系继续读
SayCan组合已有语言模型与机器人技能价值,属于模块组合;PaLM-E是平行接地路线,把感知直接接进语言模型生成技能文本,而本篇显式枚举技能并以可行性评分。
七、自测三题与参考答案
问题1:只把技能名称写进提示词,为什么还不够?
这只能告诉模型机器人理论上有哪些动作,不能告诉它此刻手里有没有物体、是否够得着目标。Can模块从当前状态补充条件,才能在同一请求的不同执行阶段选择不同技能。
问题2:任何Q值都可以直接当成功概率吗?
不可以。无折扣、成功终止奖励为1且其余0时,价值才有直接成功概率解释。折扣、密集奖励、额外惩罚都会改变含义;函数逼近误差和不同策略的能力差异也需考虑。
问题3:SayCan的成功说明LLM已经学会底层机器人控制了吗?
没有。LLM负责已有技能的语义选择,底层来自BC、RL、脚本及规划。结果说明这套组合可执行新高层请求,不能说明语言模型会自行产生可靠的新关节控制技能。