第一部分响应机器•当你思考这一领域的问题时,会不自觉地不知所措。思考中的你正处于实际生活中的某一周里,那正是阳光明媚的时候。一旦深入这一游戏,你会恍然大悟:你只需对你所看到的作出响应。第2章刺激响应agent•感知和动作感知动作布尔代数布尔代数的类别和形式•动作函数的表达和执行产生式系统网络包含体系结构2.1感知和动作•本章介绍不具有内部状态而仅对其所处环境的即刻刺激有所反应的机器。我们称之为刺激响应(stimulus-response)agent。•用一个图例来开始我们的讨论。先来看这样一个在二维网格空间世界里的机器人,如图2-1所示。这一机器人的世界有完整的边界线,可能还包括如图所示的其他庞大的固定物体,这一世界里没有“稠密空间(tightspace)”(即物体与边界线之间的距离只有一个单元格)。•要求机器人完成以下动作:走到与一边界或物体比邻的单元格中,然后沿着它的边界一直走下去。要能够完成这一沿边界运动的行为,机器人必须能够感知一个单元格是否空缺而可以向其移动,并且能够做一些基本的动作。一个在二维网格空间中的机器人s1s2s3s4s5s6s7s8机器人感知它周围的8个单元是否空缺边界固定物体由此出发的机器人逆时针方向沿物体的外界运动由此出发的机器人顺时针方向沿外边界的内边运动2.1感知和动作•该机器人能够感知出它周围八个单元格是否空缺。这些传感器输入用二进制变量表示。当相应的单元格能被机器人占据时,它们的变量值为0,反之为1。•该机器人能够向与它同行或同列的毗邻的(空缺)单元格移动,共有如下四种动作:north:机器人在网格中向上移动一个单元east:机器人在网格中向右移动一个单元south:机器人在网格中向下移动一个单元west:机器人在网格中向左移动一个单元所有这些动作均有其效果,除非该机器人企图向非空缺的单元格移动;如果这样,则此动作无效2.1感知和动作•给定了机器人适应的某种世界的特性、机器人完成的任务(沿边界运动)和机器人传感器和电机的功能,设计者的动作就是说明为此任务选择适当动作的传感器输入(s1,…,s8)的功能。•通常我们把从传感器信号中计算动作的过程分为两个分开的阶段。知觉处理阶段产生一个特征向量X(x1,…,xi…,xn)。动作计算阶段选择一个以特征向量为基础的动作:各特征值既可以是真正的数字(numericfeature),也可以是范畴(categoricalfeature)。范畴特征的值是名字或特性,譬如:特征值“颜色”可能是“红”、“蓝”或“绿”。二进制特征这一特殊例子既可视作数字(0,1),也可视作范畴(真,假)。设计者选择特征来将其与机器人的环境特性相联系,而此环境特性又与此特征描述的状态中机器应做的动作密切相关。传感器输入知觉处理动作动作函数01111特征向量与墙毗邻在一角落图2-2知觉和动作部分设计者的意图2.1感知和动作•知觉与动作的分界是完全任意的。可以把整个过程要么看作知觉(世界被感知,处于一个应该采取动作“北”的状态),也可看作动作(根据原始传感器的数据而计算得出,应该采取动作“北”)。通常,分界可使得在完成各项预期任务时重复使用相同的特征。这样,不同的任务可拥有相同的特征向量和不同的动作函数。•完成分界工作后,还有两个问题要解决:一是把传感器的数据转换成特征向量;另一个是确定动作函数。2.1.1感知•沿边界运动的机器人的传感器输入包括,共有256种组合方式。但在我们的环境中,由于稠密空间的限制,一些组合方式已被排除在外。对当前的任务,刚好有四个对计算适当动作有用的传感器的二进制特征值,分别用x1、x2、x3和x4来表示。其定义如图所示。•本例中知觉处理过程的计算相对比较简单,而为更复杂的传感器和任务的机器人设计这一过程,将极富挑战性。而且在许多实际任务中,知觉处理过程偶尔会发出有关机器人所处环境的错误、模糊或不完全的信息。尽管这样的错误会导致不恰当的动作,但只要不经常发生,这些依任务和环境而定的动作并不会造成太大的损失。在每个图中,当且仅当至少一个阴影单元为非空时,所示的特征值为1x1x3x2x42.1.2动作•有这四个特征,必须确定它们的函数以便选择适当的沿边界的动作。如果特征值都不是1(即机器人感知到它周围的单元格全部空缺),则它可向任一个方向移动直至遇到边界。我们先让它向北移动。若至少一个特征值为1,沿边界的行动则按以下规则完成:若x1=1且x2=0,则向东移;若x2=1且x3=0,则向南移;若x3=1且x4=0,则向西移;若x4=1且x1=0,则向北移;•这些机器人可做出不同动作的条件恰好是特征值的布尔组合,这些特征值本身也是传感器输入的布尔组合2.1.3布尔代数•布尔函数f(x1,x2,…xn)表示n元组(每个值为(0,1))与集合{0,1}之间的对应关系,布尔代数是说明布尔函数的一种便捷的表达方法。布尔代数用“.”、“+”、“-”三个连接符号。•由单个变量组成的布尔函数,称为原子(atom)。由单个变量或其补组成的布尔函数,称为文字(literal)。•布尔代数遵守DeMorgan定律21212121ffffffff2.1.4布尔函数的类别和形式•布尔函数有多种形式,其中重要的形式为:λ1λ2…λn,这里λi为文字,这样书写的函数称为“文字合取式(conjunction)”或“单项式(monomial)”。这一合取式本身称为一个项式。项式的大小即为其所含文字的总数。x1x7为项式。项式的大小为所含文字的总数,如其项式的大小为2。•可以证明n个变量可组成3n种可能的项式。•一个子句是形如:λ1+λ2+…λn,这里λi为文字,这样书写的函数称为“文字析取式(disjunction)”。x3+x5+x6为子句。子句的大小为其所含文字的总数。子句与项式互为对偶(dual)。•若一个布尔函数可以书写成项式析取式则称为“析取范式”(disjunctivenormalform,DNF)。2.2动作函数的表达和执行•若存在R种可能的动作,则必须找出一个恰当的R值的特征向量函数来计算动作。人们已经对多种表达和执行动作函数的方法进行了研究。2.2.1产生式系统•产生式系统是动作函数的简单表达式之一。一个产生式系统包含一个有序规则序列,称为产生式规则(productionrule)或产生式(production)。每一规则写作ci→ai,其中ci是条件部分(conditionpart),而ai是动作部分(actionpart)。一个产生式系统包含以下规则集:c1→a1c2→a2c3→a3…cm→am2.2.1产生式系统•一般来说,一个规则的条件部分可能是对传感器输入的感知处理而产生的特征的任一二进制值(0,1)函数。通常它是一个单项式——一个布尔合取。为了选择一个动作,选择规则如下:从第一个规则开始,按顺序寻找第一个条件部分值为1的规则,并选择那个规则的动作部分。该动作部分可以是一个简单动作、对另一个产生式系统的调用或者是一个要同时执行的动作的集合。•通常,序列中最后一条规则的条件部分的值为1;若在此条件之前没有其它条件部分的值为1的规则,则缺省地执行最后一条规则中的动作。传感器的输入和以其为基础的特征值随着动作的执行也不断改变。假设条件被不停地检测,使在任一时刻执行过程中的动作与在那一时刻的条件值为1的第一个规则相匹配。2.2.1产生式系统•运用布尔代数以及先前为沿边界行动的机器人而定义的特征文字,可以产生下面的沿边界行动路线的产生式系统表示:northeastxxsouthxxwestxxnorthxx1213243142.2.1产生式系统•沿边界运动是持续过程的一例——一个永不停止的(durative)程序,机器人永远执行这一动作。与此相反,一些任务要在满足目标(goal)后停止运动,这一目标通常用基于特征的布尔条件来表示。譬如,不让机器人永远沿边界运动而让其在走到一个角落后停在那。给出一个角落搜索特征c,当且仅当机器人在一个角落时其值为1,下面的产生式系统会让机器人去一个角落(如果确实存在一个可到达的角落):这里nil表示什么都不做,而b-f表示沿边界运动过程。fbnilc12.2.1产生式系统•在目标实现的产生式系统中,处于规则序列首位c1的规则的条件部分说明了我们要让动作完成的总体目标。一旦达到这一目标,agent便停止动作。当状态不满足c1而满足c2,通常选择条件c2和动作a2,然后动作a2的完成将最终达成c1的目标。•产生式系统形成了一个称作teleo-reactive(T-R)程序的形式化基础。在这个T-R程序中,每正确完成规则序列中一条规则中的动作,就满足了此规则中一个更高的条件。若给出为agent设置的总体目标(使用基于特征的条件说明),书写此特征的产生式系统将十分容易。T-R程序也十分健全,动作一直朝着目标行进。只要感知精确度合理,由错误感知、不恰当的执行动作或对环境信息处理的偏差所造成的偶尔错误是可以得到修正的,而且动作通常能实现其设计效果。•除此特征外,当T-R程序被调用时,可以带上参数,而且可以调用其它T-R程序,还能够递归调用自己。2.2.2网络•用计算机程序执行布尔函数和产生式系统并不困难。另外,它们也能直接通过电路实现。电路输入可以是传感器信号本身。在逻辑电路中,布尔函数由逻辑门网络系统实现。一种常用的电路包括阀值元件或其它能计算其输入加权总和的非线形函数元件的网络系统。其例子之一便是阀值逻辑单元(thresholdlogicunit,TLU)。•它对其输入的加权总合进行计算,并将结果与一阀值比较;如果超过阀值则输出1,否则输出02.2.2网络•可由TLU实现的布尔函数称为线性可分函数(linearlyseparablefunction)(TLU用一个线性平面—在n维空间中称为超平面——将产生高于阀值响应的输入向量空间与产生低于阀值响应的输入向量空间分开)。•许多(但并非全部)布尔函数都是线性可分的。•两个变量的异或函数就是一个线性不可分的函数的例子。•在仅有两种动作可能的应用中,若给出特征向量的代码表示输入,那么单一的TLU便可计算出正确的动作,而对更复杂的问题,则需要由这样的元件组成的神经网络系统(neuralnetwork)。由于TLU被认为是生物神经元的简单模型,这样的电路称为神经网络系统。生物神经元是否被激励取决于若干输入的强度的加权和。2.2.3包含体系结构•存在其他几种把传感器的即刻输入转换成动作的形式化描述。如RodneyBrooks提出的包含体系结构(subsumptionarchitecture)。用一组行为模块来控制agent的行为。每一个模块直接从世界接受传感器信息,当传感器输入满足此模块特定的先决条件时,就执行此模块特定的行为程序。一个行为模块可将另一个行为模块包含其中。•上层模块均可将下层模块包含其中。当模块i将模块j包含其中时,如果满足i的条件,就用模块i的程序替换模块j的程序。与“垂直”体系结构相反,Brooks称其为“水平”体系结构。它并不依赖于其所处环境的内部表达或对这些表达进行的推理。知觉知觉知觉知觉传感器性号动作计划动作计划动作计划动作计划XXX图2-8包含模块通道移动避免障碍物漫游2.3补充读物和讨论•S-Ragent在现代电子世界中无处不在。恒温器、维持车速的巡逻控制、计算机操作系统中的中断驱动部分以及工厂里成千上万的自动装置均是S-Ragent。一般来说,这种系统和装置并不被视为人工智能的主要论题,但它是更高级智能系统的基础。•在一些人工智能和机器人的实验课程中,学生们从运用Lego元件构造S-R机器人开始。探索基于行为的控制策略的人工智能研究者已经研制出由探测器指引的可漫游、躲避障碍且沿墙运动的S-R机器人。