本节书摘来自华章计算机《人工智能:计算Agent基础》一书中的第1章,第1.4节,作者:(加)David L.Poole,Alan K.Mackworth 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.4 知识表示
一般情况下,要解决的问题或要完成的任务,包括解的构成,是通过非形式化的方式给出的,例如“他们到达时,请立即递交包裹”或“请修理家中存在故障的电力系统”。
计算机解决问题的一般框架在图1-4中给出。为了解决问题,系统设计者必须:
- 具体化任务,并制定解决方案。
- 用特定的语言表达问题,以便计算机进行推理。11
- 用计算机计算出相应结果进行输出,可以给用户呈现一个答案或是在环境中需要执行的一系列行为。
- 解释作为问题的解决方案的输出结果。
知识是可以用来解决本领域问题的领域信息。解决多种问题需要多种知识,而且知识必须能够在计算机中进行表达。为了解决问题,设计应用程序时,我们需要为如何表达知识来进行定义。表示方案是Agent中使用的知识形式,而一部分知识的表示则是知识的内部表达。表示方案指定了知识的形式。知识库则是Agent中存储的所有知识的表达。
一个好的表示方案是很多竞争性目标间的折中。表示应该:- 足够丰富,能够表达解决问题所需的所有知识。
- 尽可能地接近问题,并且简洁、自然、可维护。我们应该很容易地看出该表达与要表达的领域之间的关系,以便很容易地确定该表达是否正确。问题的微小变化,也应导致问题表达的微小改变。
- 能够经得起有效计算的检验,通常指能够有效地描述问题特征,有利于获得计算增益,并且能够在准确度和计算时间之间进行权衡。
- 能够从人类、数据或先前经验中获得。
已经设计出了不同的表示方案,很多方案开始时有某些目标,后来扩展到包含其他目标。例如,有些表示方案设计出来用于学习,而后被扩充用来解决更多的问题,并具有了推理能力。有些表示方案设计出来用于表达意识,而后又加上了推理及学习。有些表示方案设计出来用于推理,而后逐渐变得更为自然、易懂。
当给了一个问题或任务时,以下一些问题必须要考虑到。- 问题的解决方案是什么?怎么样的解决方案才算好的?
- 问题如何进行表达?解决问题时需要世界中哪些特性?需要哪些具体的世界知识?Agent如何从专家那里或以前的经验中获得知识?这些知识如何被调试、维护和改进?
- Agent如何计算输出结果,以此作为问题的解决方案?能不能把最坏情况下或平均情况下的临界时间减到最小?理解答案是怎样推导出来的对于一个人来说很重要吗?
这些问题会在下一部分讨论,本书的表示方案部分也会涉及这些问题。
1.4.1 定义解
给定问题的一个非形式化描述,在考虑使用计算机之前,知识库设计者应该确定问题解的构成。不仅是人工智能领域,任何涉及软件设计的地方都会存在这个问题。很多软件工程都涉及问题描述的提炼。
通常,并不是所有问题都能很好地说明,不仅是有些地方没有进行说明,而且没有说明的地方也不能被随意填充。举例来说,当你让交易Agent搜索出那些有健康隐患的度假村时,你并不希望它返回所有的度假村信息,尽管符合你要求的度假村也包含在里面。然而,如果Agent根本就没有度假村的完全知识,那么返回所有的信息可能是保证符合要求的唯一方法。同样,当要求将垃圾传送到垃圾桶时,传送机器人却把所有的物品都传送到了垃圾桶里,尽管保证了所有垃圾都能被带走,但这样一个传送机器人你不会想要。人工智能的很多成果来自于常识推理;我们希望计算机能够对未阐明的假设做出常识性的推论。
给定一个定义明确的问题,下一步就是判断如果答案不正确或不完全,对问题的解决有没有影响。例如,如果说明书要求所有的实例,那么缺少几个实例可以吗?如果增加另外的实例可以吗?通常人们想要的是符合某些标准的最优解决方案,而不仅仅是任意方案。一般分为以下4类解决方案:- 最优解。问题的最优解是指在所有的可能解中最符合求解质量度量的最好的解。这个度13量用序数来描述。但是在一些情况下,例如综合多种标准或不确定推理时,我们需要一种要考虑相对大小的基数度量。序数度量的一个例子是让机器人带出尽可能多的垃圾,越多越好。作为基数度量的例子,你可以让传送机器人在最小化传送距离的同时,将尽可能多的垃圾带到垃圾桶,明确规定它们之间要进行权衡。为了节省时间,丢掉一些垃圾可能会更好。一般基数度量的期望值,即效用函数主要应用于决策论中。
- 可满足解。Agent经常并不需要最优解,只需一些满足条件的解就可以。可满足解是指那些满足充分条件的解。例如,人们可以命令机器人带出所有的垃圾,也可以命令它只带出三件垃圾。
- 近似最优解。好的基数度量的一个优点是它允许使用近似值。近似最优解是指其质量度量接近理论上存在的最优解。一般Agent不需要问题的最优解,只要那些解接近最优就可以。例如,机器人为了送出垃圾可能并不需要达到最优的传输距离,可能只需要在最优距离10%范围以内就可以。
对于一些问题,获得近似最优解比获得最优解更容易,但对于另外一些问题,获得近似最优解和获得最优解一样难。一些近似算法能够得到在最优解的一定范围内的解,而有的则根本找不到。 - 可能解。可能解是指一个解,尽管它可能不是问题的真正解,但也是一个有希望的解。这是一种用精确的方式来对可满足解进行近似的方法。例如,在传送机器人可能会丢垃圾或者无法捡起来的状况下,可以设置成机器人有80%的可能性捡起三件垃圾。我们一般期望去区分错肯定误差率(计算机给出的不正确答案的比率)和错否定误差率(计算机没有给出的正确答案的比率)。有些应用程序可能会容忍这些误差中的一个远超过另一个。
这里的分类并不是互相排斥的。有一种称为可能近似正确(PAC)的学习形式,认为可能学习到一种近似正确的概念。
1.4.2 表示
如果你对解的本质有要求,你就需要表示问题,以便于计算机来解决它。
计算机和人类思维都属于物理符号系统。符号是一种可以被操作的有意义的图案。例如,字、句、手势、文章里的标记与二进制序列都是符号。符号系统对符号进行创造、复制、修改和撤销。本质上来说,符号是符号系统中被操作的基本单元。
这里用到物理这个术语,是因为物理符号系统中的符号是部分现实世界中的物理对象,尽管它们可能存在于计算机和大脑内部。它们需要物理地影响行为或运动控制。
很多人工智能技术依赖于Newell和Simon[1976]提出的物理符号系统假设:
物理符号系统具有必要且充分的机制以进行一般的智能活动。
这是一个强有力的假设,它的意思是任意Agent必定是一个物理符号系统,而且物理符号系统包括智能行为所需的一切,没有不可思议的量子论现象。世界中的物理符号系统也需要一个用来进行感知和行为的主体。物理符号系统假设是经验性的假设,像其他科学假设一样,它也需要证据来论证,或者有其他可替代的假设存在。实际上,它也可能是错误的。
Agent可以看做通过操作符号来产生动作。其中许多符号用来表示世界中的事物;一些符号则用来表示有用的概念,这些概念可能具有扩展含义,也可能不具有扩展含义;另外还有一些符号表示Agent的内部状态。
Agent可以用物理符号系统对世界进行建模。世界模型是世界中真实存在的详情和世界的动态行为的表达。世界并没有什么特定的标准。所有的模型都是抽象出来的,它们表达的仅仅是世界的一部分,遗留了很多其他细节。Agent可以有一个非常简单的世界模型,也可以有一个非常详细的世界模型。抽象的层次是指按抽象程度排列的一个偏序。低层抽象比高层抽象拥有更多的细节。Agent可以拥有多重的,甚至是对立的世界模型。模型,不是看它是否正确,而是看它是否有用。
【例1-2】 传送机器人可以对环境进行高层抽象建模,包括房间、走廊、门和障碍物,忽略距离、机器人的大小、需要的操纵角度、车轮的移动、包裹的重量、15障碍物的详细情况、加拿大的政治形势以及其他事物。机器人也可以通过将一些细节加入模型中对环境进行低层次抽象建模。这些细节中的一些与机器人完成任务无关,而一些则是机器人成功的关键。例如,在某些情况下,为了使机器人不在一些特定的拐角处被卡住,机器人的大小和操纵角度是关键。而在其他情况下,如果机器人接近走廊的中心位置,那么就不需要对它们的宽度或操纵角度进行建模。
选择一个合适的抽象层次比较难,因为- 对于人类来说,高层次的描述更容易说明和理解。
- 低层次的描述更准确,更有预测性。通常高层次抽象忽略的细节可能正是解决问题的关键之处。
- 层次越低,越难进行推理。因为低层次模型的解涉及更多的步骤和更多可供选择的行动路线。
- 你可能根本不知道低层次建模所需要的信息。例如,传送机器人可能不知道自己会遇到什么样的障碍物或地板有多滑,并在遇到这些情况时应该做些什么。
对环境进行多层次抽象建模可能会更好些。这个问题会在2.3节进行讨论。
我们可以对生物系统和计算机进行多层次抽象描述。逐层降低的层次是神经层次、生物化学层次(什么样的化学药品和电势可以传送)、化学层次(会进行什么样的化学反应)、物理层次(原子力和量子论现象)。在神经层次之上需要什么层次来计算智能仍是一个开放性难题。注意,这些层次描述在科学本来的分层结构中得到共鸣,科学家被划分为物理学家、化学家、生物学家、心理学家、人类学家等。尽管我们不知道哪个层次的描述更重要,但我们猜想建立一个Agent不必模仿人类的每一层,可以在现代计算机的基础上进行高层次建模。这个猜想是人工智能研究的一部分。
对生物实体和计算性实体来说,以下两个层次看起来是共有的:- 知识层是将Agent所知道的、所相信的以及它的目标抽象出来。知识层考虑的是Agent知道什么,而不是它如何进行推理。例如,传送Agent的行为可以用它是否知道包裹有没有到达和是否知道特定的人在哪里来描述。人类和自动Agent都可以在知识层次上进行描述。在这个层次上,不需要说明如何计算解和Agent可能会用到哪些策略。16
- 符号层是对Agent的推理进行描述。为了实现知识层,Agent需要通过操作符号来产生答案。我们设计了很多认知科学方面的实验来判定推理时会产生什么样的符号操作。注意,知识层说明的是对于外部世界,Agent相信什么,它的目标是什么;而符号层是对Agent内部关于外部世界推理的描述。
1.4.3 推理与行为
符号的操作产生行为被称为推理。
人工智能表达不同于用传统语言编写的计算机程序的一个重要方面是,人工智能表达的主要是需要计算什么,而不是怎样进行计算。我们可能明确指出Agent应该找出病人最可能得的疾病,或指出机器人应该拿杯咖啡,而不是给出做这些事情的具体指令。很多人工智能推理涉及通过可能空间的搜索来决定怎样完成任务。
在决定Agent要做什么时,有三个方面的计算必须区别开来:1)要设计Agent时的计算;2)在观察世界、需要行动之前,Agent能做的计算;3)当Agent执行某些动作时所做的计算。- 设计时刻推理是在设计Agent时进行的推理。它由Agent的设计者而不是Agent本身来完成。
- 离线计算是在动作之前由Agent完成的计算,它包括汇编和学习。Agent离线获取背景知识和数据,并将其汇编成可用的形式,称之为知识库。背景知识可以在设计时或离线状态时给出。
- 在线计算是在观察环境及在环境中进行某些行为时由Agent完成的计算。在线状态获取的信息称为观察。Agent必须使用知识库和观察来决定要做什么。
区别设计者思维中的知识和Agent思维中的知识是重要的。考虑以下极端情况: - 一种极端情况是,高度专业化的Agent在为其设计的环境中能够运行良好,但离开这个合适位置却变得无能为力。设计者可能为构造Agent做了大量工作,而Agent本身不用做很多就可以运行良好。举个自动调温器的例子,设计一个自动调温器是困难的,因为它必须在正确的温度下准确打开或关闭,但是自动调温器本身并不需要做很多计算。再比如,17绘图机器人每天在汽车厂绘制相同零件的例子。为了完美地完成绘制任务,可能需要很多设计时间或离线计算,但绘图机器人几乎不需要在线计算就能完成绘图任务;它能感知到有一个零件在特定的位置,然后进行其预先定义好的动作。这些专业Agent不适用于不同的环境或变化的目标。如果一个不同的零件放在特定的位置,绘图机器人不会注意到,即使注意到了也不知道要做些什么,必须通过重新设计或重新编程来绘制不同的零件,或者将其改变成为磨光机或跟踪洗涤机。
- 另一种极端情况是非常柔性的Agent,可以在任意环境下生存,可以在运行时接受新任务。简单的生物Agent,如昆虫,能适应复杂变化的环境,但是它们不能执行任意任务。设计一个可以适应复杂环境和变化目标的Agent是一个主要挑战。Agent能够比设计者知道更多的环境细节。就算是在生物学方面也没有制造出这样的Agent。人类可能是唯一现存的实例,但即使是人类也需要时间来适应新环境。
虽然柔性Agent是我们的终极梦想,但研究者们也不得不通过更多的平凡目标来达到这个目标。研究者们已经制造了很多适应于特定环境下的特定Agent,而不是制造那种能够适应任何环境完成任何任务的通用型Agent。设计者能够对特定环境结构进行开发,而Agent不必对其他的可能性进行推理。
构造Agent的两大一般策略如下:- 第一个策略是简化环境并为这些环境建立复杂的推理系统。例如,工厂机器人可以在工厂这个工程环境里完成各种复杂的任务,但它们在自然环境中可能是没用的。很多问题的复杂性可以通过简化环境来降低。建立实用性的系统也是非常重要的,因为许多环境可以为Agent设计得更简单些。
- 第二个策略是在自然环境中建立简单的Agent。这种策略是受到昆虫的启发,昆虫虽然只有有限的推理能力却能在复杂环境中生存。随着它们的任务越来越复杂,Agent可以被设计为拥有更多的推理能力。
简化环境的一个优点是我们能用它证明Agent的性质或在特定状态对Agent进行优化。证明Agent的性质或优化主要需要一个Agent及其环境的模型。Agent可能会做一点或很多推理,但Agent的观察者或设计者能够对Agent及其环境做出推理。例如,设计者能够证明Agent是否能够达到目标,是否能够避免陷入不利的状况中(安全目标),18会不会在某个地方卡住(活跃性),会不会最终开始它应该做的事情(公平)。当然,证明实际上等价于其模型。
为复杂环境构造Agent的优点是人类的生活环境和我们想要Agent活动的环境是多种多样的。
幸运的是,这些方面的研究都一直在进行。在第一种情况下,研究者们从简单的环境入手,逐步使环境变得更加复杂。在第二种情况下,研究者们增加Agent行为的复杂性。