SHRDLU和积木世界
SHRDLU系统是黄金年代最受欢迎的成就之一(这个奇怪的名字来源于当时印刷机上的字母排列——程序员就喜欢弄点晦涩的笑话)。1971年[18] ,斯坦福大学博士生特里·威诺格拉德(Terry Winograd)开发了SHRDLU系统,旨在展示人工智能的两个关键能力:解决问题和自然语言理解。
SHRDLU的问题解决组件是基于人工智能界最著名的实验场景之一:积木世界 。积木世界是一个包含了许多彩色物体(方块、盒子和锥体)的模拟环境。使用模拟环境而不是真实环境去构建机器人,初衷在于将问题的复杂性降低到可管理的程度。
在积木世界中,SHRDLU的问题解决模块可以根据用户的指令来排列对象,也可以使用模拟机械手臂来操作对象。我们可以在图2中看到积木世界的初始状态和目标状态。人工智能要完成的挑战是如何将初始状态 转换为目标状态 。并且,你只能使用固定的操作集合来完成状态转换:
· 从桌面拾取对象x。此处指的是用机械臂将对象x(可能是积木或者锥体)从桌面上拿起来,只有当同时满足对象x在桌面上,以及机械臂当前为空的时候,才能执行此操作。
· 将对象x放在桌面上。只有当机械臂携带对象x的时候,才能执行此操作。
· 从对象y上拾取对象x。只有满足机械臂当前为空,对象x必须在对象y的上方,并且对象x上方没有其他对象的时候,才能执行此操作。
· 将对象x放在对象y的上面。只有当机械臂携带对象x,以及对象y的顶部没有其他物品的时候,才能执行此操作。
积木世界里的一切行为,最终都会简化为这四个操作步骤,且只能执行这四种操作。所以,要实现图2中的状态转化,可以先按照如下步骤执行:
· 从对象B上拾取对象A
· 将对象A放在桌面上
· 从桌面上拾取对象B
上述行动完成以后,积木世界会是什么状态?你能补写出剩下的操作步骤吗?(当然,这不难,但是挺无趣。)
积木世界可能是整个人工智能领域中研究得最多的场景,因为在积木世界中,机械臂完成拾取物品并移动它的操作,听上去与现实世界中我们为机器人设想的任务类似。但是,在SHRDLU(以及诸多后续研究)的积木世界,如果要作为开发使用人工智能技术的场景,还有着严重的局限性。
首先,积木世界是一个封闭的世界,这意味着引起世界变化的唯一因素就是SHRDLU。这就像你一个人住的时候可以笃定地相信,你睡觉前把房门钥匙放在哪里,醒来以后它仍然在原处。如果你家里还有其他人,就会存在别人拿走你钥匙的可能。因此,当SHRDLU把对象 x放在对象 y上面之后,就可以笃定地认为对象 x一定位于对象 y的上方,除非它对相关对象进行过操作。而现实世界并非如此,人工智能系统不能假设自己是世界上唯一的行动者,这样的假设只会让运行结果错误百出。
其次,也是更重要的一点,积木世界是模拟世界,SHRDLU并没有真正操作一个机械臂来拾取对象并移动它们——它只是作为程序假设这么做而已。它模拟了一个世界,并模拟出自己的行为对这个世界产生的影响。SHRDLU从来没有构建一个基于真实世界的模型,也没有检查模拟世界的模型是否和现实世界相匹配,这就是一个极简的假设而已。积木世界是否忽略了机器人在现实世界中运行所面临的绝大多数困难,这也是一个后来研究人员争论颇多的话题。
为了更好地理解这一点,我们以“从对象 y上拾取对象x”为例,考虑它的操作。站在SHRDLU的角度,这就是一个简单、明了的动作:机器人只需要径直从指定的目的地拿起指定的对象就算执行完成,无须考虑这个动作涉及的其他东西。因此,程序只需要找到执行任务所需的正确方法和步骤顺序,就能“控制”整个过程,它不会考虑在执行任务的过程中所遇见的各种麻烦事。但想想现实世界,假设机器人在仓库的环境里,那么它就必须识别出哪个是对象 x,哪个是对象 y,这才能成功执行这条命令。好吧,即使解决了对象识别的问题,单单抓取这最后一步,也不是件简单的事情——让机器人在现实世界中操作哪怕是最简单的物件,困难都远比想象的大,即使在今天都是一个富有挑战性的难题。1994年,我以一个年轻学者的身份前往西雅图参加美国人工智能协会会议时,就对这个问题有了一定的了解。我仍然清晰地记得那些参加“清理办公室”竞赛的机器人,其不称职的程度简直令人惊讶。顾名思义,竞赛的目的是制造一个机器人,它可以在类似办公室的环境中安全地移动,识别和收集垃圾——这个环境就类似于现实版的积木世界。此时已经是SHRDLU问世20年后了——结果,哪怕是在比赛中表现最好的机器人,它的执行速度也慢得令人发指,让人差点以为无法完成任务。当然,问题不在于机器人,而在于人们天真地低估了这些问题的难度。事实上,我们错误地以为,某些人类执行起来轻而易举的任务,机器人执行起来也应该同样轻松。
因此,积木世界之所以引起人们关注,是因为它直观且易于理解。看上去它构造出了类似现实世界的机器人工作环境,其实都是我们自己臆想出来的。深入研究一下就能发现,积木世界所研究和解决的,只是用一系列可执行的动作来解决问题的方法。虽然这确实是一个值得关注的领域,但这只解决了机器人在现实环境所面临的问题中极小的一部分,并且绝不是最困难的那部分。
SHRDLU最为人称赞的特性之一,是用户可以向系统发送指令,并且能从系统中接收到类似自然语言的反馈。下面是一段人类与SHRDLU的对话(SHRDLU的话用斜体字表示):
拾取一个大的红色方块。
好的。(执行命令)
抓取一个锥体。
本书评论