枢纽
机器人Everyday Robots
上真机
实时
输入模态vision,language

Inner Monologue:让 LLM「边想边做边纠正」的机器人规划

Wenlong Huang, Fei Xia 等(Robotics at Google)。arXiv:2207.05608 (2022)。 项目页 · foundation_modelsLLM 规划线索

🧠 一句话心智模型:之前的 LLM 机器人规划(SayCan 等)像「写完菜单就转身走人」——一次性吐一串动作给机器人执行,执行错了它也不知道。Inner Monologue 给 LLM 装上「眼睛和耳朵」:每执行一步,就把「做成功了吗 / 桌上现在有什么 / 人又说了什么」翻译成文字塞回 prompt——LLM 像人一样在脑子里自言自语,发现错了就重试或改计划。

🎯 为什么重要:LLM 规划的「开环」死穴

2022 年 SayCan / Huang et al. 等工作把 LLM 当机器人「大脑」:把高层指令(「给我拿杯喝的」)拆成技能序列(「去桌边 → 拿可乐 → 回来」)。听起来很美,但有个致命假设——每一步都执行成功

核心问题(开环规划):现实里机器人抓取可能失败、物体可能被遮挡、人可能中途改主意。一旦某步失败,LLM 完全不知道,仍然照原计划傻做下去——「去拿可乐」失败了,它下一步还是「带回来给你」,结果抓着空气回来。

论文用一句很妙的话总结人脑的做法:人类开门时会想「拿钥匙→插锁→诶不对,换一把→这把行了→转」。这个内心独白(inner monologue)里有观察(「不对」)、有纠错(「换一把」)。论文就问:能不能让 LLM 也形成这种内心独白?

(a)开环 LLM 规划(SayCan 等) 指令 LLM 技能1 → 技能2 → 技能3 → ...(错也照做) (b)Inner Monologue(闭环) 指令+反馈 LLM 技能 ✅ 成功? / 📦 看到啥? / 🗣 人说啥? ↑ 翻译成文字,塞回 prompt
图 1:开环 vs Inner Monologue。区别只在一个「回环」——把环境反馈翻译成文字喂回 LLM。

💡 核心思想:把一切反馈翻译成「文字」塞进同一个 prompt

Inner Monologue 不训练任何东西——LLM 是冻结的,只靠 few-shot prompting。它的全部魔法在:把异构的环境反馈统一翻译成自然语言,拼到 LLM 的 prompt 里。论文把反馈分成三类:

LLM Prompt 人类指令 + 历史 + 反馈 ① Success Detection 「Action successful: True/False」 任务级成败分类器 ② Passive Scene Description 「I see: coke, water, ...」 每步自动注入(物体/进度) ③ Active Scene / Human 「Robot ask: ...? Human: ...」 LLM 主动发问 下一个技能 或「我完成了」/「请问…」 执行 → 产生新反馈 → 回到 prompt
图 2:Inner Monologue 的「内心独白」回环。三类反馈(成功检测 / 被动场景 / 主动询问)都翻译成文字塞进同一个 prompt,LLM 据此输出下一步。

关键在于:反馈不是数字向量,而是文字——这正好是 LLM 的母语。所以不需要训练,prompt 拼好就能用。

🛠️ 怎么做:三个领域、三种实现、同一套思想

论文特意说明 Inner Monologue 不是「某个具体算法」,而是一种范式 case study:三个领域用了不同的 LLM、不同的反馈、不同的低层技能——但都遵循「文字反馈 → LLM → 技能」的回环。

领域LLM反馈类型低层技能对照基线
仿真桌面重排
(Sec 4.1, Ravens)
InstructGPTObject(脚本) + Scene(任务进度) + Success(脚本)CLIPort 风格 pick-placeCLIPort 多任务(含 oracle 终止)
真机桌面重排
(Sec 4.2, UR5e)
InstructGPTObject(MDETR 开放词表) + Success(包围框启发式)零样本吸盘 pick-place开环(只描述一次场景,Socratic 风格)
真机厨房移动操作
(Sec 4.3, Everyday Robot)
PaLMSuccess(学习分类器) + Object(人提供) + 可选 Human(LLM 主动问)SayCan 的技能库 + value function 做 affordance groundingSayCan(开环)
🔮 直觉:为什么「Object + Success」比单独任一个都强?
两者解决的是不同的失败模式:缺 Object → 一开始就漏看了被遮挡的物体,计划天生残缺;缺 Success → 抓取失败了也不知道,不会重试。论文 Table 2 显示:真机桌面上「Object only」45%、「Success only」40%,但合起来 90%——互补,不是简单叠加。

测试时为了检验「闭环纠错」的价值,论文在所有领域都故意注入扰动(仿真:像素/动作/放置位置加高斯噪声;真机:动作噪声 σ=4mm;厨房:人对执行过程加对抗性干扰),强制制造失败,看系统能否恢复。

📊 关键结果(数字均来自原文表格)

实验基线Inner Monologue 最佳变体结论
仿真桌面(Table 1,每任务 50 episodes,seen 任务)
「Pick and place」
CLIPort + oracle:74.0%Object + Scene:94.0%反馈越丰富越准;unseen 任务从 0% 拉到 6–86%(Object+Scene:「mismatched bowls」86%、「stack on corner」仅 6%)
仿真桌面 unseen「mismatched bowls」CLIPort:0.0%;CLIPort+oracle:0.0%Object + Scene:86.0%
真机桌面(Table 2,10 runs 平均)
Total
LLM 开环:20%Object + Success:90%两种反馈互补:单独 40–45%,合起来 90%
真机厨房移动操作(Table 3,120 evaluations,含标准+对抗扰动两条件
Total
SayCan:30.8%Object + Success:60.4%有对抗扰动时 SayCan 接近 0%;IM 把移动操作从 0% → 75%
关键洞察:30.8% 是 SayCan 在 120 evaluations(标准 + 对抗扰动两条件合计)上的总平均;在无扰动条件里 SayCan 尚可(manipulation 50.0% / mobile 50.0% / drawers 83.3%),但 一旦加扰动,几乎归零(manipulation 12.5% / mobile 0% / drawers 0%)——因为它根本不知道自己失败了。Inner Monologue 的价值在「失败恢复」,这正是真实部署最需要的。

🌟 四个「涌现」能力(论文 §4.4)

下面这些行为 prompt 里没教过,但 LLM 在反馈驱动下自发涌现:

能力含义
Continued Adaptation人中途改指令(「算了我改主意了」→「还是做上一个吧」),LLM 能跟着切两次
Self-Proposing Goals紫色方块太重拿不动 → LLM 自己提出「找轻一点的」,换蓝色方块成功
Multilingual Interaction人用中文下指令,LLM 自动翻译成英文目标并执行
Interactive Scene Understanding任务做完后人问「紫碗里有啥?」,LLM 凭执行历史+反馈正确作答

🌐 在领域中的位置

TAMP / 符号规划(需手工建模) SayCan / Huang 2022(LLM 开环规划) Inner Monologue(闭环文字反馈)⭐ Code as Policies / Voxposer(LLM 生成场景代码) RT-2 / π0(VLA 端到端,反馈隐式进权重)

Inner Monologue 是 LLM 机器人规划从「开环」走向「闭环」的转折点。它的解法非常「工程」——不训练、用文字缝合所有模态——这恰好是 2022 年最务实的选择。今天 VLA 把这套反馈内化进权重,但「文字作为通用接口」的思路仍贯穿 Socratic Models、Code as Policies 等。

❓ 常见误区

Inner Monologue 训练了 LLM 吗?

没有。LLM 完全冻结(用 InstructGPT / PaLM 现成模型),只用 few-shot prompting。论文的工程量在「把各类反馈翻译成文字」+「拼 prompt」。

那它和 SayCan 的根本区别是什么?

SayCan 的 LLM 也是开环——它用 value function 做 affordance grounding(过滤不可执行的技能),但执行后不反馈给 LLM。Inner Monologue 在 SayCan 基础上把 Success/Object 反馈 塞回 prompt,让 LLM 能 retry/replan。Table 3 就是直接和 SayCan 对比。

「Inner Monologue」这个内心独白具体指什么?

LLM prompt 里那段不断增长的对话历史:人指令 → 机器人动作 → 场景描述 → 机器人思考 → 动作 → 成败……每一步都把新反馈拼进去,看起来就像 LLM 在「自言自语」地推进任务。

它的局限?

论文 §5 自承:(1) 仿真/真机部分实验用了 oracle 场景描述(人或脚本提供),全自动版本依赖 VQA/captioning 进步;(2) 系统可能因 success detector 假阳/假阴LLM 忽略反馈 而失败;(3) 整体上限被低层技能卡死——LLM 推理再好,抓不住就是抓不住。