人工智能(一种现代方法)——第 2 章——智能体(Stuart J. Russell&Peter Norvig)

第 2 章   智能体(Intelligent Agents)

目录

2.1  智体和环境(Agents and Environments)

2.2  好行为:理性之概念(Good Behavior: The Concept of Rationality)

2.2.1   性能度量(Performance measures) 

2.2.2   理性(Rationality) 

2.2.3   全知、学习与自主性(Omniscience, learning, and autonomy) 

2.3  环境之特征(The Nature of Environments)

2.3.1   明确任务环境(Specifying the task environment)

2.3.2   任务环境之属性(Properties of task environments)

2.4  智体之结构(The Structure of Agents)

2.4.1   智体程序(Agent programs)

2.4.2   简单反射智体(Simple reflex agents)

2.4.3   基于模式的反射智体(Model-based reflex agents)

2.4.4   基于全局的智体(Global-based agents)

2.4.5   基于效用的智体(Utility-based agents)

2.4.6   学习型智体(Learning agents)

2.4.7   智体程序各组件的工作原理(How the components of agent programs work)


   第一章指出,“理性智体(rational agents)”这一概念是我们研究人工智能的核心。本章将进一步具体阐述这一概念。我们将看到,理性概念适用于在任何可设想环境(或场景)中运作的各类智能体。本书旨在利用这一概念,制定一套设计原则,用于构建成功的智体——即那些堪称“智能”的系统

    我们首先探讨智体环境以及两者之间的耦合关系。观察到某些智体的表现优于其他智体,这自然引出了“理性智体”的概念——即表现尽可能优秀的智体。智体的表现优劣取决于环境的性质;某些环境比其他环境更具挑战性。我们对环境进行了粗略分类,并阐述了环境特性如何影响针对该环境的智体设计。此外,我们还介绍了几种基本的智体设计“骨架”,并将在本书后续章节中对其进行详细充实。

2.1  智体和环境(Agents and Environments)

         智体”(agent)是指任何能够通过传感器感知环境,并利用执行器(actuators)对环境施加影响的事物。图 2.1 展示了这一简单概念。人类智体利用眼、耳及其他器官作为传感器,利用手、腿、发声器官等作为执行器;机器人智体可能利用摄像头和红外测距仪作为传感器,利用各种电机作为执行器;软件智体则接收文件内容、网络数据包及人类输入(如键盘、鼠标、触摸屏或语音)作为感知输入,并通过写入文件、发送网络数据包、显示信息或生成声音来作用于环境。环境的范围可以涵盖一切——甚至是整个宇宙!但在实际应用中,环境仅指宇宙中与该智体设计相关的部分,即那些既能影响智体感知、又能受智体行为影响的特定部分。

    我们使用“感知”(percept)一词来指代智体传感器所感知到的内容。“感知序列(sequence)”则是指智体迄今为止所感知到的所有内容的完整历史记录。通常,智体在任一时刻选择采取何种行动,既取决于其内置知识,也取决于迄今为止观察到的整个感知序列,而与任何未被感知到的事物无关。一旦明确了智体针对每种可能的感知序列所采取的行动,也就基本上完整地描述了该智体。从数学角度来看,智体的行为由“智体函数”来描述,该函数将任意给定的感知序列映射为相应的行动

----------------图 2.1:智体通过传感器和执行器与环境进行交互。--------------

我们可以设想列出描述任意已知智体的智体函数;对于大多数智体而言,这将是一张巨大的表——实际上是无限大的表,除非我们对所考虑的感知序列长度设定限制。若要对某个智体进行实验,原则上我们可以通过尝试所有可能的感知序列并记录智体相应的动作来构建这张表(注:如果智体利用某种随机性来选择行动,我们就必须多次尝试每一个序列,以确定各项行动的概率。人们或许会觉得随机行动显得有些愚蠢,但我们将在本章稍后展示,这种做法其实可以非常智能)。当然,这张表是对智体的一种外部表征。在内部,人工智体的智体函数是通过智体程序来实现的区分这两个概念至关重要:智体函数是一种抽象的数学描述,而智体程序则是在某种物理系统中运行的具体实现

为了阐释这些概念,我们采用一个简单的例子——“吸尘器世界(the vacuum-cleaner world)”。该世界由若干方格组成,每个方格的状态要么是脏的,要么是干净的;其中包含一个执行吸尘任务的机器人智体。图 2.2 展示了一个仅包含 A 和 B 两个方格的配置。该吸尘智体能够感知自己当前所在的方格以及该方格内是否有污垢。智体从方格 A 开始运行。可供选择的动作包括:向右移动、向左移动、吸除污垢或保持静止(不采取任何行动)(注:对于真实的机器人而言,不太可能直接采用“向右移动”或“向左移动”这类动作;取而代之的动作通常是“车轮向前转动”和“车轮向后转动”。我们之所以选择这些动作,是为了便于在页面上理解和跟随操作,而非为了简化其在实际机器人上的实现过程)。一种非常简单的智体函数如下:如果当前方格是脏的,则执行吸尘动作;否则,移动到另一个方格。图 2.3 展示了该智体函数的部分列表,而实现该函数的智体程序则见于第 67 页的图 2.8。

观察图 2.3,我们可以看到,只需以不同方式填写右侧一列,就能定义出各种各样的真空吸尘世界智体。那么,显而易见的问题是:填写该表的正确方式( 即 J )是什么?换言之,究竟是什么决定了智体的好坏或智能高低?我们将在下一节回答这些问题。

----------------------------------图 2.2:这是一个仅包含两个位置的吸尘器世界。每个位置可能处于干净或脏污的状态;智体可以向左或向右移动,并能清理其当前所在的方格。针对该吸尘器世界的不同版本,关于智体感知能力、动作执行是否总能成功等方面的规则也会有所不同。-------------------------------------------------------

-------------------------图 2.3:图2.2所示吸尘器世界中一个简单智体函数的部分列表。若当前方格脏了,智体便进行清理;否则,它就移动到另一个方格。请注意,除非对可能的感知序列长度有限制,否则该列表的大小将是无限的。------------------------

在结束本节之前,我们有必要强调,“智体”(agent)这一概念旨在作为一种分析系统的工具,而非将世界截然划分为“智体”与“非智体”的绝对标准。虽然可以将手持计算器视为一种智体——即在接收到“2 + 2 =”这一感知序列时选择显示“4”这一动作——但这​​种分析方式对于我们理解计算器本身并无多大助益。从某种意义上说,所有工程领域都可以看作是设计与外部世界交互的人造物;而人工智能则处于这一谱系中(作者认为)最引人注目的那一端:在这一端,人造物拥有强大的计算资源,且其任务环境要求进行复杂的决策。

2.2  好行为:理性之概念(Good Behavior: The Concept of Rationality)

一个理性智体是指一个能够行正确事的智体。显然,行正确事优于行错事,但“行正确事”究竟意味着什么呢?

2.2.1   性能度量(Performance measures

         尽管道德哲学已发展出关于“正确事”的多种不同理念,但人工智能领域通常坚持一种称为“结果主义(consequentialism)”的理念:即根据行为的结果来评估智体的行为。当智体置于某种环境中时,它会根据接收到的感知信息生成一系列动作;这一系列动作会促使环境经历一系列状态变化。如果这一系列状态是预期的,则表明智体的表现良好。这种关于“预期的”的理念通过一种性能度量标准来体现,该标准用于评估环境状态的任意给定序列。

    人类拥有自身的欲望与偏好,因此,应用于人类的“理性”概念,是指人类能否成功选择行动,从而产生符合其自身意愿的环境状态序列。相比之下,机器并不具备自身的欲望或偏好;其性能指标——至少在最初阶段——存在于机器设计者或目标用户的构想之中。我们将看到,某些智体设计会明确表征(某种形式的)性能指标,而在另一些设计中,性能指标则是完全隐性的——智体虽能做出正确的行为,却并不知晓其缘由。

    回想一下Norbert Wiener的告诫,即必须确保“赋予机器的目标正是我们真正想要实现的目标”(第51页),我们会发现,正确制定性能度量标准往往相当困难。以本节前面提到的吸尘器智体为例:我们可能会提议用单次八小时工作期间清理的污垢量来衡量其性能。然而,对于理性智体而言,结果往往完全符合你的设定(即“你要求什么,就会得到什么”)。理性智体完全可以通过以下方式最大化这一性能指标:先清理污垢,再把污垢倒回地板,接着再次清理,如此循环往复。一种更合适的性能度量标准应当奖励保持地板清洁的行为。例如,可以在每个时间步长内,针对每一个保持清洁的方格给予一分奖励(同时可能扣除因消耗电力和产生噪音而带来的惩罚分)。总的来说,在设计性能度量标准时,最好基于我们希望在环境中实际实现的目标,而不是基于我们认为智体应当采取何种行为

    即便避开了显而易见的误区,仍有一些棘手的问题有待探讨。例如,前文提到的“地面清洁”概念,其依据的是一段时间内的平均清洁度。然而,同样的平均清洁度可能由两种截然不同的作业方式达成:一种是始终保持平庸的清洁水准,另一种则是清洁时全力以赴却伴随着长时间的停歇。究竟哪种方式更优,这看似只是清洁管理学中的细枝末节,实则涉及深层的哲学问题,且影响深远。究竟何者更佳——是跌宕起伏、惊心动魄的人生,还是安稳却平淡无奇的生活?又或是——是人人处于温和贫困状态的经济体系,还是有人极度富裕而另一些人极度贫困的经济体系?我们将这些问题留给勤于思考的读者去探究。

    本书大部分内容将假设性能指标能够被准确设定。然而,基于上述原因,我们必须承认存在这样一种可能性:即我们可能为机器设定了错误的目标——这正是第 51 页所描述的“Midas国王(King Midas)问题”。此外,在设计一款将由不同用户使用的软件时,我们无法预知每位用户的具体偏好。因此,我们或许需要构建能够体现对真实性能指标初始不确定性、并能随时间推移不断学习该指标的智体;关于此类智体的论述,请参阅第 15、17 和 23 章。

2.2.2   理性(Rationality

    何谓在任意已知时刻的理性,这取决于四件事:

●  定义成功标准的性能指标。

●  智体关于环境的先验知识。

●  智体可以执行的动作。

●  智体迄今为止的感知序列。

这就引出了理性主体的定义:

对于每一种可能的感知序列,理性智体都应根据该序列提供的证据及其内置知识,选择一个预期能使其性能度量最大化的行动。

以一个简单的吸尘器智体为例:如果当前方格脏了,它就进行清理;如果不脏,则移动到另一个方格。这就是图 2.3 中以表格形式列出的智体函数。这是一个理性智体吗?这取决于具体情况!首先,我们需要明确性能度量标准是什么、关于环境已知的信息有哪些,以及该智体配备了哪些传感器和执行器。让我们假设如下:

●    该性能指标在 1000 个时间步长的“生命周期”内,针对每一个时间步的每个清洁方格给予一分奖励。

●    环境的“地理布局”是先验已知的(图 2.2),但污垢的分布情况及智体的初始位置则未知。干净的方格会保持干净,执行“吸尘”动作可清理当前方格。“向右”和“向左”动作会使智体移动一格,除非该移动会导致智体离开环境范围;若发生这种情况,智体将保持在原地不动。

●    唯一可用的动作是“向右”、“向左”和“吸尘”。

●    智体能准确感知其位置以及该位置是否存在污垢。

在这种情况下,该智体确实是理性的;其预期表现至少不亚于任何其他智体。

显而易见,同一个智体在不同环境下可能会表现出非理性行为。例如,一旦所有污垢都被清理干净,该智体仍会进行不必要的往复移动;如果性能度量标准规定每次移动都要扣除一分,那么该智体的表现就会很差。针对这种情况,更理想的智体应当在确认所有方格都已清洁后便停止动作。如果已清洁的方格可能再次变脏,智体则应适时进行检查,并在必要时重新清理。如果环境布局未知,智体还需要对环境进行探索。练习 2.VACR 要求针对这些情况设计相应的智体。

2.2.3   全知、学习与自主性(Omniscience, learning, and autonomy

    我们需要仔细区分“理性”与“全知”。一个全知的行动者能够预知其行动的实际结果并据此行事;但在现实中,全知是不可能的。试看下例:某日,我正沿着香榭丽舍大街(Champs Elysées)漫步,忽然看见街对面有一位老友。当时附近没有车辆,我也无其他要事,于是出于理性,我开始横穿马路。然而就在此时,在33,000英尺的高空,一架路过的客机掉落了一扇货舱门(注:参见 N. Henderson,“波音 747 巨型客机被建议安装新型舱门锁”,《华盛顿邮报》(Washington Post),1989 年 8 月 24 日),还没等我走到街对面,我就被当场砸扁了。那么,我横穿马路的举动是不理性的吗?显然,我的讣告不太可能写着“某白痴试图横穿马路”。

这一例子表明,理性并不等同于完美。理性追求的是预期绩效的最大化,而完美追求的则是实际绩效的最大化。放弃对完美的要求,不仅仅是为了对智体公平;关键在于,如果我们要求智体采取事后证明为最佳的行动,那么将根本无法设计出满足这一规范的智体——除非我们能改进“水晶球”或“时间机器”的性能

    因此,我们对“理性”的定义并不要求全知全能,因为理性的选择仅取决于迄今为止的感知序列。同时,我们必须确保智体不会因疏忽而从事明显缺乏智能的行为。例如,如果智体在穿过繁忙的马路前没有左右观察,那么它的感知序列便无法告知它有一辆大型卡车正高速驶来。难道根据我们对理性的定义,此时过马路就是合理的吗?绝非如此!

    首先,面对这种不包含足够信息的感知序列,横穿马路是不理性的:不观察就横穿会导致极高的事故风险。其次,理性智体在踏入街道之前应选择“观察”这一动作,因为观察有助于最大化预期效能。为了改变未来感知而采取行动——有时称为“信息搜集”——是理性的重要组成部分,第15章对此有深入探讨。信息搜集的另一个例子是吸尘智体在初始未知环境中必须进行的探索行为。

    根据我们的定义,理性智体不仅需要收集信息,还要尽可能从其感知到的内容中进行学习。智体的初始配置可能反映了关于环境的某些先验知识,但随着智体积累经验,这些配置可能会得到修改和扩充。在某些极端情况下,环境是完全已知且完全可预测的;此时,智体无需进行感知或学习,只需采取正确的行动即可。

    当然,这类行动者是脆弱的。以貌不惊人的蜣螂(屎壳郎)为例:在挖好巢穴并产下卵后,它会从附近的粪堆取来一个粪球,用来堵住巢口。如果途中粪球被移走,它仍会继续动作,做出用那个并不存在的粪球堵塞巢口的姿态,却浑然不觉粪球已失。进化过程在蜣螂的行为模式中植入了一种预设前提;一旦这一前提失效,其行为便会以失败告终。

    斯芬克斯泥蜂(Sphex wasp)的智能稍高一些。雌蜂会先挖好洞穴,外出蜇晕一条毛虫并将其拖至洞口,随后进入洞内检查确认一切无误,再把毛虫拖进去产卵;这些毛虫将作为虫卵孵化后的食物。整个过程看似井井有条,但如果昆虫学家趁泥蜂在洞内检查时将毛虫移开几英寸,它就会退回到“拖动毛虫”这一步骤,并按原计划继续行动——即便研究人员反复多次移走毛虫,它也只会机械地重复这一过程,包括重新检查洞穴。斯芬克斯泥蜂无法意识到其本能行为模式已不再奏效,因此也不会对此做出改变。

    如果智体依赖其设计者的先验知识,而非自身的感知与学习过程,我们就说该智体缺乏自主性理性的智体应当具备自主性——即通过学习来弥补先验知识的局限或错误。例如,一个能够学习预测何处及何时会出现新污垢的吸尘智体,其表现会优于不具备此能力的智体。

实际上,智体往往无需从一开始就具备完全的自主性:当智体缺乏经验或毫无经验时,若无设计者提供辅助,它只能采取随机行动。正如进化赋予动物足够的先天反射以维持生存、从而有机会进行自主学习一样,为人工智体提供一定的初始知识及学习能力也是合乎情理的。在积累了足够的各种环境经验后,理性智体的行为便可实际上不再依赖其先验知识。因此,引入学习机制使得设计单一的理性智体成为可能,使其能够在多种多样的环境中取得成功。

2.3  环境之特征(The Nature of Environments)

既然我们已经给出了理性的定义,接下来就可以着手探讨如何构建理性智体了。不过,首先必须考虑任务环境——从本质上讲,理性智体正是针对这些“问题”的“解决方案”。我们首先介绍如何描述任务环境,并通过若干实例来说明这一过程。随后,我们将展示任务环境具有多种不同的类型。任务环境的特征直接决定了智体程序应采用何种设计方案

2.3.1   明确任务环境(Specifying the task environment)

         在探讨简单的吸尘器智体(agent)的理性时,我们必须明确其性能度量环境以及智体的执行器传感器。我们将所有这些要素统称为“任务环境”。为了便于记忆,我们将其称为 PEAS(Performance ,Environment ,Actuators ,Sensors,即性能、环境、执行器、传感器)描述。在设计智体时,首要步骤务必是尽可能详尽地明确任务环境。

    “真空吸尘器世界”是一个简单的例子;让我们来考虑一个更复杂的问题:自动驾驶出租车。图 2.4 总结了该出租车任务环境的 PEAS 描述。我们将在下文中详细讨论其中的每一个要素。

------------图 2.4:针对自动驾驶出租车司机的任务环境的 PEAS 描述。------------

    首先,我们希望自动驾驶系统在性能表现上达到什么样的标准?理想的特性包括:准确抵达目的地;最大限度地降低油耗及车辆磨损;缩短行程时间或降低成本;减少违反交通法规的行为及对他人的干扰;最大程度地保障安全并提升乘客舒适度;以及实现利润最大化。显然,其中一些目标存在冲突,因此必须进行权衡取舍。

    接下来,我们要考虑的是出租车将面临怎样的驾驶环境。任何出租车司机都必须应对各种各样的道路,从乡村小径、城市巷道到拥有12条车道的高速公路,不一而足。这些道路上不仅有其他车辆、行人、流浪动物和道路施工,还可能出现警车、积水坑洼等情况。此外,出租车还需要与潜在及实际乘客进行互动。还有一些可供选择的设定:出租车既可能在南加州(Southern California)(那里极少遇到降雪问题)运营,也可能在Alaska (那里几乎总是冰雪覆盖)行驶;它可以始终保持靠右行驶,但也可能需要具备足够的灵活性,以便在英国或日本等国家靠左行驶。显然,驾驶环境的限制条件越多,设计难度就越低

    自动驾驶出租车的执行机构涵盖了人类驾驶员所使用的那些装置:通过油门控制发动机,以及控制转向和制动。此外,它还需要通过显示屏或语音合成器向乘客反馈信息,并可能需要某种方式与其他车辆进行交互——无论这种交互是礼貌的还是其他形式。

这款出租车将配备各类基础传感器,包括一个或多个用于“观察”周围环境的摄像头以及用于探测与其他车辆及障碍物距离的激光雷达和超声波传感器为避免超速违规,出租车应配备速度计为确保车辆操控得当(尤其是在转弯时),则需配备加速度计为了监测车辆的机械状况,它还需要常规的发动机、燃油及电气系统传感器就像许多人类驾驶员一样,它也需要获取GPS信号以防迷路。最后,它还需要配备触摸屏或语音输入功能,以便乘客设定目的地

图 2.5 勾勒了若干其他类型智体的基本PEAS要素。更多示例见习题2.PEAS。这些示例涵盖了物理环境和虚拟环境。值得注意的是,虚拟任务环境可能与“现实”世界一样复杂:例如,在拍卖和转售网站上进行交易的软件智体(或称软件机器人/softbot)需要与数百万其他用户及数十亿个对象(其中许多对象包含真实图像)进行交互。

----------------------图 2.5:智体类型及其 PEAS 描述的示例。-----------------

2.3.2   任务环境之属性(Properties of task environments)

人工智能领域中可能出现的任务环境种类繁多。不过,我们可以归纳出若干关键维度,据此对这些任务环境进行分类。这些维度在很大程度上决定了适宜的智体设计方案,以及各类主流智体实现技术的适用性。我们将首先列出这些维度,随后分析几种任务环境以阐明相关概念。此处给出的定义较为通俗;后续章节将对各类环境提供更精确的描述与示例。

    完全可观测(Fully observable)与部分可观测(partially observable):如果智体的传感器使其能够在每一时刻获取环境的完整状态,则称该任务环境是完全可观测的。如果传感器能够检测到与动作选择相关的所有方面,那么该任务环境实际上就是完全可观测的而“相关性”则取决于性能度量标准。完全可观测的环境具有优势,因为智体无需维护任何内部状态来追踪环境状况。环境之所以可能是部分可观测的,原因在于传感器存在噪声或精度不足,或者某些状态信息根本未包含在传感器数据中——例如,仅配备局部污垢传感器的吸尘智体无法判断其他方格内是否有污垢,而自动驾驶出租车也无法洞悉其他驾驶员的想法。如果智体完全没有传感器,则环境是不可观测的。人们可能会认为在这种情况下智体将陷入绝境,但正如我们在第4章中所讨论的,智体的目标仍有可能实现,有时甚至能以确定的方式实现。

单智体(Single-agent)与多智体(multiagent):单智体环境与多智体环境之间的区别看似简单明了。例如,独自解答填字游戏的智体显然处于单智体环境中,而下棋的智体则处于双智体环境中。然而,其中也存在一些微妙的问题。首先,我们虽然描述了如何将某个实体视为智体,但并未阐明哪些实体“必须”被视为智体。智体 A(例如出租车司机)是否必须将对象 B(例如另一辆车)视为智体?还是说,可以将 B 仅仅视为遵循物理定律运动的物体——就像海滩上的波浪或随风飘荡的落叶那样?这里的关键区别在于:对象 B 的行为是否最好被描述为旨在最大化某种性能指标,而该指标的数值又取决于智体 A 的行为。

以国际象棋为例,对手( 主体 B )力求最大化其自身的性能指标,而根据国际象棋规则,这会使主体 A 的性能指标最小化;因此,国际象棋属于竞争性多智体环境。相比之下,在出租车驾驶环境中,避免碰撞能使所有智体的性能指标最大化,故属于部分协作型多智体环境;但它同时也具有部分竞争性,例如,同一停车位只能容纳一辆车。

多智体环境中的智体设计问题,往往与单智体环境中的问题截然不同;例如,在多智体环境中,通信往往会作为一种理性行为自然产生;而在某些竞争性环境中,随机化行为则是理性的,因为它能避免因行为可预测而带来的弊端。

确定性(Deterministic)与非确定性(nondeterministic)。如果环境的下一状态完全由当前状态及智体所执行的动作决定,则称该环境为确定性环境;否则,即为非确定性环境。原则上,在完全可观测的确定性环境中,智体无需顾虑不确定性问题;然而,若环境仅为部分可观测,则其表现出的特性可能呈现出非确定性。

大多数现实情况都极其复杂,以至于无法追踪所有未被观测到的方面;因此,在实际应用中,必须将其视为非确定性的。从这个意义上讲,驾驶出租车显然属于非确定性活动,因为人们永远无法准确预测交通状况;此外,轮胎可能会意外爆裂,发动机也可能毫无征兆地突然熄火或发生故障。尽管我们所描述的“吸尘器世界”模型是确定性的,但其变体形式可能包含非确定性因素,例如随机出现的污垢和不可靠的吸尘机制(见习题 2.VFIN)。

最后补充一点:有些人将“随机”(stochastic)一词视为“非确定性”(nondeterministic)的同义词,但我们对这两个术语进行了区分;如果环境模型明确涉及概率(例如“明天有 25% 的几率下雨”),我们称之为“随机”模型;如果仅列出各种可能性而未进行量化(例如“明天可能会下雨”),则称之为“非确定性”模型。

片段式(Episodic)与序列式(sequential):在片段式任务环境中,智体的经历划分为一个个独立的片段。在每个片段中,智体接收一个感知信息,随后执行单一动作。关键在于,后续片段并不依赖于此前片段中所采取的动作。许多分类任务都属于片段式任务。例如,在装配线上识别缺陷零件的智体,其每一次决策都仅基于当前零件,而与之前的决策无关;此外,当前的决策也不会影响下一个零件是否为次品。相比之下,在序列式环境中,当前的决策可能会影响所有后续决策( 注:在计算机科学中,“sequential”(顺序的)一词也用作“parallel”(并行的)的反义词。这两个含义之间基本没有关联)。国际象棋和出租车驾驶都属于序列式任务:在这两种情况下,短期的动作都可能产生长期的后果。片段式环境远比序列式环境简单,因为智体无需进行长远规划。

静态(static)与动态(dynamic):如果环境在智体进行决策的过程中可能发生变化,则称该环境对该智体而言是动态的;反之,则为静态。静态环境易于处理,因为智体在决定采取何种行动时,既无需持续观察环境,也不必担心时间流逝的问题。相比之下,动态环境会不断要求智体做出行动选择;若智体迟迟未做决定,便等同于选择了“不采取任何行动”。如果环境本身不随时间推移而变化,但智体的性能得分会发生变化,则称该环境为半动态环境。出租车驾驶显然属于动态环境:当驾驶算法还在权衡下一步该做什么时,其他车辆以及出租车自身都在不断移动。带时限的国际象棋属于半动态环境。填字游戏则属于静态环境。

离散(discrete)与连续(continuous):离散与连续的区分适用于环境状态、时间处理方式,以及智体的感知与动作。例如,国际象棋环境具有有限数量的离散状态(不考虑计时器);其感知和动作集合也是离散的。相比之下,驾驶出租车是一个涉及连续状态和连续时间的问题:出租车及其他车辆的速度和位置在连续数值范围内变化,且随时间平滑过渡;驾驶动作(如转向角度等)也是连续的。严格来说,来自数码相机的输入是离散的,但在实际应用中,通常将其视为代表连续变化的强度和位置

已知(known)与未知(unknown):严格来说,这种区分并非针对环境本身,而是指智体(或设计者)对于该环境“物理定律”的认知状态。在已知环境中,所有动作的后果(若环境是非确定性的,则指后果的概率)都是已知的。显然,如果环境是未知的,智体就必须学习其运作机制,以便做出明智的决策。

已知环境与未知环境之间的区别,不同于“完全可观测环境”与“部分可观测环境”之间的区别。已知环境完全可能是部分可观测的——例如,在单人纸牌游戏中,我虽然了解规则,却无法看到尚未翻开的牌。反之,未知环境也可能是完全可观测的——在玩一款新电子游戏时,屏幕上可能显示了完整的游戏状态,但在我实际尝试之前,我并不知道各个按键的功能。

正如第57页所述,性能指标本身可能是未知的,原因要么是设计者不确定如何准确地表述它,要么是最终用户(其偏好至关重要)的身份尚不明确。例如,出租车司机通常无法预知新乘客是偏好悠闲还是快速的行程,亦或是倾向于谨慎还是激进的驾驶风格。虚拟个人助理在刚开始时,对新主人的个人偏好一无所知。在此类情况下,智体可以通过与设计者或用户的进一步交互,来增进对性能指标的了解。这进而表明,任务环境必然会被视为一种多智体环境。

最困难的情形具备以下特征:部分可观测、多智体、非确定性、序贯性、动态性、连续性以及环境未知。驾驶出租车在上述各方面都颇具挑战,唯独司机对环境通常是熟悉的。相比之下,若在陌生的国度驾驶租来的车辆——面对不熟悉的地理环境、迥异的交通法规以及紧张不安的乘客——那体验可就“刺激”多了。

图 2.6 列出了一些常见环境的特性。需要注意的是,这些特性并非总是界限分明的。例如,我们将医疗诊断任务归类为单智体环境,因为将患者体内的疾病过程建模为智体通常并无益处;然而,医疗诊断系统也可能需要应对不配合的患者或持怀疑态度的医务人员,因此该环境也可能具有多智体环境的特征。此外,如果将医疗诊断任务理解为根据一系列症状做出诊断,那么它属于片段式(episodic)任务;但如果任务涉及提出一系列检查方案、评估治疗进展、同时处理多名患者等环节,则该问题属于序列式(sequential)任务。

--------------------图 2.6:任务环境及其特征的示例---------------------------

我们没有设置“已知/未知”这一列,因为正如前文所述,这并非环境的固有属性。对于某些环境(如国际象棋和扑克)而言,向智体提供关于规则的完整知识相当容易;但即便如此,探讨智体如何在不具备此类知识的情况下学习玩这些游戏,依然饶有趣味。

2.4  智体之结构(The Structure of Agents)

    到目前为止,我们是通过描述行为(即在接收到任意感知序列后所执行的动作)来探讨智体的。现在,我们必须直面核心问题,探讨其内部运作机制。人工智能的任务是设计一个智体程序,以实现智体函数(即从感知到动作的映射)。我们假设该程序运行在某种配备了物理传感器和执行器的计算设备上——我们将这种设备称为智体体系结构

    agent = architecture + program

显然,我们选择的程序必须与相应的架构相匹配。如果程序要发出诸如“行走”(Walk)之类的动作指令,那么该架构最好配备有腿部结构。这种架构既可以是一台普通的个人计算机(PC),也可以是一辆搭载了多台机载计算机、摄像头及其他传感器的机器人车辆。总体而言,架构负责将传感器获取的感知信息提供给程序,运行该程序,并将程序生成的动作选择实时传达给执行器。本书的大部分内容侧重于智体程序的设计,不过第26章和第27章专门探讨了传感器与执行器相关的内容。

--------------------图 2.7:TABLE-DRIVEN-AGENT 程序针对每一个新的感知输入被调用,并每次返回一个动作。它在内存中保留了完整的感知序列。--------------------------

2.4.1   智体程序(Agent programs)

    本书中设计的智体程序都具有相同的基本结构:它们接收来自传感器的当前感知作为输入,并向执行器输出一个动作(注:智体程序框架还有其他选择;例如,我们可以将智体程序设计为与环境异步运行的协程。每个此类协程都包含输入端口和输出端口,并由一个循环构成:该循环从输入端口读取感知信息,并将动作写入输出端口)。请注意智体程序与智体函数之间的区别:智体程序仅以当前感知作为输入,而智体函数则可能依赖于完整的感知历史。智体程序别无选择,只能将当前感知作为输入,因为环境中无法获取更多信息;如果智体的动作需要依赖于完整的感知序列,那么智体就必须记住这些感知信息。

   我们使用附录 B 中定义的简单伪代码语言来描述智体程序。(在线代码库中包含了用实际编程语言编写的实现。) 例如,图 2.7 展示了一个相当简单的智体程序:它记录感知序列,并利用该序列在动作表中进行索引,从而决定采取何种行动。该表(图 2.3 给出了吸尘器世界中的一个示例)明确表示了该智体程序所体现的智体函数。若要以这种方式构建理性智体,作为设计者,我们必须构建一张包含针对每种可能的感知序列的相应动作的表。

探讨为何基于查表法的智体构建方式注定会失败,是很有启发意义的。令 𝒫 为可能的感知集,并令 T 为智体的寿命(即它将接收到的感知信息的总数)。查找表将包含 \sum_{t=1}^{T}|\mathcal{P}|^{t}  个条目。以自动驾驶出租车为例:来自单个摄像头(通常车辆配备八个摄像头)的视觉输入数据流速率约为每秒 70 兆字节(基于每秒 30 帧、1080×720 像素及 24 位色彩信息计算)。这意味着,仅一小时的行驶过程就会产生一个包含超过 10^{13}  ( 即 10 万亿 )个条目的查找表。相比之下,即便是国际象棋——这个现实世界中微小且规则明确的片段——其查找表(经计算)也至少包含 10^{15}  个条目。作为参照,可观测宇宙中的原子总数也不足  10^{80}  个。这些查找表规模之巨大,意味着:(a) 宇宙中没有任何物理智体拥有足够的存储空间来容纳该表;(b) 设计者根本没有时间去构建这张表;以及 (c) 没有任何智体能够通过自身经验习得表中所有正确的条目

尽管如此,只要表中的内容填写正确,TABLE-DRIVEN-AGENT(表驱动智体)确实能实现我们想要的效果:即实现了预期的智体函数。

人工智能面临的关键挑战在于,如何编写程序,使其尽可能通过精简的代码——而非庞大的数据表——来产生理性行为。

许多例子表明,这一过程在其他领域已成功实现:例如,20世纪70年代之前,工程师和学生曾广泛使用的庞大平方根数值表,如今已被电子计算器上运行的、仅需五行代码的Newton法程序所取代。问题在于,人工智能能否在“通用智能行为”领域实现Newton当年在“计算平方根”领域所做到的那种变革?我们相信,答案是肯定的。

在本节的其余部分,我们将概述四种基本的智体程序,它们体现了几乎所有智能系统所遵循的原理:

●  简单反射智体;

●  基于模型的反射智体;

●  基于目标的智体;以及

●  基于效用的智体。

各类智体程序都以特定的方式组合特定的组件,从而生成行动。第 2.4.6 节概括性地阐述了如何将这些智体转化为学习型智体,使其能够改进组件性能,进而生成更优的行动。最后,第 2.4.7 节描述了智体内部表示这些组件的多种方式;这种多样性构成了该领域及本书的一个主要组织原则。

2.4.2   简单反射智体(Simple reflex agents)

    最简单的智体类型是简单反射型智体。这类智体根据当前的感知信息来选择行动,而忽略以往的感知历史。例如,图2.3中列出了其智体函数的吸尘器智体就是一种简单反射型智体,因为它的决策仅基于当前位置以及该位置是否存在污垢。图2.8展示了该智体的程序。

------------------图 2.8:这是针对双地点真空吸尘环境中的简单反射型智体的智体程序。该程序实现了图 2.3 中以表格形式列出的智体函数。--------------------------

    请注意,与相应的查找表相比,吸尘智体程序确实非常精简。这种精简最主要的原因在于忽略了感知历史,从而将相关的感知序列数量从 4^{T}  减少到了仅 4 个。此外,还有一个微小的精简因素:当当前方格处于脏污状态时,所采取的动作并不取决于具体位置。尽管我们使用了 if-then-else 语句来编写该智体程序,但由于其逻辑足够简单,它完全可以用Bool电路来实现。

即使在较复杂的环境中,简单的反射行为也会发生。试想你是自动驾驶出租车的驾驶员:如果前方的车辆刹车且刹车灯亮起,你应该注意到这一点并开始刹车。换言之,系统会对视觉输入进行处理,以确立“前方车辆正在刹车”这一条件;随后,这会触发智体程序中预先建立的某种关联,从而执行“开始刹车”这一动作。我们将这种关联称为“条件-动作规则”(condition–action rule)(注:也称为“情境-动作(situation–action rules)”规则、产生式(productions)或“if–then”规则。),其表示形式为:

if car-in-front-is-braking then initiate-braking  。

人类也拥有许多此类连接,其中一些属于习得性反应(例如驾驶),另一些则是先天反射(例如当物体靠近眼睛时会眨眼)。本书将展示建立和实现这些连接的几种不同方式。

         图2.8中的程序是针对特定真空环境设计的。一种更通用、更灵活的方法是:首先构建一个针对“条件-动作”规则的通用解释器,然后针对具体的任务环境创建相应的规则集。图2.9以示意图形式展示了该通用程序的结构,说明了“条件-动作”规则如何使智体建立从感知到动作的联系。如果这看起来有些简单,不必担心——接下来的内容会更有趣。

    图 2.10 展示了对应于图 2.9 的智体程序。INTERPRET-INPUT 函数根据感知信息生成当前状态的抽象描述,而 RULE-MATCH 函数则在规则集中返回第一条与给定状态描述相匹配的规则。需要注意的是,关于“规则”和“匹配”的描述纯粹是概念性的;正如前文所述,实际实现方式可以非常简单,例如由实现Bool电路的逻辑门构成的集合。此外,也可以采用“神经”电路,即用人工神经网络中的非线性单元来替代逻辑门(参见第 22 章)。

----------------------图 2.9:简单反射智体的示意图。我们用矩形表示智体决策过程中的当前内部状态,用椭圆形表示该过程中使用的背景信息。------------------------

    简单反射智体具有简单这一可贵特性,但其智能水平有限。图 2.10 所示的智体只有在仅凭当前感知就能做出正确决策的情况下——即环境完全可观测时——才能正常工作。

-------------------图 2.10:一种简单的反射智体。它根据某条规则行事,该规则的条件与由感知所定义的当前状态相匹配。-----------------------------------------

哪怕只是轻微的不可观测性,也可能引发严重问题。例如,前文提到的制动规则假设,仅凭当前的感知信息(即单帧视频画面)就能判断“前方车辆正在制动”这一状况。如果前车配备了安装在中央位置(因而具有唯一可识别性)的刹车灯,这种方法是行得通的。然而,旧款车型在尾灯、刹车灯和转向灯的布局上各不相同;仅凭单张图像,往往无法分辨车辆究竟是在制动,还是仅仅亮着尾灯。如果一个简单的反射型智体跟在这样的车辆后方行驶,要么会不必要地持续制动,要么——更糟糕的是——根本不会采取制动措施。

在真空吸尘器世界中,我们也能看到类似的问题。假设一个简单的反射型吸尘智体失去了位置传感器,仅保留了污垢传感器。该智体只有两种可能的感知输入:[Dirty] 和 [Clean]。面对 [Dirty] 的感知,它可以执行“吸尘”动作;那么,面对 [Clean] 的感知时,它该怎么做呢?如果它恰好从方格 A 出发,执行“向左移动”就会(永远)失败;如果它恰好从方格 B 出发,执行“向右移动”也会(永远)失败。对于在部分可观测环境中运行的简单反射型智体而言,陷入无限循环往往是不可避免的。

如果智体能够随机选择行动,就有可能摆脱无限循环。例如,当吸尘智体感知到当前位置处于“已清洁”状态时,它可以通过掷硬币的方式在向右或向左移动之间做出选择。不难证明,该智体平均只需两步就能到达另一个方格。随后,如果那个方格是脏的,智体就会将其清理干净,从而完成任务。因此,采用随机策略的简单反射型智体,其表现可能会优于确定性简单反射型智体。

我们在第 2.3 节中提到,在某些多智体环境中,采取适当的随机行为可能是理性的。而在单智体环境中,随机化通常并非理性之举。虽然它作为一种实用技巧,能在特定情境下辅助简单的反射型智体,但在大多数情况下,采用更复杂的确定性智体能取得更好的效果。

2.4.3   基于模式的反射智体(Model-based reflex agents)

    应对部分可观测性最有效的方法,是让智体追踪当前无法直接观测到的环境部分。具体而言,智体应维护某种内部状态;该状态基于感知历史,从而能反映当前状态中至少部分未被直接观测到的方面。以制动问题为例,所需的内部状态并不复杂——仅需保留来自摄像头的上一帧图像,便足以让智体检测到车辆边缘的两盏红灯是否同时亮起或熄灭。对于变道等其他驾驶任务,若无法同时看到所有车辆,智体则需追踪其他车辆的位置。此外,若要进行任何驾驶操作,智体还必须掌握车钥匙的位置。

随着时间推移更新这种内部状态信息,要求智体程序以某种形式编码两类知识。首先,我们需要关于世界如何随时间变化的信息,这大致可分为两部分:智体动作产生的影响,以及世界独立于智体而发生演变的方式。例如,当智体顺时针转动方向盘时,汽车会向右转;而下雨时,汽车的摄像头可能会被淋湿。这种关于“世界运作方式”的知识——无论是以简单的Bool电路还是完整的科学理论形式实现——被称为世界的状态转移模型。

其次,我们需要了解外部世界的状态如何反映在智体的感知信息中。例如,当前方车辆开始制动时,前向摄像头的画面中会出现一个或多个发光的红色区域;而当摄像头表面沾湿时,画面中会出现水滴状物体,从而部分遮挡路面。这类知识被称为传感器模型。

结合起来,状态转移模型和传感器模型使智体能够追踪世界的状态——当然,这受限于智体传感器自身的局限性。使用此类模型的智体被称为基于模型的智体

图 2.11 展示了具有内部状态的基于模型的反射智体的结构,描绘了智体如何利用其关于世界运作方式的模型,将当前的感知与旧的内部状态相结合,从而生成对当前状态的更新描述。智体程序见图 2.12。其中值得关注的是 UPDATE-STATE 函数,它负责构建新的内部状态描述。关于模型和状态如何表示,其具体细节会因环境类型及智体设计所采用的技术而有很大差异。

无论采用何种表示形式,智体往往都无法精确确定部分可观测环境的当前状态。相反,图 2.11 中标有“当前世界状况”的方框代表了智体的“最佳猜测”( 若智体同时考虑多种可能性,则可能包含多个最佳猜测)。例如,自动驾驶出租车可能无法看清前方停着的大型卡车后的情况,只能推测导致通行受阻的原因。因此,尽管对当前状态的不确定性可能无法避免,智体仍必须做出决策。

----------------------图 2.11:一个基于模型的反射智体------------------------

---------------------------图 2.12:一种基于模型的反射智体。它利用内部模型来追踪世界的当前状态,随后像反射智体那样选择行动。-------------------------------

2.4.4   基于全局的智体(Global-based agents)

    仅了解环境的当前状态,往往不足以决定该采取何种行动。例如,在道路交叉口,出租车既可以左转、右转,也可以直行;正确的决策取决于出租车的目的地。换言之,除了对当前状态的描述,智体还需要某种形式的目标信息,用以描述期望出现的情境——例如,到达特定的目的地。智体程序可以将这些信息与模型(即“基于模型的反射智体”中所使用的那种模型信息)结合起来,从而选择能够实现目标的行动。图 2.13 展示了基于目标的智体结构。

-----------------图 2.13:一种基于模型和目标的智体。它既维护关于世界状态的信息,也记录待实现的目标集合,并选择能够(最终)导致目标实现的行动。------------------

有时,基于目标的动作选择十分简单——例如,当执行单个动作就能立即实现目标时。有时,这一过程则较为复杂——例如,当智体必须考量一系列曲折复杂的步骤,才能找到实现目标的途径时。搜索(第3、4、6章)和规划(第11章)是人工智能领域中专门致力于寻找能实现智体目标的动作序列的分支学科

请注意,这种决策方式与前文所述的“条件-动作”规则有着本质区别,因为它涉及对未来的考量——既包括“如果我这样做会发生什么?”,也包括“这会让我感到高兴吗?”。在反射智体的设计中,这类信息并未被显式表征,因为其内置规则直接将感知映射为动作。反射智体一旦看到刹车灯就会刹车,仅此而已;它并不理解其中的缘由。相比之下,基于目标的智体在看到刹车灯时之所以刹车,是因为它预测只有这一动作才能实现其“不撞上其他车辆”的目标。

2.4.5   基于效用的智体(Utility-based agents)

    在大多数环境中,仅靠目标本身不足以产生高质量的行为。例如,许多动作序列都能让出租车到达目的地(从而实现目标),但其中一些序列可能比另一些更快、更安全、更可靠或成本更低。目标只能在“满意(happy)”与“不满意(unhappy)”的状态之间提供一种粗略的二元区分。一种更通用的性能衡量标准应当能够比较不同的世界状态,并根据这些状态能给智体带来多大程度的“满意感”来进行评估。由于“满意”一词听起来不够科学,经济学家和计算机科学家通常使用“效用”(utility)这一术语(注:此处的“utility”一词指的是“有用性”,而非电力公司或自来水厂)。

    我们已经看到,性能度量会为任意给定的环境状态序列赋予一个分值,从而能够轻易区分出租车到达目的地时各种不同路径的优劣。智体的效用函数本质上是对性能度量的内部化。只要内部效用函数与外部性能度量保持一致,那么选择能使效用最大化之行动的智体,根据外部性能度量来看,就是理性的。

    我们要再次强调,这并非实现理性的唯一途径——我们已经见过针对真空吸尘器世界的理性智体程序(图2.8),它并不知晓自身的效用函数——但与基于目标的智体相比,基于效用的智体在灵活性和学习能力方面具有诸多优势。此外,在两类情形下,仅靠目标往往不足以应对,而基于效用的智体仍能做出理性决策。第一类情形是存在相互冲突的目标,且只能实现其中一部分(例如速度与安全之间的权衡);此时,效用函数能明确规定如何进行合理的取舍。第二类情形是智体面临多个潜在目标,但没有任何一个目标能被确切实现;在这种情况下,效用提供了一种衡量方式,能够权衡成功的可能性与目标的重要性。

    现实世界中,部分可观测性和非确定性无处不在,因此,在不确定性条件下的决策也同样普遍。从技术角度来看,一个基于效用的理性智体(agent)会选择能使行动结果的期望效用最大化的行动——即综合考虑各种结果的概率与效用后,智体预期平均能获得的效用。(附录A对“期望”给出了更精确的定义。)在第15章中,我们将展示:任何理性智体的行为表现,都必然等同于它拥有一个效用函数并试图最大化该函数的期望值。对于拥有明确效用函数的智体,可以利用通用算法做出理性决策,而无需针对具体要最大化的效用函数来定制算法。这样一来,关于理性的“全局”定义——即将表现最优的智体函数视为理性——就转化为了对理性智体设计的“局部”约束,而这种约束可以用简单的程序来表达。

    基于效用的智体结构如图 2.14 所示。基于效用的智体程序将在第 15 章和第 16 章中介绍;在这些章节中,我们将设计能够处理非确定性或部分可观测环境中固有不确定性的决策智体。正如第 17 章所述,多智体环境下的决策问题也在效用理论的框架下进行研究。

--------------图 2.14:一种基于模型和效用的智体。它利用世界模型以及衡量其对各种世界状态偏好的效用函数,选择能带来最佳期望效用的行动;其中,期望效用是通过对所有可能的结果状态进行加权平均计算得出的,权重即为各结果发生的概率。------------

    此时,读者可能会问:“事情就这么简单吗?我们只需构建能够最大化期望效用的智体,就算大功告成了?”诚然,此类智体确实具备智能,但构建过程绝非易事。基于效用的智体必须对环境进行建模并实时追踪环境状态,而这些任务涉及感知、表征、推理和学习等领域的大量研究工作——本书的许多章节正是围绕这些研究成果展开的。选择能使效用最大化的行动方案同样是一项艰巨的任务,需要运用巧妙的算法,而相关内容又占据了本书的另外几个章节。即便拥有了这些算法,受限于计算复杂度,在实际应用中通常也无法实现“完全理性”(正如我们在第一章中所指出的那样)。此外还需注意,并非所有基于效用的智体都依赖于模型;正如我们在第23章和第26章将要看到的,无模型智体无需确切了解某项行动如何改变环境,便能在特定情境下习得最佳行动方案。

    最后,这一切都建立在设计者能够准确设定效用函数的前提之上;第16、17和23章对效用函数未知这一问题进行了更深入的探讨。

2.4.6   学习型智体(Learning agents)

我们已经介绍过多种用于选择行动的智体程序,但尚未阐述这些程序是如何产生的。图灵(Turing, 1950)在其早期的著名论文中,曾探讨过通过人工编程来构建智机器的构想。他估算了这项工作所需的工作量,并得出结论:“似乎需要一种更快捷的方法。”他提出的方法是构建学习型机器,然后对其进行训练。在人工智能的许多领域,这已成为构建顶尖系统的主流方法。任何类型的智体(如基于模型的、基于目标的、基于效用的智体等)既可以构建为学习型智体,也可以不采用这种方式。

正如我们之前提到的,学习还有另一个优势:它使智体能够在最初未知的环境中运行,并使其能力超越仅凭初始知识所能达到的水平。本节将简要介绍学习型智体的主要思想。本书将在各处探讨针对特定类型智体的学习机遇与方法,而第 19、21、22 和 23 章则会深入讲解各种学习算法本身。

如图 2.15 所示,学习智体可划分为四个概念组件。其中最重要的区别在于“学习组件”与“性能组件”:前者负责进行改进,后者负责选择外部动作。性能组件即我们此前所理解的智体整体——它接收感知信息并决定采取何种动作。学习组件利用来自“评价者”的反馈(关于智体表现如何的信息),确定应如何修改性能组件,以便在未来取得更好的表现。

----------图 2.15:一个通用学习智体。“性能组件”方框代表了我们之前视为整个智体程序的部分;而现在的“学习组件”方框则能够修改该程序,以提升其性能。-----------

    学习组件的设计在很大程度上取决于执行组件的设计。在着手设计一个旨在习得特定能力的智体时,首要问题并非“我该如何让它学会这项能力?”,而是“一旦学会了这项能力,智体将采用何种执行组件来实施它?”一旦确定了执行组件的设计,便可以构建相应的学习机制,从而改进智体的各个组成部分。

    “评价者”(critic)负责根据既定的性能标准,向“学习组件”反馈智体(agent)的表现情况。之所以需要评价者,是因为感知信息本身无法直接表明智体是否取得了成功。例如,一个国际象棋程序可能会接收到表明其已将对手“将死”的感知信息,但它需要依据性能标准才能明白这是一件好事;感知信息本身并不包含这种评价含义。性能标准必须是固定的,这一点至关重要。从概念上讲,应将其视为完全独立于智体之外的事物,因为智体绝不能为了迎合自身的行为而修改这一标准。

    学习智体的最后一个组件是问题生成器。它负责提出能够带来新颖且富有信息量之体验的行动建议。如果完全由“执行组件”做主,它会基于现有知识坚持采取最优行动;但如果智体愿意进行一些探索,在短期内采取看似非最优的行动,那么从长远来看,它或许能发现更好的行动方案。问题生成器的职责正是提出这类探索性行动。这与科学家进行实验时的做法如出一辙。Galileo并不认为从比萨斜塔顶端抛下石块这一行为本身有什么价值;他既无意砸碎石块,也无意“改造”那些倒霉行人的大脑。他的目标是通过确立关于物体运动的更优理论,来“改造”自己的大脑。

学习组件能够修改智体图示(图 2.9、2.11、2.13 和 2.14)中展示的任何“知识”组件。最简单的情况涉及直接从感知序列进行学习。通过观察环境连续的状态对,智体可以学习“我的动作会产生什么效果”以及“世界如何随其动作而演变”。例如,如果自动驾驶出租车在湿滑路面上行驶时施加了特定的制动压力,它很快就能获知实际产生的减速度,以及车辆是否会发生侧滑冲出路面。问题生成器可能会识别出模型中需要改进的部分,并建议进行相应的实验,例如在不同路面和不同条件下测试制动效果。

无论外部性能标准如何,改进基于模型的智体的模型组件,使其更符合现实情况,通常总是有益的。(但在某些情况下,从计算角度来看,采用一个简单但略有偏差的模型,往往优于采用一个完美却极其复杂的模型。)而在学习反射组件或效用函数时,则需要利用来自外部标准的信息。

例如,假设某个从事出租车驾驶任务的智体,如果让乘客在行程中遭受剧烈颠簸,就无法获得小费。外部性能标准必须让智体明白,失去小费对其整体绩效而言是一种负面影响;这样,智能体或许就能领悟到,剧烈的驾驶动作无助于提升其自身效用。从某种意义上说,性能标准会将输入感知信息的一部分识别为奖励(或惩罚),从而针对智体的行为质量提供直接反馈。动物体内的疼痛感和饥饿感等“硬连线”式(即与生俱来、预先设定的)性能标准,也可以按此方式来理解。

更广泛地说,人类的选择能够提供有关人类偏好的信息。例如,假设某辆出租车并不知道人们通常不喜欢巨大的噪音,于是决定通过持续鸣笛来确保行人察觉到它的到来。由此引发的人类行为——如捂住耳朵、出言不逊,甚至可能剪断喇叭线路——将为该智体提供依据,使其能够据此更新自身的效用函数。这一问题将在第23章中作进一步探讨。

总之,智体包含多种组件,而这些组件在智体程序中又有多种表示方式,因此学习方法呈现出极大的多样性。然而,其中贯穿着一个统一的主题:智体的学习过程,本质上就是对其各个组件进行修改,使这些组件能与现有的反馈信息更加契合,从而提升智体的整体性能。

2.4.7   智体程序各组件的工作原理(How the components of agent programs work)

    我们已(以高度概括的方式)描述了智体程序由各种组件构成,这些组件的功能在于回答诸如“当前世界状况如何?”“我现在该采取什么行动?”以及“我的行动会产生什么后果?”之类的问题。对于人工智能的学习者而言,接下来的问题便是:“这些组件究竟是如何运作的?”要恰当地回答这一问题,往往需要上千页的篇幅;不过,在此我们希望引导读者关注一个基本问题:针对智体所处的环境,这些组件在表征方式上存在哪些主要区别。

    概括而言,我们可以根据复杂度和表达能力递增的顺序,将各种表征排列在一条轴线上,即:原子型(atomic)、因子型(factored)和结构型(structured)。为了阐明这些概念,不妨考察智体的一个特定组件,例如负责处理“我的动作会产生什么结果”的组件。该组件描述了执行某项动作后环境中可能发生的变化,而图 2.16 则以示意图形式展示了这些状态转换的表征方式。

-----------------------图 2.16:表示状态及状态间转换的三种方式。(a) 原子表示:状态(如 B 或 C )被视为无内部结构的黑盒;(b) 因子化表示:状态由属性值向量构成;属性值可以是Bool值、实数值或固定符号集中的某个符号;(c) 结构化表示:状态包含若干对象,每个对象既可拥有自身的属性,也可与其他对象存在关联。-------------------

在原子化表示中,世界的每种状态都是不可分割的——即不包含内部结构。试考虑这样一个任务:规划一条从国家一端到另一端的行车路线,途经一系列城市(我们在第82页的图3.1中讨论了这个问题)。为了解决这一问题,只需将世界状态简化为当前所在城市的名称即可——这是一个单一的知识原子,即一个“黑箱”,其唯一可辨识的属性仅在于它与其他黑箱是相同还是不同。搜索与博弈(第3、4、6章)、 Markov模型(第14章)以及Markov决策过程(第16章)所采用的标准算法,均基于原子化表示。

    “因子化表示”(factored representation)将每个状态分解为一组固定的变量或属性,其中每个变量或属性都可以取特定的值。以同样的驾驶问题为例,若采用更高保真度的描述,我们关注的就不再仅仅是车辆位于某座城市的具体位置;我们可能还需要关注油箱里的油量、当前的 GPS 坐标、机油警示灯是否正常工作、用于支付通行费的资金状况、收音机当前播放的电台等信息。两个不同的“原子状态”之间没有任何共同点——它们仅仅是互不相关的“黑盒”;而两个不同的“因子化状态”则可能在某些属性上相同(例如处于同一 GPS 位置),而在另一些属性上不同(例如油量充足或油箱已空)。这种特性使得推导如何从一个状态转换到另一个状态变得容易得多。人工智能领域的许多重要分支都建立在因子化表示的基础之上,其中包括约束满足算法(第 5 章)、命题逻辑(第 7 章)、规划(第 11 章)、Bayes网络(第 12、13、14、15 和 18 章)以及各种机器学习算法。

    在许多应用场景中,我们需要将世界理解为由相互关联的事物构成的,而不仅仅是具有特定值的变量集合。例如,我们可能会注意到前方有一辆大型卡车正倒车进入一家奶牛场的车道,但一头走失的奶牛挡住了卡车的去路。像“前方卡车倒车进入奶牛场车道且被走失奶牛阻挡”这样的属性(其值为true或false),不太可能预先包含在“分解式表示”(factored representation)中。相反,我们需要一种“结构化表示”(structured representation),在这种表示中,可以明确描述奶牛、卡车等对象及其各种动态变化的关系(见图 2.16(c))。结构化表示是关系数据库、一阶逻辑(第 8、9、10 章)、一阶概率模型(第 18 章)以及自然语言理解(第 24、25 章)等领域的基础。事实上,人类用自然语言表达的内容,很大一部分正是关于对象及其相互关系的。

正如前文所述,原子式、因子式和结构化表示法构成了一个表达能力由弱到强的谱系。概括而言,表达能力更强的表示法不仅能涵盖表达能力较弱的表示法所能表达的一切内容(且往往更为简洁),还能表达更多信息。通常,表达能力更强的语言更为简洁;例如,若用一阶逻辑(一种结构化表示语言)来描述国际象棋规则,仅需一两页篇幅;若改用命题逻辑(一种因子式表示语言),则需数千页;而若使用有限状态自动机(一种原子式表示语言)来描述,则需约 10^{38}  

页。另一方面,随着表示法表达能力的增强,推理与学习的复杂性也会随之增加。为了既能利用高表达能力表示法的优势,又能规避其弊端,面向现实世界的智能系统或许需要在该谱系的不同层级上同时进行运作。

表征的另一个维度涉及概念与物理存储位置(无论是在计算机还是大脑中)之间的映射。如果概念与存储位置之间存在一一对应关系,我们称之为“局部表征”( localist representation )。反之,如果一个概念的表征分布在多个存储位置上,且每个存储位置都参与了多个不同概念的表征,则称之为“分布式表征”( distributed representation )。分布式表征在应对噪声和信息丢失时更具健壮民生。在局部表征中,概念到存储位置的映射是任意的;如果传输错误导致少量Bit (位)出错,我们可能会将“Truck”与毫无关联的“Truce”混淆。而在分布式表征中,可以将每个概念视为多维空间中的一个点;如果少量位出错,系统会移动到该空间中邻近的一个点,而该点所代表的含义与原概念相似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值