《人工智能:计算Agent基础》——2.3 分层控制

2.3 分层控制

在图2-1中讲述的一种构建Agent的方法是将主体分为两部分:传感器和一个复杂的感知系统,感知系统将对世界的描述输入给推理引擎来实现控制器,然后能够生成传给执行器的命令。但这 图2-4 一个理想的分层Agent系统结构。未标注的矩形表示层,双线表示信息流。虚线说明某一时刻的输出作为下一时刻的输入对智能系统而言是一个很差的结构,因为它太慢了,使得其很难缓解以下两个矛盾:复杂问题的缓慢推理和Agent所需的高级目标的快速反应,例如,躲避障碍。它也不清楚,在其可操纵范围之外存在一个独立的世界(见习题2.1)。

另一种可行结构是在图2-4中描述的控制器的分层。每一层都将其下层看做一个可从中获取感知及送出命令的虚拟主体。越低层,反应速度越快,用于那些需要快速反应的情况,且能将对环境更简单直白的感知传给高层,隐藏不重要的信息。
总的来说,不同时间的状态之间,会有大量的特征在层与层之间传递。
对于每个时刻的每一层存在如下三类输入:

  • 来自于信念状态的特征,指的这些特征所记住的或以前的值。
  • 从下层结构得到的感知的特征。
  • 从上层结构得到的命令的特征。
    对于每个时刻的每一层存在如下三类输出:
  • 对应上层的更高等级的感知。
  • 对应下层的低等级命令。
  • 信念状态特征的下一个值。

层级的实现方式决定了层的输出是如何由输入的函数得出。此函数的计算可以涉及任意计算,但目的是使每层尽可能简单。
为了实现控制器,层上的任何输入必须有确切的赋值来源。每个感知或者命令输入应该源自与其相连的其他层的输出。其他的输入来源于记住的信念。而层上的输出不必有相连对象,或者可与多个输入相连接。
高级推理在高层上给出,一般是离散的、定性的,而底层中给出的低级推理则是连续和定量的(见下面“定性与定量表示”的内容)。一个可推理产生离散和连续两种值的控制器被称为混合系统。51定性与定量表示很多的科学工程都会考虑使用微积分作为主要工具来进行数值量化的定量推理。而定性推理一般使用逻辑来在给定参数条件下进行性质上的区分而非数值上的推理。
定性推理很重要,原因如下:

  • 一个Agent可能无法获知确切的数值。例如,对于一个倒咖啡的传送机器人,它也许不能计算出倒咖啡时咖啡壶的最佳倾斜角度,但是一个简单的控制规则就足够给杯子加入合适高度的咖啡。
  • 无视数量的推理有时可能更为合适。例如,你也许希望机器人的策略是,只要能在其可正常操作的范围内,在工作时便可无视一些东西,如机器人负载是多少、地板有多滑或者电池的实际电量还有多少。
  • 一个Agent需要做定性推理来决定哪条定量规则更为合适。比如,如果传送机器人正在向咖啡杯中加咖啡,不同的定量规则适合于决定在以下情况下咖啡往哪里流:当咖啡壶的倾斜角度不够咖啡流出时,当咖啡加入至一个没满的杯子时,当咖啡杯满并流出时。
    定性推理采用离散值,其中有多种不同的形式:
  • 标志是用于在建模个体中进行定性区分的数值。在咖啡这个例子中,有很多重要的定性区分,包括咖啡杯是否为空、部分满、满了。这些标志值对用于预计如果杯子足够倾斜或者咖啡倒入杯中时会发生什么来说是必需的。
  • 数量级顺序推理是种无视轻微差别的近似推理。举个例子,一个部分满的咖啡杯可能已经满足传送要求,还有一半满和接近空。这些模糊定义并没有一个明确定义的边界。在杯中咖啡的实际量间和定性描述存在某些关系,但是其中并没有严格的数值因子。
  • 定性的导数可以表明是否一些数值在增加、减少或是不变。

一个灵活的Agent在其做定量推理之前需要做定性推理。有时只需要定性推理。因此Agent并不总是需要进行定量推理,但是有时定量和定性推理都需要。【例2-4】 我们认定一个传送机器人能在躲避障碍物的同时执行高级的导航任务。假定传送机器人需要在避开可能的障碍物的同时按照顺序访问图1-7中环境的一系列位置。
假设传送机器人有像轿车一样的轮子,且每个时刻可以选择直走、右拐或左拐。但不能停止运动。速度是恒定的,且唯一的指令是设定转向角度。轮子的转向是瞬时完成的,但是调整至一个确定角度需要时间。因此机器人只能向正前方运动或按照一个固定的半径绕圈。
机器人有一个位置传感器,可以给自己提供当前坐标和方向。还有唯一一个伸向正前稍偏右的触觉传感器,用于探测是否碰触到障碍。在下面的例子中,传感器指向前方偏右30度的方向。机器人不自带地图,

图2-5 传送机器人的分层分解且环境可以改变(如:障碍可以移动)。
对于此类传送机器人的分层控制器已在图2-5中给出。此机器人有个高级规划需要执行。这个规划是按顺序访问一系列地点。机器人需要感知环境,然后在环境中移动以便执行规划。底层的具体细节并未在图中给出。
最高层,被称为后续规划层,在例2-6中有描述。那一层获取一个用于执行的规划。此规划是所需访问地点的名字的顺序排列。地点会按照顺序选中,每次选中的地点都会转换成当前目标。此层将决定目标的x-y坐标位置。这些坐标是提供给底层的目标位置。高层知道位置的名字,而底层仅知道坐标。
高层中保留着相关的信念状态,包含一系列机器人仍需访问的地点的名称和当前目标的坐标。它以当前目标坐标的形式给中间层传达命令。
中间层,也可被称为前往目标并躲避障碍层,它试图在避开障碍的同时前往当前目标地点。中间层在例2-5中有描述。目标的位置,即target_pos可从上层获得。当中间层到达目标位置时,它会通过将arrived设为真来告诉顶层其已完成目标。中间层可给一直在等待的顶层发送中断通知来达成此目的,当然顶层也可能一直在监听中间层的运行情况来判定何时arrived状态为真。当arrived变为真时,顶层接着会将目标位置改为规划中下个位置的坐标点。因为顶层改变了当前目标位置,中间层必须使用前一个目标位置来决定其是否到达目标。因而,中间层必须从顶层获得当前和之前的目标坐标:之前的坐标位置用于决定其是否已经到达,而现在的目标坐标是用于决定将往何处去。
中间层可以获知机器人的当前坐标和方向,且能决定其触觉传感器是开启还是关闭。它使用一个非常简单的策略,即直行向目标直至被阻碍,此时其会选择左拐。
中间层是建立在底层之上的,底层会提供机器人的一些简单看法。底层可称为行进机器人和报告障碍及位置层。它执行转向命令并报告机器人的位置、方向及传感器的开关状态。
在层的内部是特征,而特征可以为其他特征值和该层输入的函数。每个特征有一个所依赖的特征或输入的一个弧形连接。特征的相互依赖图一定是非循环的。非循环图使得控制器可以通过运行一个顺序指定数值的程序而实现。而构成信念状态的特征可从内存中读取和写入。54
【例2-5】 前往目标并躲避障碍的中间层操纵机器人来躲避障碍物。此层的输入与输出在图2-6中给出。
 图2-6 传送机器人的中间层机器人有一个通过触摸来发现障碍物的触觉传感器。由下层提供的一个比特数值可以判定触觉传感器是否碰触到障碍。底层也提供机器人的当前位置和方向。机器人所有能做的事情只是向左或向右旋转一个角度,或者直行。而此层的目的是让机器人向当前目标位置运行,并躲开路上的障碍,到达时发出到达报告。
控制器的此层不包含内部信念状态,因此并不存在信念状态转换函数。而用于控制机器人转向的命令函数则是其输入和是否已到达的函数。
当机器人的当前位置接近于上一个目标位置时说明其已到达。因此arrived状态会被指定一个值,它是机器人当前位置、前一个目标位置与一个阈值常数共同决定的函数:
arrived ∶= distance(previous_target_pos,robot_pos)其中,∶=是指定,distance是欧几里得距离,threshold是一个合适的距离。
如果触觉传感器开则左转,否则朝向目标位置。这可以通过给steer指定合适的值来完成:

if whisker_sensor= on
  then steer∶= left
else if straight_ahead(robot_pos,robot_dir,current_target_pos)
  then steer∶= straight
else if left_of(robot_position,robot_dir,current_target_pos)
  then steer∶= left
else steer∶= right
end if

当机器人位于robot_pos,面朝方向robot_dir,且当前目标位置current_target_pos在机器人的前方位置,并满足一些阈值限制时(对于后面的例子,此阈值为正前方偏移11°),straight_ahead(robot_pos,robot_dir,current_target_pos)为真。函数left_of用于检测目标是否在机器人左侧。
 图2-7 传送机器人控制器的顶层此层是纯定量化的。它以数字量化推理而非使用离散值。
【例2-6】 最顶层,也叫后续规划层,会被给予一个规划,该规划为一个需要顺序访问的地点的名单。其中都是各种目标,这些目标都可被规划者开发出来,如在第8章中开发出的那些。当机器人到达前一目标时顶层也会被告知。它必须将当前目标坐标输出给中间层,并记住执行规划时其需要的。此层显示在图2-7中。
该层会保留内部信念状态。它会记住当前目标位置和其他需要去访问的位置。其中56to_do特征的数值是待定访问的地点的一个列表。而target_pos特征保留着当前目标的位置。
一旦机器人到达它的前一目标位置,下一个目标位置就会变成下一个需要访问地点的坐标。高层规划会以位置名字的形式给予机器人,因此必须将其转换成中间层可以使用的坐标形式。下面的编码说明了当机器人到达前一目标位置时目标位置和to_do列表如何改变。

if arrived and not empty(to_do)
  then
   target_pos′∶= coordinates(head(to_do))
   to_do′∶= tail(to_do)
end if

其中,to_do′是to_do特征的下一个值,target_pos′为下一个目标位置。在这里head(to_do)是to_do列表的第一个元素,tail(to_do)是余下的to_do列表,当to_do列表为空时,empty(to_do)为真。
在这层中,如果to_do列表变成空,机器人就不会改变其目标坐标,之后便会一直在原地绕圈。见习题2.3。
此层可确定已命名地点的坐标。通过一个简单的有位置坐标的数据库就可以实现。如果地点不会移动且事先知道,使用这样一个数据库是很明智的。然而,如果目标可以移动,那么下层必须能告诉上层目标当前位置。上层必须请求下层告知给定目标的坐标。见习题2.8。
为了完成控制器,还必须初始化信念状态变量,且高级规划必须输入。通过使用规划的尾部来初始化to_do列表和使用第一个位置的坐标来初始化target_pos,这就可以实现。
图2-8给出了有一个障碍的规划[goto(o109),goto(storage),goto(o103)]的仿真。机器人开始时位于位置(0,5)且面朝90度(北),而在位置(20,20)与(35,-5)之间有一个矩形障碍。
图2-8 执行例2-6中规划的机器人仿真
Agent对世界的建模
信念状态的定义非常一般,且没有限制哪些是Agent应该记住的。一般来说Agent保留一些世界的模型是很有用处的,尽管这些模型不完全、不精确。一个关于世界的模型是某一时刻世界状态和/或世界的动态的一种表示形式。
对于Agent来说,可以基于其命令来保持和更新世界的信念。这种方法需要世界的状态模型和世界的动态模型。给定某个时刻的状态和动态,57可以预测下个时刻的状态。这一过程也被称为推算。例如,机器人可以保留其对自己位置的估计并基于自己的动作来自我更新。若世界是动态的或者执行器有噪声(如半径不精确的轮子的滑动或者加速不连续),噪声会累积,因此估算的位置很快就会变得不准确以至于无用。然而如果模型在某些抽象层次上是准确的,则会成为该抽象层次上的合适模型。
另一种方法是使用感知来构建世界的相关部分的模型。感知就是用传感器信息来理解世界。举个例子,这可能会包括使用视觉来分辨世界的特征和使用这些特征来决定机器人、障碍物或者需要捡起的包袱的位置。感知一般都是模糊的和有噪声的。仅基于一张世界的图片很难建立一个三维世界模型。
一个更加有前景的方法是将Agent对世界状态的预测与感知信息结合起来。这可以采用多种形式:

  • 如果向前预测的噪声与感知的噪声都有建模,那下一个信念状态就可以使用贝叶斯规则来估算。这也被认为是过滤。
  • 如果使用更复杂的传感器,如视觉传感器,那就可以使用模型来预测何处可以发现视觉特征,接着便可用视觉来查找预测位置附近的这些特征。这会使得视觉任务变得更加简单,且相对于前面的仅依靠预测,使用视觉可以大幅减少位置误差。

如果可以采用如下方式得到最优动作,即通过首先发现最佳的世界模型,然后再使用此模型来决定最佳动作,那么控制器问题便是可分割的。不幸的是,大部分控制问题是不可分割的。这意味着Agent需要考虑多种模型来决定接下来做什么,且它可从世界获得什么信息58取决于其对该信息的不同处理。通常来讲,并不存在与Agent行为完全独立的世界最佳模型。

时间: 2024-09-22 22:59:36

《人工智能:计算Agent基础》——2.3 分层控制的相关文章

《人工智能:计算Agent基础》——第2章 体系结构和分层控制

第2章 体系结构和分层控制 所谓分层或分层系统,是指一个系统由多个相互关联的子系统组成,而每个子系统又可再次分层直至到达最底层基本子系统为止.自然界的大部分系统中,何时停止分层及什么是基本元素的随意性极大.物理学中会经常使用基本粒子的概念,但是粒子早已证实不是物质的最底层基本元素.我们从实验观察到自然中的大部分复杂系统都展示出分层结构.从理论上讲,我们希望世界上的复杂系统都具备分层结构,其复杂系统可从简单系统演变而来.--Herbert A.Simon[1996] 本章主要讨论智能Agent在实

《人工智能:计算Agent基础》——导读

前 言 本书是一本关于人工智能(AI)科学的图书.本书认为AI所要研究的是如何设计智能计算Agent(智能体).本书采用教科书的组织形式,适合广大读者阅读.过去几十年,我们见证了AI这门综合学科的兴起.正如其他学科一样,AI具有清晰.规范的理论和难操控的实验部分.本书平衡了理论和实验,并将两者密切地结合.俗话说"好的理论必须有其实用价值",因此我们将工程应用融入到AI的科学研究中.本书所述方法都秉承了格言"凡事都应尽量从简,但不可过简".我们认为科学必须有其坚实的基

《人工智能:计算Agent基础》——第二部分 表达和推理第3章 状态和搜索3.1 用搜索进行问题求解

第二部分 表达和推理 第3章 状态和搜索 你看到过海岸上的螃蟹在寻找大西洋的过程中一直向后爬行,最终消失吗?人们也是同样的思考方式.--H.L.Mencken (1880-1956) 前面一章讨论了Agent是如何理解和动作的,但是没有讲到它们的目标是如何影响动作的.一个Agent可以根据既定的目标集有规划的去动作,但是如果不能适应变化的目标,这样的Agent就是非智能的.或者,Agent能够根据自身能力和既定目标去推理,从而决定应该做什么.这一章介绍将Agent决定做什么的问题描述为在一个图中

《人工智能:计算Agent基础》——第一部分 世界中的Agent:什么是Agent及如何创建它们第1章人工智能与Agent1.1 什么是人工智能

第一部分 世界中的Agent:什么是Agent及如何创建它们 第1章人工智能与Agent 人工智能的历史充满幻想.可能.验证和希望.自从荷马描绘机器"鼎"服侍在众神的餐桌旁,那想象中的机器佣人便成为我们文化的一部分.然而,我们人工智能的研究者,直到50年前,才首次制造出实验性机器来验证那些假想,即有关具备思维和智能行为机器人的假想,使得之前仅在理论上具备可能性的机器人得到验证.--Bruce Buchanan [2005] 历经几个世纪的思想构建,人工智能学科被公认为有超过50年的历史

《人工智能:计算Agent基础》——2.7 参考文献及进一步阅读

2.7 参考文献及进一步阅读 Agent系统的模型是基于Zhang.Mackworth[1995]的关于约束网络的工作和Rosenschein.Kaelbling[1995]的工作,分层控制则是基于Albus[1981]的工作和Brooks[1986]等人的关于包含结构的工作.Abelson.DiSessa[1981]的Turtle Geometry从建模简单反应式Agent角度介绍了相关数学理论.Luenberger[1979]则是一篇值得一读的关于Agent与环境交互的经典理论的简介.Sim

《人工智能:计算Agent基础》——2.5 通过推理来行动

2.5 通过推理来行动 之前的部分假定Agent有着很多在各个时段保留下来的信念状态.对于一个智能Agent,信念状态可以非常复杂,甚至可用占用单独一层. 学习和构建智能Agent的经验表明智能Agent需要某些信念状态的内部表示方法.知识指的是领域内的信息,可用于解决该领域内的问题.知识指的是用于特定情境.领域的一般性知识.因此关于特定状态更常使用知识而非信念.基于知识的系统是可以使用领域内知识来动作或者解决问题的系统. 哲学家们将知识定义为正确的.经过证实的信念.人工智能研究者们则更倾向于融

《人工智能:计算Agent基础》——1.4 知识表示

1.4 知识表示 一般情况下,要解决的问题或要完成的任务,包括解的构成,是通过非形式化的方式给出的,例如"他们到达时,请立即递交包裹"或"请修理家中存在故障的电力系统". 计算机解决问题的一般框架在图1-4中给出.为了解决问题,系统设计者必须: 具体化任务,并制定解决方案. 用特定的语言表达问题,以便计算机进行推理.11 用计算机计算出相应结果进行输出,可以给用户呈现一个答案或是在环境中需要执行的一系列行为. 解释作为问题的解决方案的输出结果. 知识是可以用来解决本

《人工智能:计算Agent基础》——1.2 人工智能简史

1.2 人工智能简史 纵观人类历史,人们曾一直用技术为人类自身建立模型,例如古代的中国.古埃及和古希腊都可以证明,每一种新技术都不断地用来建造Agent或其他意识模型.发条装置.水力学.电话转换系统.全息图.模拟计算机以及数字计算机等都被提出作为智能装置和意识模型的技术原理.大约400年前,人们开始解释思维与推理的本质.Hobbes(1588-1679)被Haugeland6[1985,P.85]称为人工智能的始祖,认为思考是符号推理,例如大声说话或用纸笔计算出某个答案.Descartes(15

《人工智能:计算Agent基础》——1.5 复杂性维度

1.5 复杂性维度 从自动调温器到在竞争性环境中有多种目标的企业,Agent在环境中行为的复杂性各不相同.Agent的设计存在多个维度的复杂性.这些维度可以分开来考虑,但建造智能Agent时必须组合起来.这些维度定义了人工智能的一个设计空间,空间里的不同点可以通过改变维度值来得到.这里我们介绍9个维度:模块性.表示方案.规划期.感知不确定性.效用不确定性.偏好.Agent数量.学习和计算限制.这些维度对智能系统的设计空间做了粗糙的划分.有时为了建立智能系统必须做出很多其他的选择.1.5.1 模块