购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 智能体的结构

到目前为止,我们通过描述 行为 (即在任意给定的感知序列之后执行的动作)讨论了智能体。现在我们必须迎难而上来讨论智能体内部是如何工作的。人工智能的工作是设计一个 智能体程序 (agent program)实现智能体函数,即从感知到动作的映射。假设该程序将运行在某种具有物理传感器和执行器的计算设备上,我们称之为 智能体架构 (agent architecture):

智能体 = 架构 + 程序

显然,我们选择的程序必须是适合相应架构的程序。如果程序打算推荐 步行 这样的动作,那么对应的架构最好有腿。架构可能只是一台普通PC,也可能是一辆带有多台车载计算机、摄像头和其他传感器的机器人汽车。通常,架构使程序可以使用来自传感器的感知,然后运行程序,并将程序生成的动作选择反馈给执行器。尽管本书第25章和第26章涉及传感器和执行器,但其余大部分内容都是关于设计智能体程序的。

2.4.1 智能体程序

我们在本书中设计的智能体程序都有相同的框架:它们将当前感知作为传感器的输入,并将动作返回给执行器。 注意智能体程序(将当前感知作为输入)和智能体函数(可能依赖整个感知历史)之间的差异。因为环境中没有其他可用信息,所以智能体程序别无选择,只能将当前感知作为输入。如果智能体的动作需要依赖于整个感知序列,那么智能体必须记住历史感知。

我们用附录B中定义的简单伪代码语言描述智能体程序。(在线代码库包含真实编程语言的实现。)图2-7显示了一个相当简单的智能体程序,它记录感知序列,然后使用它来索引动作表,以决定要执行的动作。动作表(如图2-3中给出的真空吸尘器世界示例)明确表示了智能体程序所体现的智能体函数。作为设计者,为了以这种方式构建理性智能体,我们必须构造一个表,该表包含每个可能的感知序列所对应的适当动作。

图2-7 每个新感知都会调用T able -D riven -A gent 程序,并且每次返回一个动作。它在内存中保留了完整的感知序列

表驱动的智能体构建方法注定失败,深入思考这一问题会很有启发性。设 为可能的感知集, T 为智能体的生存期(对应它将接收的感知总数),查找表将包含 条记录。考虑自动驾驶出租车:来自单个摄像头(通常是8个摄像头)的视觉输入速度约为70 MB/s(每秒30帧,每帧1080 像素× 720像素,每个像素包含24位颜色信息),驾驶1小时后,将会生成一张超过10 600 000 000 000 条记录的表。即使是作为真实世界中微小的、表现良好的片段的国际象棋,其查找表也至少有10 150 条记录。相比之下,可观测宇宙中的原子数量少于10 80 个。这些表的巨大规模意味着:(a)这个宇宙中没有任何物理智能体有空间存储表;(b)设计者没有时间创建表;(c)任何智能体都无法从其经验中学习所有正确的记录。

尽管如此,假设表填充正确,T able -D riven -A gent 确实做了我们想要做的事情:它实现了所需的智能体函数。

人工智能面临的关键挑战是找出编写程序的方法,尽可能从一个小程序而不是从一个大表中产生理性行为。

历史上有许多例子表明,在其他领域可以成功地做到这一点:例如, 20世纪70年代以前,工程师和学生使用的巨大平方根表格,现在已经被电子计算器上运行的仅有5行代码的牛顿方法所取代。现在问题是,人工智能能像牛顿处理平方根那样处理一般智能行为吗?我们相信答案是肯定的。

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

简单反射型智能体;

基于模型的反射型智能体;

基于目标的智能体;

基于效用的智能体。

每种智能体程序以特定的方式组合特定的组件来产生动作。2.4.6节大致解释了如何将所有这些智能体转换为学习型智能体,以提高其组件的性能,从而产生更好的动作。2.4.7节描述在智能体中表示组件本身的各种方式。这种多样性为这一领域和这本书本身提供了一个主要的组织原则。

2.4.2 简单反射型智能体

最简单的智能体是 简单反射型智能体 (simple reflex agent)。这些智能体根据当前感知选择动作,忽略感知历史的其余部分。例如,真空吸尘器的智能体函数在图2-3所示,是一种简单反射型智能体,因为它的决策仅基于当前位置以及该位置是否有灰尘。该智能体的智能体程序如图2-8所示。

图2-8 在只有两个位置的真空吸尘器环境中,简单反射型智能体的智能体程序,该程序实现图2-3中列出的智能体函数

注意,与之前对应的表相比,真空吸尘器的程序确实非常轻量。最明显的简化来自忽略感知历史,这将相关感知序列的数量从4 T 减少到4。进一步的简化基于以下事实:动作不依赖于位置,只依赖于当前方格是否有灰尘。虽然我们已经使用if-then-else语句来编写智能体程序,但它非常简单,可以将其实现为布尔电路。

即使在更复杂的环境中,也会出现简单的反射行为。想象自己是自动驾驶出租车司机。如果前面的汽车刹车并且刹车灯亮起,那么你应该注意到这一点并开始刹车。换句话说,你通过对视觉输入进行一些处理来建立我们称之为“前面的汽车正在刹车”的条件。然后,这会触发智能体程序中的既定联结,对应动作“启动刹车”。我们称这样的联结为 条件-动作规则 (condition-action rule) [1] ,写作:

如果 前面的车正在刹车, 启动刹车。

人类也有许多这样的联结,其中一些是习得反应(如驾驶),而另一些则是先天反射(如在有东西接近眼睛时眨眼)。在本书中,我们展示了学习和实现这种联结的几种不同方式。

图2-8所示的程序限定于一个特定的真空吸尘器环境。一种更通用、更灵活的方法是,首先为条件操作规则构建通用解释器,然后为特定任务环境创建规则集。图2-9给出了通用程序的结构示意图,展示条件-动作规则如何在智能体中建立从感知到动作的联结。如果这看起来普通,不要担心,很快就会变得更加有趣。

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

图2-9中智能体对应的智能体程序如图2-10所示。I nterpret -I nput 函数根据 percept 生成当前状态的抽象描述。给定状态描述,R ule -M atch 函数返回规则集中匹配的第一条规则。注意,关于“规则”和“匹配”的描述纯粹是概念性的。如上所述,实际实现可以像实现布尔电路的逻辑门集合一样简单。或者,也可以使用“神经”电路,其中逻辑门由人工神经网络中的非线性单元代替(见第21章)。

图2-10 简单反射型智能体。它根据一条规则进行操作,该规则的条件与感知定义的当前状态相匹配

简单反射型智能体具有值得赞扬的简单特性,但它们的智能有限。图2-10中的智能体 只有在当 前感知的基础上才能做出正确的决策,也就是说,只有在环境完全可观测的情况下才 可行

即使是轻微的不可观测性也会造成严重的问题。例如,前面给出的刹车规则假设前车正在刹车的条件可以通过当前的感知(视频的单帧)确定。如果前车有一个安装在中间的(因此是唯一可识别的)刹车灯,这是可行的。但是,旧款车型的尾灯、刹车灯和转向灯的配置各不相同,而且从单幅图像中分辨出汽车是在刹车还是仅仅打开了尾灯不是总能做到的。一个简单反射型智能体在这样一辆车后面行驶,要么会连续不必要地刹车,或者更糟的是根本就不刹车。

我们在真空吸尘器世界中也可以看到类似的问题。假设一个简单的真空吸尘器反射型智能体没有位置传感器,只有一个灰尘传感器。这样的智能体只有两种可能的感知:[ Dirty ]和[ Clean ]。它可以用吸尘( Suck )来响应[ Dirty ],它该如何响应[ Clean ]呢?如果碰巧从方格A开始,向左( Left )移动会(永远)失败,如果从方格B开始,向右( Right )移动会(永远)失败。对在部分可观测环境中工作的简单反射型智能体而言,无限循环通常是不可避免的。

如果智能体可以 随机化 (randomize)其操作,则可以跳出无限循环。例如,如果真空吸尘器智能体感知到[ Clean ],它可能会通过抛硬币来选择左右。我们很容易就能证明智能体将平均通过两步到达另一个方格。如果方格是脏的,智能体将清理它,任务就会完成。因此,随机化的简单反射型智能体可能优于确定性的简单反射型智能体。

我们在2.3节中提到,在某些多智能体环境中,正确的随机行为是理性的。在单智能体环境中,随机化通常是不理性的。在某些情况下,这是一个有用的技巧,可以帮助简单反射型智能体,但在大多数情况下,我们可以使用更复杂的确定性智能体以做得更好。

2.4.3 基于模型的反射型智能体

处理部分可观测性的最有效方法是让智能体追踪它现在观测不到的部分世界。也就是说,智能体应该维护某种依赖于感知历史的 内部状态 (internal state),从而至少反映当前状态的一些未观测到的方面。对于刹车问题,内部状态范围不仅限于摄像头拍摄图像的前一帧,要让智能体能够检测车辆边缘的两个红灯何时同时亮起或熄灭。对于其他驾驶任务,如变道,如果智能体无法同时看到其他车辆,则需要追踪它们的位置。为了在任何时候都能驾驶,智能体需要追踪其钥匙的位置。

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

其次,我们需要一些关于世界状态如何反映在智能体感知中的信息。例如,当前面的汽车开始刹车时,前向摄像头的图像中会出现一个或多个亮起的红色区域;当摄像头被淋湿时,图像中会出现水滴状物体并部分遮挡道路。这种知识称为 传感器模型 (sensor model)。

转移模型和传感器模型结合在一起让智能体能够在传感器受限的情况下尽可能地跟踪世界的状态。使用此类模型的智能体称为 基于模型的智能体 (model-based agent)。

图2-11给出了基于模型的反射型智能体的结构,它具有内部状态,展示了当前感知如何与旧的内部状态相结合,并基于世界如何运转的模型生成当前状态的更新描述。智能体程序如图2-12所示。有趣的部分是函数U pdate -S tate ,它负责创建新的内部状态描述。模型和状态的表示方式的细节因环境类型和智能体设计中使用的特定技术而异。

无论使用哪种表示,智能体几乎不可能准确地确定部分可观测环境的当前状态。相反,标有“现在的世界是什么样子”(图2-11)的框表示智能体的“最佳猜测”(或者在具有多种可能性的情况下的最佳猜测)。例如,一辆自动驾驶出租车可能无法看到停在它前面的大卡车周围的情况,只能猜测是什么导致了拥堵。因此,关于当前状态的不确定性可能是不可避免的,但智能体仍然需要做出决定。

图2-11 基于模型的智能体

图2-12 基于模型的反射型智能体。它使用内部模型追踪世界的当前状态,然后以与反射型智能体相同的方式选择动作

2.4.4 基于目标的智能体

了解环境的现状并不总是足以决定做什么。例如,在一个路口,出租车可以左转、右转或直行。正确的决定取决于出租车要去哪里。换句话说,除了当前状态的描述之外,智能体还需要某种描述理想情况的 目标 信息,例如设定特定的目的地。智能体程序可以将其与模型(与基于模型的反射型智能体中使用的信息相同)相结合,并选择实现目标的动作。图2-13展示了基于目标的智能体结构。

有时,基于目标的动作选择很直接,例如,单个动作能够立刻实现目标的情况。有时会更棘手,例如,智能体为了找到实现目标的方法而不得不考虑很长的复杂序列。 搜索 (第3~5章)和 规划 (第11章)是人工智能的子领域,专门用于寻找实现智能体目标的动作序列。

注意,这类决策从根本上不同于前面描述的条件-动作规则,因为它涉及对未来的考虑,包括“如果我这样做会发生什么?”和“这会让我快乐吗?”在反射型智能体设计中,这种信息并没有被明确地表示出来,因为内置规则直接从感知映射到动作。反射型智能体在看到刹车灯时刹车,但它不知道为什么。基于目标的智能体在看到刹车灯时会刹车,因为这是它预测的唯一动作,这个动作可以实现不撞到其他汽车的目标。

图2-13 基于模型、基于目标的智能体。它追踪世界状态以及它试图实现的一系列目标,并选择一项最终能够实现目标的动作

尽管基于目标的智能体看起来效率较低,但它更灵活,因为支持其决策的知识是显式表示的,并且可以修改。例如,只要将目的地指定为目标,就可以很容易地更改基于目标的智能体的行为,以到达不同的目的地。反射型智能体关于何时转弯和何时直行的规则只适用于单一目的地,这些规则必须全部更换才能去新的目的地。

2.4.5 基于效用的智能体

在大多数环境中,仅靠目标并不足以产生高质量的行为。例如,许多动作序列都能使出租车到达目的地(从而实现目标),但有些动作序列比其他动作序列更快、更安全、更可靠或更便宜。目标只是在“快乐”和“不快乐”状态之间提供了一个粗略的二元区别。更一般的性能度量应该允许根据不同世界状态的“快乐”程度对智能体进行比较。经济学家和计算机科学家通常用 效用 (utility)这个词来代替“快乐”,因为“快乐”听起来不是很科学。

我们已经看到,性能度量会给任何给定的环境状态序列打分,因此它可以很容易地区分到达出租车目的地所采取的更可取和更不可取的方式。智能体的 效用函数 (utility function)本质上是性能度量的内部化。如果内部效用函数和外部性能度量一致,那么根据外部性能度量选择动作,以使其效用最大化的智能体是理性的。

再次强调,这不是理性的唯一实现方式,我们已经看到了一个适用于真空吸尘器世界的理性智能体程序(图2-8),但并不知道它的效用函数是什么。与基于目标的智能体一样,基于效用的智能体在灵活性和学习方面有很多优势。此外,在两种情况下,仅靠目标是不充分的,但基于效用的智能体仍然可以做出理性的决策。首先,当存在相互冲突的目标时,只能实现其中的一部分(例如速度和安全),效用函数会进行适当的权衡。其次,当智能体有多个目标实现,但没有一个目标可以确定地实现时,效用提供了一种方法,可以权衡目标的重要性和成功的可能性。

部分可观测性和非确定性在真实世界中普遍存在,因此,不确定性下的决策也普遍存在。从技术上讲,基于效用的理性智能体会选择能够最大化其动作结果 期望效用 (expected utility)的动作,也就是在给定每个结果的概率和效用的情况下,智能体期望得到的平均效用(附录A更精确地定义了期望)。在第16章中,我们证明,任何理性智能体的行为都必须表现得好像拥有一个效用函数,并试图最大化其期望值。具有显式效用函数的智能体可以使用通用算法做出理性决策,该算法不依赖于特定效用函数的最大化。通过这种方式,理性的“全局”定义(将那些具有最高性能的智能体函数指定为理性)变成了对理性智能体设计的“局部”约束,并可以通过一个简单的程序来表示。

基于效用的智能体结构如图2-14所示。基于效用的智能体程序见第16章和第17章,其中设计了决策型智能体,必须处理非确定性或部分可观测环境中固有的不确定性。如第18章所述,多智能体环境中的决策也在效用理论的框架下进行了研究。

图2-14 基于模型、基于效用的智能体。它使用了一个世界模型以及一个效用函数来衡量它在各状态之间的偏好,然后选择产生最佳期望效用的动作,其中期望效用是通过对所有可能的结果状态和对应概率加权所得

说到这里,读者可能会想,“这么简单吗?只需要构建能够最大化期望效用的智能体,我们就完成了?”这类智能体确实是智能的,但这并不简单。基于效用的智能体必须对其环境进行建模和跟踪,这些任务涉及大量关于感知、表示、推理和学习的研究。这些研究结果填满了本书的许多章节。选择效用最大化的行动方案也是一项艰巨的任务,需要更多的章节描述精巧的算法。即使使用这些算法,由于计算复杂性,完美理性在实践中通常是无法实现的(正如我们在第1章中所指出的)。我们还应该注意到,并非所有基于效用的智能体都是基于模型的。我们将在第22章和第26章中看到, 无模型的智能体 (model-free agent)可以学习在特定情况下什么样的动作是最好的,而不必确切地了解该动作如何改变环境。

最后,所有这些都假设设计者能够正确地指定效用函数,第17章、第18章和第22章将更深入讨论未知效用函数的问题。

2.4.6 学习型智能体

我们已经描述了一些智能体程序和选择动作的方法。到目前为止,我们还没有解释智能体程序是如何产生的。在图灵(Turing,1950)早期的著名论文中,他考虑手动编程实现智能机器的想法。他估计了这可能需要多少工作量,并得出结论,“似乎需要一些更快捷的方法”。他提出的方法是构造学习型机器,然后教它们。在人工智能的许多领域,这是目前创建最先进系统的首选方法。任何类型的智能体(基于模型、基于目标、基于效用等)都可以构建(或不构建)成学习型智能体。

正如我们之前提到的,学习还有另一个优势:它让智能体能够在最初未知的环境中运作,并变得比其最初的知识可能允许的能力更强。在本节中,我们简要介绍学习型智能体的主要思想。在整本书中,我们对特定类型智能体中的学习因素和方法的评论贯穿全书。第19~22章将更加深入地介绍学习算法本身。

学习型智能体可分为4个概念组件,如图2-15所示。最重要的区别在于负责提升的 学习元素 (learning element)和负责选择外部行动的 性能元素 (performance element)。性能元素是我们之前认为的整个智能体:它接受感知并决定动作。学习元素使用来自 评估者 (critic)对智能体表现的反馈,并以此确定应该如何修改性能元素以在未来做得更好。

图2-15 通用学习型智能体。“性能元素”框表示我们之前认为的整个智能体程序,现在“学习元素”框可以修改该程序以提升其性能

学习元素的设计在很大程度上取决于性能元素的设计。当设计者试图设计一个学习某种能力的智能体时,第一个问题不是“我要如何让它学习这个?”而是“一旦智能体学会了如何做,它将使用什么样的性能元素?”给定性能元素的设计,可以构造学习机制来改进智能体的每个部分。

评估者告诉学习元素:智能体在固定性能标准方面的表现如何。评估者是必要的,因为感知本身并不会指示智能体是否成功。例如,国际象棋程序可能会收到一个感知,提示它已将死对手,但它需要一个性能标准来知道这是一件好事;感知本身并没有这么说。确定性能标准很重要。从概念上讲,应该把它看作完全在智能体之外,因为智能体不能修改性能标准以适应自己的行为。

学习型智能体的最后一个组件是 问题生成器 (problem generator)。它负责建议动作,这些动作将获得全新和信息丰富的经验。如果性能元素完全根据自己的方式,它会继续选择已知最好的动作。但如果智能体愿意进行一些探索,并在短期内做一些可能不太理想的动作,那么从长远来看,它可能会发现更好的动作。问题生成器的工作是建议这些探索性行动。这就是科学家在进行实验时所做的。伽利略并不认为从比萨斜塔顶端扔石头本身有价值。他并不是想要打碎石头或改造不幸行人的大脑。他的目的是通过确定更好的物体运动理论来改造自己的大脑。

学习元素可以对智能体图(图2-9、图2-11、图2-13和图2-14)中显示的任何“知识”组件进行更改。最简单的情况是直接从感知序列学习。观察成对相继的环境状态可以让智能体了解“我的动作做了什么”以及“世界如何演变”以响应其动作。例如,如果自动驾驶出租车在湿滑路面上行驶时进行一定程度的刹车,那么它很快就会发现实际减速多少,以及它是否滑出路面。问题生成器可能会识别出模型中需要改进的某些部分,并建议进行实验,例如在不同条件下的不同路面上尝试刹车。

无论外部性能标准如何,改进基于模型的智能体的组件,使其更好地符合现实几乎总是一个好主意。(从计算的角度来看,在某些情况下简单但稍微不准确的模型比完美但极其复杂的模型更好。)当智能体试图学习反射组件或效用函数时,需要外部标准的信息。

例如,假设出租车司机因为乘客在旅途中感到非常不适,没有收到小费。外部性能标准必须告知智能体,小费的损失对其整体性能有负面影响;然后,该智能体可能会了解到暴力操作有损其自身的效用。从某种意义上说,性能标准将传入感知的一部分区分为 奖励 reward )或 惩罚 penalty ),以提供对智能体行为质量的直接反馈。动物的疼痛和饥饿等固有的性能标准可以通过这种方式理解。

更一般地说,人类的选择可以提供有关人类偏好的信息。例如,假设出租车不知道人们通常不喜欢噪声,于是决定不停地按喇叭以确保行人知道它即将到来。随之而来的人类行为,如盖住耳朵、说脏话甚至可能剪断喇叭上的电线,将为智能体提供更新其效用函数的证据。这个问题将在第22章进一步讨论。

总之,智能体有各种各样的组件,这些组件可以在智能体程序中以多种方式表示,因此学习方法之间似乎存在很大差异。然而,主题仍然是统一的:智能体中的学习可以概括为对智能体的各个组件进行修改的过程,使各组件与可用的反馈信息更接近,从而提升智能体的整体性能。

2.4.7 智能体程序的组件如何工作

我们已经将智能体程序(用非常高级的术语)描述为由各种组件组成,其功能是回答诸如“现在的世界是什么样的?”“我现在应该采取什么动作?”“我的动作将导致什么?”等问题。人工智能学生的下一个问题是,“这些组件究竟是如何工作的?”要正确回答这个问题大约需要一千页的篇幅,但在这里我们希望读者能够注意一些基本区别,即组件表示智能体所处环境的各种方式之间的区别。

粗略地说,我们可以通过一个复杂性和表达能力不断增加的横轴来描述表示,即原子表示、因子化表示和结构化表示。为了辅助说明这些观点,我们可以考虑特定的智能体组件,例如处理“我的动作会导致什么”。这个组件描述了作为采取动作的结果可能在环境中引起的变化,图2-16展示了如何表示这些转移的示意图。

原子表示 (atomic representation)中,世界的每一个状态都是不可分割的,它没有内部结构。考虑这样一个任务:通过城市序列找到一条从某个国家的一端到另一端的行车路线(我们在图3-1中会解决这个问题)。为了解决这个问题,将世界状态简化为所处城市的名称就足够了,这就是单一的知识原子,也是一个“黑盒”,它唯一可分辨的属性是与另一个黑盒相同或不同。搜索和博弈中的标准算法(第3~5章)、隐马尔可夫模型(第14章)以及马尔可夫决策过程(第17章)都基于原子表示。

因子化表示 (factored representation)将每个状态拆分为一组固定的 变量 属性 ,每个变量或属性都可以有一个 。考虑同一驾驶问题更真实的描述,即我们需要关注的不仅仅是一个城市或另一个城市的原子位置,可能还需要关注油箱中的汽油量、当前的GPS坐标、油量警示灯是否工作、通行费、收音机上的电台等。两个不同的原子状态没有任何共同点(只是不同的黑盒),但两个不同的因子化状态可以共享某些属性(如位于某个特定的GPS位置),而其他属性不同(如有大量汽油或没有汽油),这使得研究如何将一种状态转换为另一种状态变得更加容易。人工智能的许多重要领域都基于因子化表示,包括约束满足算法(第6章)、命题逻辑(第7章)、规划(第11章)、贝叶斯网络(第12~16章)以及各种机器学习算法。

图2-16 表示状态及其之间转移的3种方法:(a)原子表示一个状态(如B或C)是没有内部结构的黑盒;(b)因子化表示状态由属性值向量组成,值可以是布尔值、实值或一组固定符号中的一个;(c)结构化表示状态包括对象,每个对象可能有自己的属性以及与其他对象的关系

出于许多目的,我们需要将世界理解为存在着相互 关联 的事物,而不仅仅是具有值的变量。例如,我们可能会注意到前面有一辆卡车正在倒车进入一个奶牛场的车道,但一头散养的奶牛挡住了卡车的路。因子化表示不太可能为属性 Truck Ahead Backing Into DairyFarm Driveway Blocked ByLoose Cow 预先配备true或false的值。这就需要一个 结构化表示 (structured representation),在这种表示中可以明确地描述诸如奶牛和卡车之类的对象及其各种不同的关系(见图2-16c)。结构化表示是关系数据库和一阶逻辑(第8~10章)、一阶概率模型(第15章)和大部分自然语言理解(第23章和第24章)的基础。事实上,人类用自然语言表达的大部分内容都与对象及其关系有关。

如前所述,原子表示、因子化表示和结构化表示所在的轴是 表达性 (expressiveness)增强的轴。粗略地说,可以通过简洁的描述捕捉到更具表达性的表示,表达性差的表示也可以捕捉到一切,但需要更多描述。通常,表达性更强的语言更简洁;例如,国际象棋规则可以用一两页结构化表示语言(如一阶逻辑)来描述,但需要数千页因子化表示语言(如命题逻辑)来描述,而需要10 38 页的原子语言(如有限状态自动机)来描述。但是,随着表示能力的增强,推理和学习变得更加复杂。为了在避免缺点的同时获得表达性表示的好处,真实世界中的智能系统可能需要轴上的所有点同时运行。

另一个表示轴涉及从概念到物理记忆中位置的映射,包括计算机的内存和大脑的记忆。如果概念和记忆位置之间存在一对一的映射,我们称之为 局部表示 (localist representation)。但是,如果一个概念的表示分布在多个记忆位置,并且每个记忆位置被用作多个不同概念表示的一部分,我们称之为 分布式表示 (distributed representation)。分布式表示对噪声和信息丢失更健壮。使用局部表示,从概念到记忆位置的映射是随机的,如果传输错误而导致几位乱码,我们可能会将卡车(Truck)与无关的概念停战(Truce)混淆。但在分布式表示中,可以把每个概念想象成多维空间中的一个点,即使有一些乱码,也会移动到该空间中附近的点,其具有相似的含义。

[1] 也称为 情境-动作规则 产生式系统 或 if-then规则。 Erg4YzVk0dQYfvhPqYkpfbEYJgINe+0NCTxZQQfXqy+2yzFnPsMi0sCr591n19NV

点击中间区域
呼出菜单
上一章
目录
下一章
×