随着大规模语言模型的发展,是否能够借助它的能力,引导机器人理解复杂指令,完成更高级的任务?而在这一过程中,又会面临哪些挑战?近日,智源社区邀请谷歌研究科学家夏斐博士做“基于语言和视觉的具身推理”报告,详细介绍了团队在这一新兴领域的前沿工作。
作者介绍:夏斐,目前在谷歌大脑的机器人团队任职研究科学家。他的主要研究方向是将机器人应用到非结构化的复杂环境中。他的代表工作有GibsonEnv, iGibson, SayCan等。他的研究曾被WIRED,华盛顿邮报,纽约时报等媒体报道。夏斐博士毕业于斯坦福大学,师从Silvio Savarese和Leonidas Guibas。他曾在CVPR, CoRL, IROS, ICRA, Neurips, RA-L, Nature Communications等会议和期刊发表过多篇文章。他最近的研究方向是将基础模型(Foundation Models)用于智能体的决策过程中。他的团队近期提出了PaLM-SayCan模型。
01 背景
机器学习用于机器人在近年来取得了很大的进展,但依然存在比较大的问题。机器学习需要大量的数据训练,但机器人产生的数据非常昂贵,且机器人本身也会有损耗。
人类在孩童时期,通过玩耍和物理世界进行交互,从中学习到了很多物理规律。受此启发,是不是也可以让机器人和环境进行交互,来获得这些物理的信息,从而完成各种各样的任务?将机器学习用于机器人,很大程度上依赖于模拟环境。
对此,夏斐博士和他的同事们曾提出Gibson Env(Environment)和iGibson等工作,前者注重于视觉环境的重建,后者则注重物理模拟。通过对真实世界进行三维扫描和重建,并通过神经网络渲染视觉信号,创造模拟环境,让各种各样的机器人进行物理模拟,学习从时间传感器到驱动器的控制等。在iGibson环境中,机器人可以学习与环境更为丰富的交互,如学习使用洗碗机等。
夏斐博士认为,上述工作表现的是从互联网AI到具身AI的转变。过去AI的训练主要基于ImageNet、MS COCO等数据集,属于互联网任务。而具身AI要求AI的感知和动作形成闭环——AI要根据感知到的结果决定下一步的动作。夏斐的博士论文“large scale simulation for embodied perception and robot learning”就是关于将机器人模拟规模化后进行学习、感知和推理的。
近年来,基础模型在人工智能领域的快速发展。有研究者认为,可以不依赖模拟环境,而是从基础模型中提取信息,帮助机器人进行决策。夏斐博士称这个新的方向为“Foundation Model for Decision Making”,并和团队提出了PaLM-SayCan等工作。
02 PaLM-SayCan:让语言模型指导机器人
1. 机器人为什么很难处理复杂长程的任务?
PaLM-SayCan团队共有45名作者,是谷歌机器人团队和Everyday Robots的合作项目,目的是探索用机器学习改变机器人领域,并让机器人提供数据,提升机器学习的能力。研究主要关注两个问题:非结构化的复杂环境,以及让机器人能够在日常生活中更有用。
虽然人们已经有了类似Siri或Alexa这样的个人助理,但机器人领域却没有这样的存在。夏博士举了这样一个例子:在饮料洒了的时候,我们希望跟机器人说明情况,请它帮忙。或者运动后疲累,请它提供饮料和零食等。研究希望机器人能够理解并执行这些任务。
目前的难点在于,机器人做长线或长程的任务还比较难,对于需要复杂规划、常识和推理的任务依然无能为力,原因在于两方面。第一个是机器人领域缺乏好的用户交互界面。传统的机器人执行抓取-放置(Pick&Place)任务的时候,通常使用的是Goal-conditioning(目标条件)或独热条件(One-hot Conditioning)方法。Goal-conditioning需要告诉机器人目标是什么,让机器人执行将初始条件改变为目标条件的任务,这需要首先给机器人示范一下,完成后的任务条件是什么样的。
而One-hot Conditioning采用的是One-hot编码,对机器人可以完成的所有任务(如100个任务)用0~99来进行编号。每次需要执行的时候,提供给机器人一个编号,它就知道要去完成什么任务。但独热条件的问题在于需要用户记住每一个任务对应的编码,且独热编码并没有获得各个任务之间的依赖信息(如完成一个目标对应的任务编码序列)。
这些就导致目前机器人只能完成短程的任务,通常是抓取和摆放,且机器人本身是静态而非移动的。此外,环境也局限在实验室这样的场景中,往往没有人类。
2.语言模型用于机器人:如何让它能“说”机器人的语言?
为了解决这些问题,团队想到通过使用基础模型。语言模型可以取代Goal-conditioning,通过语言来清晰、无歧义地描述任务。同时,语言也包含了任务步骤之间的依赖信息,如菜谱上的第一步、第二步等,为机器人学习提供帮助。此外,语言也可以去定义长程任务,解决采用模仿学习方法的局限性。
将大模型用在机器人上,可能面临一些挑战。最重要的是要确定面向机器人输出的语言。大模型是根据人类的自然语言进行的训练,其输出的任务,机器人不一定能做。而且语言模型没有在机器人的数据上进行训练,所以它并不知道机器人的能力范围。第二个是Grounding问题,大模型并没有亲身经历物理世界,缺少具身信息。第三个则是在大模型引导下机器人本身的安全性和可解释性问题。语言模型的偏见可能会因为与物理系统相联系而被放大,对真实世界造成影响。
有关可信性方面有这样一个例子:当人类用户和谷歌的LaMDA模型交流的时候,用户问模型“最喜欢的岛”,模型回答的是希腊的克里特岛,而且还能答出一些原因。但是这个结果并不是可信的,因为AI应该给出的结果是“不知道最喜欢哪个岛,因为哪个岛都没去过”。语言模型的问题便是它没有和真实世界交互过,只是根据统计规律去输出最有可能出现的下一句话。
如果将语言模型用于机器人上,不同的模型会给出不同的结果,其中一些对于驱动机器人执行任务没有用处。例如,用户提出需要让机器人“将洒出的饮料清理掉”,GPT-3可能会说“你可以用一个吸尘器”。这个结果不完全正确,因为吸尘器并不能清理液体。
如果是LaMDA模型,LaMDA可能会说“想不想让我帮你找一个清洁工?”这个回答是正常的,但并没有实际用处,因为LaMDA在对话语料上进行的微调,其目标函数是尽可能延长对话长度,并非帮助完成任务。如果是FLAN模型,它会回复“对不起,我不是故意的。”并没有理解用户的意图:究竟是对话?还是需要解决问题?因此将大语言模型用于机器人上存在一系列问题。
PaLM-SayCan工作就是要解决这些挑战。首先是让大模型能够说机器人的语言,方法是Few-shot Prompting(少样本学习)。例如,构造诸如“将咖啡拿到橱柜上”、“给我一个橙子”等任务,并给出相应的步骤(如1-5和1-3)。然后,用户给出模型一个指示:“将一个苹果放在桌子上”。在有了之前的步骤提示后,模型会自行寻找和组合出合适的任务步骤,一步一步生成完成任务的计划。
需要注意的是,大模型主要有两种交互方式,一种是生成式(Generative Interface),根据输入生成下一个Token;另一种是打分式(Scoring Interface),对给定的Token计算似然函数。PaLM-SayCan使用的是打分式的方式,语言模型会更稳定,容易输出想要的结果。在放置苹果的任务中,模型会对各种步骤进行打分,并选出合适的结果。
3.弥补语言模型和真实世界的鸿沟:让机器人探索环境的可供性
还有一个问题需要解决:语言模型生成任务步骤时并不知道机器人目前能做什么。如果机器人跟前并没有苹果,机器人就无法完成放置苹果的任务。因此,这需要让语言模型知道机器人在当前的环境和状态下可以做什么任务。这里需要引入一个新的概念,叫做Robotic Affordances(机器人可供性),也是这篇工作的核心。
Affordances翻译成中文被称为可供性,是美国心理学家詹姆斯·吉布森 (James J. Gibson)在1977年左右提出的一个概念,定义为一个智能体在一个环境中,在当前的状态下可以做什么任务,就代表它的可供性。可供性可以采用监督学习去获得,但是这样需要大量的数据和标注。
对此,团队采用了强化学习的方法,利用Policy的值函数近似可供性。例如在环境中训练机器人抓取各种东西,训练后让机器人在房间中进行探索,当它看到面前有物品的时候,捡起该物品的值函数就会变得很高,从而代替可供性的预测。
将可供性和语言模型结合,就得到了PaLM-SayCan算法。如上图所示,左侧为语言模型,对用户提出的指令,对机器人可以完成的任务进行打分,计算出完成子任务对完成总任务有帮助的概率。右侧是值函数,代表在当前状态下完成每一项任务的概率。两者的乘积代表机器人成功完成一个对总任务有帮助的子任务的概率。在苹果的例子中,当前状态下机器人面前没有苹果,要完成这个任务,第一件事情就是要找到苹果,所以找到苹果的可供性分数比较高,抓取苹果的分数较低。找到苹果后,抓取苹果的可供性分数提高,则执行抓取苹果的任务。不断重复这个过程,直到总任务被完成。
03 更多具身智能工作:提升模型推理能力,利用环境反馈形成闭环
1.Chain of Thought Prompting:理解复杂常识
除了PaLM-SayCan之外,夏博士和同事们也完成了其他一些相关工作。在Prompt方面,团队提出了Chain of Thought Prompting(可以理解为解题思路)工作,目的是为了让语言模型有更多的推理能力。
标准的Prompt模式是设计问题模板,并给出答案。模型推理时输出答案,但有时候模型给出的回答是错误的。因此,Chain of Thought Prompting的目标就是在提供问题的同时给模型一段解释,这样可以显著提升模型的结果,甚至在一些任务上超过人类水平。
模型在处理否定句的时候容易出错。例如,人类用户提出“给我一个水果,但不要苹果”。模型往往会提供一个苹果,因为问题和可执行的选项中都有苹果。利用Chain of Thought Prompting,可以提供一些解释。例如,模型会输出“用户想要水果,但不是苹果,香蕉是一种水果,不是苹果。我可以给用户一根香蕉”。
Chain of Thought Prompting还可以解决更为微妙的否定要求。例如,用户表示对咖啡因过敏,要求机器人拿一个饮料。过敏是否定的另一种微妙形式,如果用传统的方法,机器人可能会拿一个含咖啡因的饮料(没有理解过敏所代表的否定含义)。而Chain of Thought Prompting可以对过敏等进行解释,提升推理效果。
2.Inner Monologue:纠正错误,回到正确的执行轨道上
将大模型做机器人决策和环境交互相结合也是研究的重要方向。团队提出了Inner Monologue的工作,目的是让语言模型可以根据环境的变化来回溯以往的决策,从错误的指令或环境带来的意外中恢复。
例如,人类回家的时候,发现选择的钥匙打不开门,这时候人们会选择换另一把钥匙试试,或者换个转动的方向。这体现的就是根据环境的反馈来纠正错误,更新出新的动作。Inner Monologue工作就是这样的思路。例如,机器人抓取可乐的过程中,如果可乐掉下去,后续的任务无法完成,就需Inner Monologue这样的工作,检测任务是否完成成功,并将反馈放入决策过程中,根据反馈信息来作出新的决策。
如图所示,Inner Monologue工作包含了主动情景描述(Active Scene Description)和任务成功检测器(Success Detector)。当人类下达指令的时候,模型可以执行指令,并激活情景描述,用于辅助机器人的决策。训练过程依然使用Few-shot Prompt的方式,使其能够举一反三。例如,当机器人接到指令去取饮料的时候,它会询问人类究竟是取可乐还是苏打水。
另一个案例是语言模型对历史信息进行的推理,在很多时候人类会在下达命令后改变主意,或者改变多次指令后要求机器人完成“刚才的任务”。在这里,“刚才的任务”没有具体指定,这就需要模型回溯历史,看一下之前的任务是什么。除了英文之外,目前Inner Monologue还可以在中文等语言上使用。经过在其他领域的实验,团队发现这种环境反馈的方法能够完成一些非常复杂和闭环的规划任务。
04 Q&A
Q:PaLM-SayCan的大语言模型是从头训练的吗?还是只用了模型。
A:大预言模型不需要做Fine-tune,本身已经包含了很多决策的信息。例如用1750亿参数的GPT-3,或者PaLM都可以,其本身已经包含了足够多的任务规划的、序列的信息。
Q:在Inner Monologue工作中,Agent也会主动提问吗?这是怎么是吸纳的?
A:我们用语言模型和Prompt的方法,在机器人完成一个任务的时候,会出现两个选项“and ask”和“and continue”。究竟是提问还是继续,取决于上下文语义中是否有歧义。
Q:机器人怎样知道一件物品在什么地方(比如薯片在抽屉里)?如果将来机器人具备的能力逐渐增加,是否会造成在探索的过程中搜索空间过大?
A:机器人对于物品的存放位置的知识,目前是硬编码的,不是一个自动的过程。但大语言模型也包含了一定的语义知识,比如物品在哪里。这种语义知识可以减少搜索空间。同时,也可以根据找到物品的概率去做探索。目前,夏斐团队发表了一篇新的工作来解决这个问题,其核心思想是建立一个自然语言索引的场景表示。参考网站 nlmap-saycan.github.io
Q: 另外,近年来兴起的分层强化学习,是否对复杂任务规划有一定的启发?
PaLM-SayCan和分层强化学习有异曲同工之处,有着底层技能和上层任务的规划,可以说是一个分层的方法,但并不是分层强化学习。我个人比较看好这种分层方法,因为做任务规划的时候,不一定要去做每一个细节的步骤,这样会很浪费时间。任务规划可以使用海量的互联网数据训练,但底层的技能需要物理数据,所以要和环境进行交互,学习。
Q:PaLM-SayCan真正用于机器人,是否还有原理性的问题没有解决?如果作为日常保姆的替代等应用,还需要多久能够实现?
A:目前还有一些原理性的问题没有解决,并不是简单的工程问题。在原理性方面,机器人的底层的运动控制和抓取是一个很大的挑战,我们还无法做到100%的抓取成功,这是一个很大的问题。
当然,目前已经能够为行动不便的人提供一些价值。但如果真正做到商业化产品,目前还不行,任务成功率在大约百分之九十,没有达到商业上的要求。
Q:机器人规划的成功率受限于训练数据集吗?
A:机器人的规划能力是受限于训练语料的。语料中很容易可以找到一些指令,如“将垃圾扔掉”等。但语料中几乎没有“把机器人二指爪往右移10厘米”这样的语料,因为人们不会将这样的信息留在互联网上。这就涉及到粒度信息的问题,目前受限于语料,机器人只能完成粗粒度的任务。
另一方面,细粒度的规划本身也不该由语言模型来做,因为它包含了太多的物理信息,很可能无法用人类的语言来描述。一个思路是细粒度的操作可以用模仿学习(参考BC-Z工作),或者代码生成来实现(参考团队最新工作 https://code-as-policies.github.io/)。大模型更大的作用是作为用户的交互界面,根据人类给机器人的指令,进行解释,并分解为机器可以执行的步骤。
此外,语言可以做高级语义规划,不需要做更物理的规划。如果要实现细粒度的规划任务,还是要依靠模仿学习或强化学习。