一句话定位
用一个大语言模型给自然语言指令列出候选原子技能,再用每个技能自带的强化学习**价值函数(affordance)**给”这一步在当前场景真能不能做成”打分,两者概率相乘选下一步——让一台真实移动机械臂在真实厨房里 zero-shot 执行”我刚锻炼完,给我拿点吃的喝的恢复一下”这类长程抽象指令。这就是 Say(LLM 任务落地)× Can(价值函数世界落地) 范式的开山之作。
背景与定位
SayCan 出自 Robotics at Google 与 Everyday Robots(45 位作者按字母序署名,通讯 Brian Ichter、Fei Xia、Karol Hausman),2022-04 首发 arXiv,2022-08 换上 540B 的 palm 重跑并加入抽屉操作 / 思维链 / 多语言,改称 PaLM-SayCan(CoRL 2022)。
它要解决的核心矛盾是:LLM 有海量世界常识但不与物理世界交互、看不到自己回答的后果——问 GPT-3”我把饮料洒了怎么办”会答”你可以用吸尘器”,对一个厨房里没有吸尘器、也不会用吸尘器的机器人毫无意义;反过来,机器人学出来的低层技能(rt-1 式的”拿起可乐罐""去桌子”)执行力强但不会把”帮我清理”拆解成技能序列。SayCan 的答案是把两者用概率乘法拼起来:LLM 只负责给每个可用技能打”这一步对完成指令有没有用”的分(p(ℓπ|i),task-grounding),价值函数负责给”这一步在此刻能不能成功”打分(p(cπ|s,ℓπ),world-grounding),相乘取 argmax。
范式上它属于 “LLM 作为高层规划器 + 学到的低层技能库” 这一模块化路线,而非 rt-1 之后 RT-2 那种”单网络端到端吐动作”的 VLA。与它同期的 Huang et al.《Language Models as Zero-Shot Planners》用纯 prompt 抽计划、但没有任何世界落地机制,恰好对应 SayCan 消融里的 “Generative” 基线。SayCan 的价值函数落地思想直接催生了后续 Inner Monologue(同组 Huang et al. 2022,加入成功检测器 / 场景描述 / 人类反馈做闭环)、Code-as-Policies、PaLM-E 等一系列”LLM + 机器人”工作。低层技能这一侧则与 peract、implicit-bc-ibc、calvin、behavior-transformer-bet 同属这一时期语言条件操作策略的探索。
模型架构
SayCan 不是一个网络,而是”打分式 LLM 规划器 + 一堆各带策略/价值函数/语言描述的技能”的组合系统。
规划器(Say)= 打分模式的 LLM。
- 默认用 540B 参数的 PaLM(LLM 消融时换 8B / 62B / 540B 及 137B FLAN)。
- 关键不是让 LLM 生成,而是用 scoring 接口:给定 prompt 上下文 + 高层指令
i,让 LLM 对固定候选技能描述集ℓΠ逐个打条件概率p(ℓπ | i, ℓπ_{n-1}, ..., ℓπ_0)。这样输出被硬约束在机器人真会做的技能里,且天然可解释(能看到每个候选的概率)。 - 交互被结构化成人机对话(“How would you… — I would: 1. … 2. …“),迭代地把选中的技能追加回 prompt 再查一次,直到选出 “done”(Algorithm 1)。
技能库(Can)= 语言条件的低层策略 + 价值函数。 每个技能 π 三件套:策略、价值函数 Qπ(s,a)、短语言描述 ℓπ(如 “pick up the can”)。
- 动作空间:末端执行器 6-DoF 位姿 + 夹爪开合 + 移动底盘的 x-y 位置与 yaw 增量 + terminate 动作。
- 语言条件:技能描述用**冻结的 Universal Sentence Encoder(USE)**编码成 embedding 喂给策略/价值函数——注意”造 embedding 的语言模型”与”做规划的 LLM”是两个模型,因而可以各司其职(规划用大模型、技能条件用小 sentence encoder)。
- RL 价值函数网络(仿 MT-Opt):相机图像先过 7 层卷积;语言 embedding 与机器人动作、非图像状态(如夹爪高度)拼接,过 FC 后空间平铺加到卷积体上,再过 11 层卷积;输出经 sigmoid 使 Q 恒在 [0,1]。支持异步控制(推理时机器人还在执行上一动作,网络会被告知上一动作剩多少)。
- BC 策略网络(仿 rt-1 前身 BC-Z):USE 语言 embedding 通过 FiLM 调制一个 ResNet-18 主干;最终视觉特征过多层 FC,分别输出各动作分量(臂位置、臂朝向、夹爪、终止)。BC 不用上一动作和夹爪高度。
- 技能→affordance 的标定:价值
v(s)=max_a Qπ(s,a)用交叉熵方法(CEM)优化求得,再经经验标定成 [0,1] 概率。具体:pick 用clamp((v−0.2)/(0.5−0.2),0,1);go-to 用到目标的距离 d(米)线性映射clamp((100−d)/100,0,1);place 直接设 1.0(假设先 pick 才能 place,语言已足够判断);terminate 给固定小值 0.1,保证无可行技能时能收敛终止。
机器人本体:Everyday Robots 移动机械臂,7-DoF 手臂 + 两指夹爪,单臂、RGB 观测。
数据
数据全部服务于训练低层技能(规划器 PaLM 是现成的、zero-shot,不针对机器人再训)。
- BC 遥操作示范:68,000 条,用 10 台机器人、历时 11 个月采集。操作员戴 VR 头显手柄映射到末端位姿,用摇杆控底盘。
- 自主数据扩充:额外收集 276,000 条学到的策略自主 rollout,经成功过滤后得到 12,000 条成功 episode 并入 BC 训练。
- 数据清洗:人工评审把 episode 标为 unsafe(撞环境)/ undesirable(碰了无关物体)/ infeasible(技能做不了或已完成),任一命中即剔除。
- 奖励标注:稀疏奖励,episode 成功=1.0、否则=0.0。成功与否由人评:给评审看机器人执行视频 + 指令,3 人中 2 人同意才算成功。
- RL / 仿真数据:真机机队之外补一套 Everyday Robots 仿真里的技能与环境,用 RetinaGAN 做 sim-to-real(把仿真图像变真实、保物体结构);先用仿真示范提供初始成功、再在仿真里持续在线采数据改进 RL。图像增强:随机亮度/对比度、随机裁剪(640×512 上下左右 pad 后裁回)。
- 技能规模:论文提出 551 个技能,跨 7 个技能族、17 类物体(拿/放/重排/开关抽屉/导航/摆放等);实际评测环境用 15 类常见厨房物体 + 5 个语义位置(两个台面、一张桌子、垃圾桶、用户所在处)。技能开发是渐进的:从 2021-04 的 1 个指令长到发表时的数百个,历经 366 次真机模型评测。
训练方法
- 两条腿并行训练技能:BC(行为克隆,仿 BC-Z)出策略,RL(TD 强化学习,仿 MT-Opt)出价值函数/affordance。作者发现现阶段 BC 策略执行成功率更高,但 RL 的价值函数对”把控制能力翻译成对场景的语义理解”不可或缺——所以最终系统里动作用 BC 策略、affordance 用 RL 价值函数(同一技能同时训两套)。
- BC 目标:连续动作分量用 MSE、离散分量用交叉熵,各分量等权。图像下采样到半尺寸(256×320)加速;但价值函数用全尺寸训练(半尺寸学
Q(s,a,ℓπ)效果差)。 - RL 目标:稀疏 0/1 奖励下用 log loss 更新 Q;优先经验回放,优先级调成让每个技能回放池里成功率接近 50%(优先级
1+10·|p−0.5|)。 - 技能标定与逻辑:价值函数需经验标定成概率;SayCan 加硬逻辑——已完成且已拿到奖励的技能(如已经站在桌前还选”去桌子”)不再执行,避免死循环。
- 规划器一侧靠 prompt 工程(无训练):为快速调 prompt,作者造了个”语言仿真器”——给定 query 与解序列就吐出一致的 affordance(含干扰项),验证 SayCan 能否恢复正解。prompt 例子数消融(语言仿真器上 50 条指令):0 例时带 done 约束仅 10%、不带 54%;1 例大幅改善;4 例达 82%;本文最终 prompt 用 17 个例子、恢复 88%。经验教训:步骤显式编号(1. 2.)且换行、技能/物体命名自然(“a” vs “an” 拼写不当都会因自回归打分出错)、例子别老用同一物体(会带偏打分)、对话式(How would you—I would)对 PaLM 更自然。
- 思维链变体:vanilla SayCan 不会处理否定(“拿个不是苹果的零食”),继承自 LLM 的已知缺陷。加 CoT 后能处理——prompt 里加 “Explanation” 段,先用生成解码产出一段解释、再把解释塞回 prompt 用打分模式排序技能。
Infra(训练 / 推理工程)
- RL 价值函数训练:16 块 TPUv3、约 100 小时;外加 3000 个 CPU worker 采 episode + 3000 个 CPU worker 算 target Q(把 target Q 算在 TPU 外,让 TPU 专做梯度更新)。
- BC 策略训练:16 块 TPUv3、约 27 小时。
- 推理 / 控制:网络设计支持异步控制(推理时机器人仍在执行上一动作,模型被告知上一动作剩余量)。评测每 episode 上限 50 个动作或策略吐出 terminate 即结束。具体控制频率 Hz / 端到端时延 / 单步规划耗时未披露。
- 规划器算力:PaLM-540B 的推理成本论文未披露(作为外部服务调用)。
评测 benchmark
主评测:101 条指令 / 7 个指令族(NL 单原语、NL 抽象名词、NL 抽象动词、结构化语言、具身、众包、长程),两套厨房(mock 训练厨房 + 真实办公厨房)。两个指标:plan success rate(选的技能对不对,3 人 2 同意)与 execution success rate(真机是否执行成功,3 人 2 同意)。
PaLM-SayCan 主结果(mock kitchen):计划成功率 84%、执行成功率 74%。 迁到真实厨房:计划 81%(−3%)、执行 60%(−14%),说明策略/价值函数泛化尚可。
按指令族(mock,计划/执行):NL 单原语 100%/100%,NL 名词 67%/47%(名词多达 15 物体+5 位置,比 6 个动词难),NL 动词 100%/93%,结构化 93%/87%,具身 64%/55%(失败多因 affordance 误判),众包 87%/87%,长程 73%/47%(最难,多因 LLM 过早 terminate)。误差归因:65% 是 LLM 失败、35% 是 affordance 失败。
消融(101 任务,计划成功率):
- No LLM 基线:BC NL(整条指令直接喂策略,代表标准 BC/RL 指令跟随)全 0%;BC USE(指令投到最近技能)单原语 60%、其余 0%,总执行仅 9%。→ 证明语言落地必要。
- No affordance 基线:No VF(只取 LLM 最高分技能)计划 67%;Generative(LLM 生成再 USE 投最近技能,≈ Huang et al.)计划 74%——都低于 SayCan 的 84%。→ 证明 affordance 落地必要。
- LLM 规模:FLAN-SayCan 计划 70% / 执行 61%,PaLM-SayCan 84% / 74%,误差减半;且 PaLM 优于专门指令微调的 FLAN。作者称这是”首次看到语言模型的进步直接转化为机器人性能的进步”。
新能力案例:抽屉操作 21 条 query,计划 100%、执行 33%(连续操作策略失败拖累),且不损其他指令性能;多语言(中/法/西)计划成功率几乎不掉(12 条里仅 1 条法语 0.0,即”我的可乐洒了”那句的法译);CoT 可解否定题。
开源环境(非主结果):Colab 桌面 UR5 + 彩色积木/碗,低层策略用 CLIPort、affordance 用 ViLD 目标检测器(无价值函数)、LLM 用 GPT-3。
创新点与影响
- 把”LLM 该做什么”与”机器人能做什么”用一条概率乘法干净地拆开又拼起:
p(ci|i,s,ℓπ) ∝ p(cπ|s,ℓπ)·p(ℓπ|i)。affordance 让 LLM 看见当前场景,技能描述集让 LLM 只能说机器人会的话。 - 用 RL 价值函数当 affordance:稀疏 0/1 奖励下的价值函数天然就是”这技能此刻可行吗”的概率,把控制能力翻译成 LLM 能消费的语义信号。
- 打分而非生成:既硬约束输出到可执行技能集,又带来逐步可解释性(能看到 LLM 分 / affordance 分 / 合并分三条),利于安全与人机交互;affordance 还能”否决”LLM(想拿海绵但场景没海绵→改成”找海绵”)。
- 首次实证”换更强 LLM → 机器人更强”(FLAN→PaLM 误差减半),把 NLP 的进步接到机器人上,成为后续 LLM-机器人系统(Inner Monologue、PaLM-E 等)的范式起点。
作者自陈局限:① 继承 LLM 的偏见与训练数据依赖(否定、有咖啡因的饮料等歧义仍难);② 系统上限被低层技能的范围与鲁棒性卡死,才是主要瓶颈(长程失败多在链式操作或 LLM 过早终止);③ 当前没有闭环反馈——技能报了高 value 却执行失败时,系统不易实时纠错(后续 Inner Monologue 正是补这一点);④ 自然语言是否是给机器人编程的正确本体,作者认为仍是开放问题。
原始链接
- 论文(arXiv abs):https://arxiv.org/abs/2204.01691
- 论文 PDF:https://arxiv.org/pdf/2204.01691
- 项目主页:https://say-can.github.io/
- 官方博客(Google Research):https://research.google/blog/towards-helpful-robots-grounding-language-in-robotic-affordances/ (原 ai.googleblog.com/2022/08/towards-helpful-robots-grounding.html)
- 开源代码(tabletop Colab):https://github.com/google-research/google-research/tree/master/saycan
- 视频:https://youtu.be/ysFav0b472w
一手源存档(sources/)
- saycan—blog — Google Research 官方博客快照(68k demos / 10 robots / 11 months、84%/74%、消融表)
- saycan—project-page — say-can.github.io 项目页快照(What’s New 时间线、abstract、approach、results)
- saycan—github-readme — 开源 tabletop 实现 README 快照
- arXiv 原文 PDF(2204.01691,含 Appendix C 训练/infra、D prompt/标定、E 多语言表)——arXiv 原文 PDF,不入 git,见上方 PDF 链接