从结构化表征到无演示学习之路。

    作者丨吴思梦

    编辑丨岑   峰

                                                                                                       

一个盘子,一只水龙头,一小团蓝色的洗洁精。
吴佳俊用这样一个几乎没有技术含量的厨房场景,开始了他在 IROS 2026 的演讲。
一个学生挤了洗洁精,打开水龙头,洗了一半,临时离开。现在,换成机器人接手。第一眼看过去,任务直接明确:把盘子洗干净,再放回去。但机器人真正需要处理的,并不是“洗盘子”这三个字。
它得先知道,眼前哪个东西是盘子;得知道这个盘子到底脏不脏;得注意到盘子上有没有那一小团蓝色的洗洁精。它还得知道水龙头现在是不是已经开着,盘子是不是已经被洗过,以及当它把盘子拿起来以后,桌面上是不是又暴露出了一个新的问题。
同一个任务,换一个初始状态,答案就可能完全不同。盘子已经洗过了,就不用再洗。没有洗洁精,就得先挤一点。盘子下面如果压着脏东西,“把盘子洗干净”也就不再等于把盘子放上架子。
人面对这些变化时,往往不会觉得自己做了什么复杂的推理。我们只是看一眼,然后继续做。
但对机器人来说,每一次“看一眼然后继续”,背后都藏着一个问题:它究竟把眼前的世界理解成了什么?
9 月 27 日,IROS 2026 开幕当天,斯坦福大学计算机科学系助理教授吴佳俊在 RoBoWoMo 研讨会上发表了题为《Building Physical Agents via Structured Representations》的受邀报告。
过去几年,他一直在研究如何从图像里恢复出藏在视觉背后的世界:几何、材质、物理属性,以及物体之间的关系。现在,当这些问题被放进机器人真正生活的物理世界里,另一些问题随之出现。
机器人该用什么方式描述一个任务?这些描述能不能自己学出来?面对训练数据里从未出现过的物体,模型什么时候需要后训练?如果规划本身也可以学习,那么传统的规划器还是否必要?
最后,问题甚至不再是“机器人有没有看过人怎么做”。
如果没有演示,没有遥操作数据,甚至面对的是一个从来没见过的水龙头,机器人还能不能自己想出:它可能怎样被使用?
以下是吴佳俊在 IROS 2026 发表的演讲精编稿。雷峰网·AI 科技评论基于现场英文演讲进行了编辑,在不改变原意的基础上,对口语表达和技术术语进行了重新梳理。

▎Building Physical Agents via Structured Representations

主讲人:吴佳俊,斯坦福大学计算机科学系助理教授(兼任心理学系助理教授)
图片

01


一只盘子,为什么会让机器人犯难

今天我想讲的是,我们怎么用结构化的表征,构建出能在物理世界里做事的智能体。
先从视觉讲起。说到底,你只看得见图像,而图像背后站着一整个世界:几何、材质、不同的物理属性。我们的研究主线一直是,这些东西能在多大程度上被还原出来;而一旦你把它们还原出来了,你就可以重新创造这个世界。
这几年还有一个很热闹的方向,是数字空间里的智能体。它们接收指令,和整个世界交互。这自然让人想到另一个问题:物理世界有没有同样的结构?在数字世界里,你有目录,目录里有文件,文件有它的属性;在物理世界里,你有场景,场景里有物体,物体也有它的属性。那么,我们能不能利用这种结构,把那些智能体从数字空间带到物理空间来。这就是今天这场报告的主题。
一旦你真的要让机器人和人待在同一个世界里,事情就变难了。这个世界很复杂,它是动态的,也是多样的,你要处理大量不同的任务。当然要用基础模型,它们现在越来越强,强大到让你觉得不拿来用简直说不过去。但你用它们的方式可以很不一样:要不要做后训练,要不要引入更多结构,要不要把一些额外的知识接进来,接进来之后又怎么和已有的部分结合。这些都是待定的选择。
还有一处和机器人特别相关、和数字世界很不一样的地方。数字世界在相当程度上被语言统一了;机器人这边则是另一番景象,不同的领域、不同的任务,很多时候是专有场景、专有数据,每一台机器人都不一样。这些数据不会出现在训练大模型的那批海量语料里。所以问题变成:怎么越过这道墙。
说了这么多抽象的,我们从一个完全不专有的场景看起,一个很普通的厨房场面,看看哪怕在这样的场景下,要让机器人系统真正和人一起干活,需要什么。
一个学生往盘子上挤了洗洁精,打开水龙头,然后有事得走开。现在换机器人来做。它当然要先做一层语义推理:这一堆陶瓷餐具里,哪一件是我要帮忙洗的?是这只盘子。这一步在今天用视觉模型做起来相对容易。接着它需要想明白,这只盘子是要洗的。洗洁精已经挤上去了,水龙头已经开着了。所以我要做的,就是拿起盘子、洗、放到架子上、关上水龙头。
看起来很清楚。但真正难的地方在于:你怎么在不同的环境、不同的物体、不同的目标之间保持一致。哪怕在这个已经很简单的场景里,也会冒出几种完全不同的情况。
第一种,是你要适应别人的动作。比如有个人进来,把盘子洗了,放回桌上。这时候你应该知道,盘子已经洗过了,不用再洗一遍。你要做的只是把它放回去,也不用去关水龙头,因为它已经关了。
第二种,是初始状态里那种很细微的差别。假设一切都和之前一样,唯一的区别是这个盘子上没有洗洁精。你去看整张图,这个差别非常小,那只是一小团蓝色的东西,很不容易看见。但它不是一句“细微差别”就能带过去的:这是状态表征上的定性差别。因为如果盘子上没有打过洗洁精,你很可能就不应该去洗它,直接洗会搞得一团糟。你要先打上洗洁精,然后才洗,然后上架,然后做完其余的事。输入上的差别很小,状态上的差别是定性的,要做的动作也完全不同。
第三种,是你要跟着不断更新的观测走。比如机器人拿起盘子,放上架子,这就够了,因为它已经干净了,也不用去关水龙头。但盘子底下压着一些脏东西。这时候你要意识到,如果我的目标真的是让一切都干净,那我就应该去擦桌子。没有人这么吩咐过你,你是跟着新的观测走才想明白的。理想情况下,你还应该把那盘东西放回去;但是我们连这一步都做不到,因为机器人的本体和它掌握的技能把它限制了。
所以你要对所有这些不同的情况都有适应能力。问题是,怎么做到。
图片

02


如果机器人也需要一门语言

过去几年我们一直在摸索一套范式。它的具体实现一直在变,因为基础模型在变,各种可能性也在变。但骨架一直是这样:一端是原始输入,视频或者语言;中间靠基础模型去发现一组具备组合性的抽象;这些抽象要能被复用、能被重新组合,去应付通用的任务;另一端是控制动作,最好是自己发现、自己学出来的。
在学动作这件事上,我们希望从所谓的自然监督里学。也就是说,整个过程是学习出来的、是发现出来的,人参与得越少越好。你给它的可能只是一段视频、一段演示,或者一些语言,而现在这些输入本身已经能被处理了。监督越轻,通用性越好。
但这么画下来,有一连串的问题浮在纸上。这些组合性的抽象长什么样?它们怎么被发现?那套描述任务的专门语言从哪来?如果你根本不需要它呢?规划该怎么解决,用传统的任务规划器,还是学一个规划器?还有,这个世界模型本身,你是拿来就用,还是要微调或者后训练。这些沿着路线都有不同的实现,我们自己也一路试过不同的版本。
我先从高层讲一下大概的结构。最早的那一版实现是两年前做的,那时候的具体部件比现在粗糙得多,但范式已经清楚了。
假设你有一批演示。可以是机器人当场把很多不同的任务做一遍,你可以在整个过程里抓出关键点,比如第一步抓住了碗,第二步拿到水龙头下面冲,第三步放进架子。也可以是别的东西,视频数据也行,总之你手上有这么一批数据。你的目标是学出这段任务背后的一套描述。这有点像一组符号式的世界模型,里面大致有两组模块。
第一组是你关心的属性和空间关系。这个物体脏不脏,是脏还是干净;这两个物体之间是什么关系,二维的关系、三维的关系。这类东西要能被判定,这就是一组谓词。判定当然不能靠人写规则,要用网络、用基础模型去学:让它们学会判定任意一组谓词,不管是脏不脏,还是某种空间关系。
第二组是动作。你有一组原子动作,比如“洗”。每个动作都要说清楚它的前置条件和后置效果。洗这个动作,要先把东西抓在手里,人现在得在厨房里;效果是,如果这个物体身上有洗洁精,它就变干净了。至于怎么知道机器人手里是不是抓着东西、怎么知道一个物体是干净还是脏,这些交给前面那组谓词去判定。
同时,要真的执行一个动作,你还需要策略,也就是关节要怎么出力。这一部分同样是神经网络,每个原子动作配一个扩散策略。
这样一来,符号那层定义了组合性:只要前置条件都满足,这些原子动作就可以串起来,串成更长程、更复杂的任务。而感知和控制全都是神经网络在做。
但某种意义上,这就是一门专门语言,一套领域专用语言(DSL)。于是有个很根本的问题摆在那儿:最早的时候,这些东西要么是人手写的,要么是从 PDDL 之类的地方直接照搬,DSL 已经固定了。那么它够通用吗?为什么它就足够?如果里面有遗漏的东西怎么办?
所以下一步自然就是:DSL 本身也要能学。你可以让基础模型去看你手上的数据,可以是演示视频,可以是操作记录,也可以是语言,然后告诉它,这是我们要关心的任务,接下来它应该输出:我觉得下面这些属性是重要的,下面这些原子动作、以及它们的前置条件和后置效果是重要的。
那如果它说错了呢?你也可以验证。一方面可以符号化地验证,另一方面可以直接拿数据去验证。比如系统说,洗东西之前一定要先把它抓在手里,否则洗不成。那你就回去翻一遍自己的数据:每次我洗东西的时候,是不是真的都先抓起来了?你可以用你手上这些演示或者别的数据,公开的或者专有的,去验证这套规格。
所以这门语言本身也是由另一个系统提出来的。去年我讲这一段的时候讲得挺乱,今年希望好一点,因为我发现一个好的类比能让它清楚很多。
这个类比就在你们自己的电脑上。你在编程智能体里粘贴一句“做个这个”,它会自己干出十步八步。第一步创建一个文件,第二步执行某个操作,一步步往下。它有好多不同的步骤。仔细想想,这和我们要做的事非常像。我们做的事,本质上是把 Cursor 那样在电脑上干活的智能体搬进物理空间:先想出一串计划,然后要执行这一串动作,同时还要有一层验证,确保这些动作被定义对了,也被执行对了。
基本上就是这样。
图片

03


遇到没见过的东西,模型怎么办

接下来讲讲什么时候得坐下来做后训练。当然,如果像刚才那个类比里说的,直接用前沿模型一路推到底,那是最省事的。但机器人这边有个绕不开的问题:你要打交道的东西,很可能以前从来没见过。
因为物理世界比数字世界要割裂得多。你可能看到过某种样子的物体,但更常见的情况是,你有一条流水线上用的零件,只有你这家工厂有,别处都没有。我从来没见过这个零件,现在我要判断它脏不脏、判断有没有产生某种效果。这时候显然不能直接拿公开的前沿模型来用,因为它连“这个零件好还是坏”的定义都不知道。
所以确实会有一些情况是,你得做一点后训练。前提是你决定不只依赖那些现成的前沿模型。
那怎么做呢?要注意一点:这些效果虽然看起来是逻辑的,比如它身上有洗洁精,洗完了它就变干净了,但落到实现上,它们其实是近似地写出来的,逻辑运算最后多半以概率的形式存在。所以你可以把整条链串起来:我说这东西身上有洗洁精,我洗了它,它就应该干净了。
但如果我的“是否有洗洁精”那个判据不好呢?因为这是个从没见过的新物体,它判不出来,输出就错了,后面跟着全错。而这时候,我的演示告诉我另一个事实:这个物体确实干净了。于是你就有了一个标签。既然所有执行步骤都是可微地堆起来的,你就可以用演示里的这个执行标签来反向传播,给模型监督。
所以后训练在某些情况下是可以做的。它不是必需的,但如果你把这些模型当成系统里的模块,而它们又需要被后训练,这条路是通的。
两年前那批结果我就不细讲了,那套部件现在看已经过时了,而且换方法之后会觉得当时有些地方做得挺笨。但那个范式本身潜力很大,我们后来把里面不同的部件分别换成了更现代的版本。
顺带一提,那个工作当时的一位博士后现在在新加坡国立大学做教授,另一位合作者当年是 MIT 的博士生,如今也成了教授。
图片

04


连规划,也开始交给模型

接下来我要讲几件更近的进展,我讲得快一点。
前面讲了,那套系统里的模块是一层层长出来的,验证、感知、控制都已经交给了神经网络。但有一件东西还没有:规划。当你有了所有模块,也验证了状态,那么我应该先洗,还是先做别的?这一步当时还在用传统的东西,来自传统任务规划的那条脉络。
而就在最近,我们刚投出去一篇工作,专门把这一块也换掉。这也是为什么我今天没有太好的幻灯片,本来我应该有个视频的,我确实想要视频。所以乐观一点说,我们过几天会有一段漂亮的视频。现在只能用论文里的一张图先凑着。
这个思路是这样的:你仍然有一组状态,它们由神经网络来验证;但“给定当前状态,我该先洗,还是该先拿起盘子,还是该干什么”这件事,不再交给传统规划器,而是交给网络。
说得更具体一点:那组谓词现在基本上就是自然语言,真正的自然语言,你把自然语言和图像一起当成提示喂给基础模型,让它来做规划。但它也得后训练才行。所以这里我们不得不使用开源权重的模型,因为要动手后训练;同时因为要把图像作为输入的一部分,也需要模型能吃图。
而结果发现,某些开源模型的视觉推理能力还是很差,至少我们测下来远不如同期的闭源模型。所以如果你直接拿来用,它们经常输出一些完全说不通的东西。实践上我们干脆取了一些模型,还是做了后训练。
这样一来,连规划器本身都变成了被后训练、被学出来的东西。它能利用这一类符号式的自然语言去做规划,产出的动作序列可执行概率高得多。而对这类长时程任务来说,这意味着需要的人工干预少很多。
这里面还有一层挑战:所有这些都是以技能库为条件的,而每台机器人的技能库可能都不一样。如果你直接拿任何一个前沿模型来用,它根本没有你这个技能库的上下文。比如它会说,现在你要用水龙头把这个马克杯接满,可是水龙头压根还没开。这个动作就不可执行。而后训练之后,规划器在面对这类长时程操作时,给出的动作更像是真能执行的。
再过几天我们会有视频,今天就先这样看一眼最新的结果。
原文:https://www.leiphone.com/category/private/Hd5ntJGqUoFVY1PJ.html