本节书摘来自华章计算机《人工智能:计算Agent基础》一书中的第1章,第1.6节,作者:(加)David L.Poole,Alan K.Mackworth 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.6 原型应用
人工智能领域的应用广泛而且多样化,包括医疗诊断、工厂流程调度、险恶环境中的机器人、博弈、太空中的无人驾驶车辆、自然语言处理系统、指导系统等。这些应用并不是独立进行的,我们抽象出这些应用的本质特点,来研究智能推理及动作背后的原理。
本节概述了4个应用领域,其中的几个实例将贯穿整本书。尽管我们介绍的几个实例都很29简单(如此他们才适用于本书),但其应用领域代表了人工智能技术能够或正在应用的领域范围。
4个应用领域如下所示:
- 自主传送机器人会在某个建筑物旁徘徊,负责给里面的人传送包裹和咖啡。这种传送Agent能够找到路径、分配资源、接受人们的请求、决定优先顺序、在不伤害到人和它本身的情况下传递包裹。
- 诊断助手帮助人们找出问题并提出修改或治疗意见来改正问题。例如电工助手,能够在给定电工问题特征的情况下就房屋中的错误提出建议,包括保险丝烧断、灯开关毁坏、灯泡烧坏等情况。再如医疗诊断助手,在特定医疗领域和病人的症状及病历等知识的基础上,可以发现潜在的疾病、有用的检查以及合适的治疗手段。对检测和修理它的人们以及那些要为它们的行为最终负责的人们,这种助手可以解释它的推理过程。
- 指导系统与一个学生进行交互,展示某些领域的信息,并检查学生的知识或行为。这不仅仅是向学生展示信息。做到像一个好老师那样,根据每个学生的知识、学习偏好及误区,做到因材施教,展示不同的信息,这是一项更具有挑战性的工作。系统必须要理解所设计的科目以及学生们的学习情况。
- 一个交易Agent能够知道一个人想要什么,能买什么,并为他的利益服务。它应该知道他的需求和偏好,以及如何权衡竞争性目标。例如,如果一个家庭要去度假,旅游Agent需要预订宾馆、飞机票、出租车以及娱乐活动,所有这些都要相互适合。它应该决定顾客的权衡。如果最舒适的宾馆无法为这一家人在所有的假期内提供住宿,这时就要看他们是更喜欢在余下时间选择更好的宾馆,还是并不喜欢变换宾馆。它甚至可以为特价商品货比三家或一直等到更好的交易出现。
本书中所有实例都应用到上述4个领域,在以下几个小节我们将详细讨论每个应用领域。
1.6.1 自主传送机器人
我们来想象一个机器人,它具有多个*,能够捡起物体并可以放下。它具有感知能力,因此它能识别需要操控的目标物体,也能绕开障碍物。它可以以自然语言的形式接受命令,并遵循这个命令,能够在目标发生冲突时做出合理选择。这种机器人可以应用于办公环境中,来传送包裹、邮件、咖啡等物品,或者嵌入轮椅中来帮助残疾人。它应该是有用且安全的。30
在图1-3Agent的黑盒特征中,自主传送机器人有以下输入:
- 先验知识,由Agent设计者提供,关于Agent自身的能力,比如Agent可能会遇到什么样的目标物并且区分这些物品,请求的含义,还可能有Agent的环境,比如地图;
- 通过动作得到的先前经验,例如,它的动作效果,世界中的常见对象是什么,在同一天中的不同时段会有什么样的请求;
- 目标,可以表示为应该传送什么,什么时候传,以及如何进行权衡,例如什么时候它必须放弃一个目标去完成另外一个,或者在执行动作的迅速性与安全性之间做出权衡;
- 观察值,从相机、声波定位仪、触觉、声音、激光测距仪或键盘这样的输入设备中获取对环境的观察值。
机器人的输出是机械控制,规定它的*如何转动,它的四肢应该往哪儿移动,它的钳子应该做什么。其他的输出还有语音和视频输出。
在复杂度的一系列维度中,当机器人是扁平系统时是最简单的状况,用一系列的状态来表达,没有不确定性,有可完成的目标,没有其他Agent,有给定的知识,而且具有完全理性。在这种情况下,存在一个不确定阶段规划期,决定要做什么的问题被简化成状态图中寻找一条路径的问题。这一部分将在第3章介绍。
对于推理任务来说,每一个维度上都能增加概念复杂度:
- 层次分解,通过将每个模块简单化而且能够被自身所理解,从而使整个系统的复杂度增加。第2章将介绍这一部分。
- 用一系列的特征建模比用清晰状态建模使系统更容易理解。例如,可能会有机器人的位置特征,它所有的燃料数量特征,它所运送的物品特征等。用一系列的状态进行推理,其中每一个状态是对应于每个特征的值的分配,失去了这些特征提供的结构信息。用一系列的特征表示来进行推理,可能会开发计算增益。用一系列的特征进行规划将在第8章讨论。当涉及多个个体时(如多人或多个传送物),用一系列的个体与关系进行推理可能会更容易些。用一系列的个体与关系进行规划将在14.1节讨论。
- 如果Agent仅仅是向前看几步,它的规划期是有限的;而如果它有一组固定的要达到的目标集,那么它的规划期就是不确定的。随着不间断的需求和动作,为了长期幸存,它的规划期是无限的,例如,邮件到达时就传送,电池电量低时就先进行充电。
- 可能存在目标如“将咖啡传送给克里斯,并保证你自己一直有能量”。更为复杂的目标可能会是“将实验室打扫干净,并将所有的东西归位”。有时可能存在更复杂31的偏好,例如传递机器人要完成“邮件到达时就传送邮件,有咖啡请求时要尽可能快地服务,但是传送标记为重要的信息更重要,并且当克里斯请求咖啡时,需要更快地为她服务”。
- 可能会有感知不确定性,因为基于Agent有限的传感器,它可能不知道世界中存在什么。
- 可能会有行为效用的不确定性,无论是车轮滑动这样的低层次行为,还是像Agent在传送咖啡给克里斯时不知道是否已经将咖啡放在她的书桌上这样的高层次行为,都具有不确定性。 图1-7 传送机器人环境图,说明一个典型的实验室环境,也说明了门的位置和它们开放哪一条路径
- 可能存在多个机器人,它们可能相互协调来传递咖啡与包裹,也可能相互争夺电源插座。也可能会有儿童来戏弄机器人。
- 机器人有许多要学习的,例如地板的光滑程度与它的发亮程度成一定的函数关系,克里斯在同一天的不同时段去哪里闲逛,克里斯会在什么时候要一杯咖啡,什么动作会得到最高的奖励。
https://yqfile.alicdn.com/9cf080cbe8793020800e71632088b0a517feb775.png" >
图1-7为传送机器人描述了一个典型的实验室环境。环境由4个实验室和很多办公室组成,机器人仅仅能够推开门,而且图中门的方向反映了机器人的移动方向。房间需要钥匙,钥匙可以从多种来源获得。机器人需要在这些房间之间传递包裹、32饮料或菜肴。环境同样包括对机器人有潜在危险的楼梯。
1.6.2 诊断助手
诊断助手在一些特定系统,如就医的病人、房屋中的电力系统和汽车等,给人们提供建议。诊断助手应该为潜在的故障或疾病提供建议,要进行什么检查,要开什么样的处方。为了给出这些建议,诊断助手需要一个系统模型,包括关于可能的原因的知识,有效检查的知识,有效治疗的知识,以及系统的观察值(经常称之为症状)。
为了能够使用,诊断助手必须提供一些附加值,让人们能够容易使用它,而不是变得比其价值更为麻烦。诊断助手与因特网相连,可以从全世界吸收专家意见,它的行为会以最新的研究为基础。然而,它必须能够判定所提出的诊断或行为是不是合适。人类应该是对计算机系统持怀疑态度,因为它不透明而且令人费解。当人类为他们所做的负责时,即使是基于计算机系统的建议,他们也应该为所提出的行为提供合理的判断。
就图1-3Agent的黑盒定义来说,诊断助手有以下输入:- 先验知识,例如开关和灯泡如何正常工作,疾病或故障怎样显现出来,检查所提供的信息,以及修理或治疗后的效果。
- 先前经验,是以前案例的一系列数据,包括修理或治疗后的效果,故障或疾病的流行程度,这些疾病和故障的特征的普遍程度,检查的准确度。这些数据通常是关于类似的人工产品或病人的,而非实际需要诊断的那个。
- 修复设备的目标以及在多种选择中进行权衡,例如是修理还是替换不同的部件,病人是否希望活得更久些,那将意味着会遭受更多的疼痛。
- 设备或病人的症状观察值。
诊断助手的输出是一系列治疗方法或检查的建议,以及提出这些建议的理由。
【例1-10】 图1-8描述了一个房屋中的电力分布系统。在这个房屋中,电能通过断路器进入房屋,然后转到插座或通过电灯开关转到电灯处。例如,当有电进入房屋,断路器cb1打开,开关s1和s2都合上去或合下来时,灯l1是开着的。这是一类模型,33正常情况下,房主都会将电源放置在屋内,在给定开关位置,哪些灯开着哪些灯关着的状况下,通过模型确定所出现的问题。这个诊断助手可以帮助房主或电工检查电力问题。
https://yqfile.alicdn.com/91f4ba4f4595585257c34bf45a9289d813977d76.png" >
每个维度都与诊断助手相关:
- 层次分解允许在处理低层原因的同时维持高层目标,而且能够进行详细的系统监控。例如在医疗领域,一个模块可以处理心脏监控的输出,并给出高层的观察值,如在心率发生变化时给出通知;另外一个模块会接收这个观察值和其他高层的观察值,并注意心率变化的同时引起的其他症状。在电气领域,图1-8描述的是一个抽象层次,更低层次可以详细描述电压、电线如何连接和开关的内部结构。
- 大多数系统太过复杂而无法用一系列的状态进行推理,所以它们经常用一系列的特征或个体部件及它们间的关系来描述。例如,人的身体可以用一系列各种各样的部件的特征值来描述。设计者在不知道实际个体的情况下,可能会想建立动力学模型。例如,电力诊断系统的设计者在知道哪些灯和开关存在于房屋里之前,也就是在知道它们的特征之前,34为灯和开关如何工作建立模型。这时可以利用一系列的关系与交互,当知道个体时通过添加独立部件来完成这个模型。
- 对静态系统进行推理是可能的。例如,给定开关位置,当灯处于关闭状态时,对可能出现的问题进行推理。也可以对检查和治疗的结果进行推理,Agent会一直进行检查和治疗,直到问题解决,或者Agent会实施持续的系统监控,持续修复任何问题。
- 感知不确定性是诊断需要面对的基本问题。如果Agent无法直接观察到系统的内部结构,这时就需要进行诊断。
- 效用不确定性也会存在,因为Agent可能不知道治疗结果,而且治疗经常会出现未预料到的结果。
- 目标,可能会像“确定出错的问题”这么简单,但通常会涉及花费、疼痛、预期寿命、诊断的正确率、疗效的不确定性、治疗的副作用不确定性等方面的复杂权衡。
- 尽管诊断通常是一个单Agent问题,但当涉及多个专家时,诊断会变得更复杂,因为他们可能会有冲突的经验或模型,也可能会有多个病人来竞争Agent的资源(例如医生的时间、手术室)。
- 学习是诊断的基础。通过学习我们可以得知疾病的进展情况,以及治疗进行得怎么样。对于学习来说,诊断是一个具有挑战性的领域,因为所有的病人都是不同的,而每个医生的经验都只是针对带有任意特定特征集的少部分病人。医生们看到是有偏差的人口样本,那些来看病的人,通常都会有一些不寻常的或疼痛的病症。
- 诊断通常需要快速地回答,没有时间进行详尽的推理或做到完全合理。
1.6.3 智能指导系统
智能指导系统是在某些领域指导学生的计算机系统。
例如,在基础物理的指导系统中,如力学,系统会介绍理论知识,给出一些固有的例子,还会向学生提问,当然它必须能够理解学生的回答,并基于学生的回答判定他掌握知识的程度。这会影响学生向系统提出什么问题以及系统向学生提出什么问题。学生向系统提问问题,系统应该能够解决在物理学领35域内的问题。
就图1-3Agent的黑盒定义来说,智能指导系统有以下输入:- 先验知识,由Agent设计者提供,包括教学主题、教学策略、可能误差和学生的误解。
- 先前经验,是指导系统通过与学生交互获得的,关于学生犯的错误、学习一些知识需要多少例子和学生所遗忘的。所获得的信息可以针对一般学生,也可针对特定学生。
- 关于每个话题的重要性、学生期望得到的成就水平以及与可用性相关的花费的偏好,它们之间通常会有很复杂的权衡。
- 学生测验结果的观察值,学生与系统交互(或不交互)的观察值。学生可以提出问题或提供新的实例。
指导系统的输出是给学生提供的信息、学生应该要做的测试、问题的答案给父母和教师的报告。
每个维度都与指导系统相关:- 应当有Agent的层次分解和教学任务分解两个部分。在学习高层概念之前,学生应该被教授基础知识。指导系统有高层教学策略,但是在更多较低的层次上,它必须为一个测验设计实例的细节部分与特殊问题。
- 指导系统可以用一系列学生的状态来进行推理。然而,实际上学生以及教学科目一般都具有多个特征。如果所有的例子都是固定的,而且是针对一个学生进行推理,那么物理指导就能够用在设计时就已知的一系列特征来进行推理。对于更复杂的情况,指导系统应该会涉及个体及其之间的关系。如果指导系统或学生能够利用多个个体创造实例,那么这个系统在设计时可以不知道特征,并用一系列个体及其之间的关系进行推理。
- 在规划期方面,在测验的整段时期内,认为此领域是静态的,而且学生在测验时不会进行学习的假设是合理的。对一些子任务来说,有限期比较合适。例如,可能会有教学、测验、再教学这样的序列。在其他情况下,在设计时系统根本不知道会进行到哪一步,直到学生掌握一些概念,这是一个无限期。还可以对教学建模以作为一种持续的学习和测验过程,并伴随着适当的休息,同时不希望系统在此过程中终止。
- 不确定性起很大的作用。系统不能直接观察到学生的知识,它只是基于36学生提问的问题或没有提问的问题以及测验结果的一些感知输入,系统不会确切地知道某个特定的教学片段的确定效果。
- 尽管系统有一些像教授某些特定概念这样的简单目标,但它可能更需要考虑很多复杂的偏好。其中一个理由是由于不确定性,根本就没有办法保证学生能够知道所教授的概念;任何使学生知道一个概念的可能性最大化的方法都很恼人;因为当疲劳或无聊导致学生的微小错误时,系统都会持续反复地进行教学与测验。更多复杂的偏好使如下方面的权衡成为可能:概念的充分讲解、学生的厌烦情绪、所花的时间和重复测验的数量。用户可能对教学风格有偏好也应该考虑。
- 将系统作为一个单Agent问题进行处理更为合适。然而,学生、老师和父母都有必须考虑的不同偏好。每一个Agent都能不说出真相地策略性地实施动作。
- 我们期望系统能够学习以下内容:教学策略是什么,测验概念时的一些问题怎么样,学生犯的共同错误是什么。它能够学习一般知识或针对某一主题的特定知识(例如,对于教授力学知识来说,学习什么策略适用),或者针对某个特定学生的知识,如对Sam管用的知识。
- 选择最合适的材料来介绍知识需要花费大量的计算时间。然而,学生必须及时做出反应,有限理性能够确保在学生等待时系统不会计算过长时间。
1.6.4 交易Agent
交易Agent就像是一个机器人,但它不是与物理环境进行交互,而是与信息环境进行交互。它的任务是为用户获取商品及服务。它必须了解用户的需求,并与卖者进行交互(如在网上)。最简单的交易Agent是拍卖场所为用户进行代理投标的Agent,系统会在达到用户的价格限制之前一直维持出价的状态。更复杂的交易Agent会购买多个互补的物品,像预订机票、宾馆、出租车这样一个组合,并权衡竞争性偏好。另外一个交易Agent的实例是一种可以显示家里有多少食物与杂货的Agent,可以监控价格,并在购买之前调整顺序,使费用降低到最小。
在图1-3Agent的黑盒定义中,交易Agent有以下输入:- 关于货物或服务类型、出售业务、拍卖流程等的先验知识;37
- 先前经验,哪儿是寻找特价物品的最好地方,拍卖中价格会随时间如何变化,特价什么时候会有上升的倾向;
- 用户想要的物品的偏好,怎样权衡有冲突的目标;
- 什么物品是可用的、物品的价格、可购买的时间范围这几个方面的观察值。
交易Agent的输出是用户能够接受或拒绝的建议,或者是一个实际购买。
交易Agent应该考虑以下维度:- 由于域的复杂度,层次分解是必要的。考虑为旅行者做好假期所有的安排与购物这样一个问题。如果有一个专门购买机票并且能优化转乘和时间的模块,而不是在做这些事情同时来决定通过哪个门到出租车站,就会更简单些。
- 交易Agent的状态空间对于个体状态推理来说太大了。还存在太多的个体,因而无法用特征的方式进行推理。交易Agent不得不按照如顾客、天数、宾馆、航班等这样的个体进行推理。
- 交易Agent一般不会只进行一次购物,通常会进行一个序列的购物,会有大量的序列决策(例如,预订宾馆客房可能会需要预订陆地交通,然后是存储包裹),通常会为持续的采购制定计划,例如Agent必须确保家里一直会有足够的食物。
- 感知不确定性,因为交易Agent不会知道所有的可用选择以及它们的可用性,但是必须找出那些很快会过时的信息(例如,是否有宾馆会被预订一空)。旅行Agent不会知道一个航班是否会被取消或延迟、旅客的行李是否会丢失等信息。这种不确定性意味着Agent必须为意料之外的事情做计划。
- 效用不确定性,因为Agent不知道一次尝试性的购物会不会成功。
- 复杂的偏好是交易Agent的核心部分。主要问题是允许用户描述他想要的东西。用户的偏好一般是功能描述,而不是部件描述。例如,典型的计算机买主一般不知道要买什么样的硬件,但是知道他们需要什么样的功能,以及能够使用那些也许还不存在的新特性的灵活性。类似的,在旅游领域,用户想要什么样的活动依赖于具体的地理位置。即使他们可能根本不知道这些风俗是什么,用户也可能想在目的地参加当地的风俗活动。
- 交易Agent必须对其他的Agent进行推理。在贸易中,价格由供需关系决定;这就意味着对其他竞争性Agent进行推理是重要的,比如在很多物品38通过拍卖进行出售的世界中。当物品必须互补时,推理变得很困难,如航班与宾馆预订,还有可以相互取代的物品,比如公共汽车或出租车。
- 交易Agent应该了解一些信息,例如,什么物品卖得比较快,哪个供应商可靠,在哪里能有比较划算的交易,会有什么意料之外的事发生等。
- 交易Agent面临严峻的通信局限性。当发现物品可用并与其他物品协调时,物品可能已经卖完了。这种情况会在卖家同意保有某些物品(同时不会卖给别人)时有所缓解,但卖家不可能在别人也想买的时候长时间持有这些物品。
由于交易Agent的个性化本质,它应该会比通用购买者做得更好些,比如,只提供套装旅游。