
《多Agent系统引论》第2章 智能Agent 小结①
本文小结了《多Agent系统引论》第2章,智能Agent的第一部分。总结了环境、交互、智能Agent的概念,对比了Agent与对象、专家系统,思考了我们对Agent的认识、设计的角度、立场。第二部分还讨论了把Agent系统抽象,用数学表示Agent的任务等,最后还列出了进一步阅读的内容和习题,有兴趣的朋友可以两篇一起阅读。
2.0 前言
Agent定义
自治性是Agent的核心概念,这点已成为共识,但其他方面还没有达成共识。部分原因,是因为不同的任务对Agent的能力要求不同——比如学习能力,有些情况下必须有,有些情况下则不需要有。
不需要的情况有例子:MIchael Georgeff做的PRS Agent系统,是一个空中交通控制系统,研究者不希望它在运行中改变自己的行为。
Wooldridge和Jennings(1995)的定义如下:
Agent是处在某个环境中的计算机系统,该系统有能力在这个环境中自主行动以实现其设计目标。
概念图
注意两点:
1.Agent会感知环境。
2.Agent有动作库,能进行动作输出,改变环境。但是,环境对动作的反应有不确定性,换句话说,Agent动了,环境不一定变,或者不一定变到Agent想要的效果。
Agent举例
(注意,不是智能Agent哦)
Agent可以按照工作环境来分类,如果是在物理世界工作的,就属于控制系统;是在软件世界工作的,就属于软件指示器。
控制系统
任何控制系统,都可以看成Agent。
例如一个房间的温度控制器,运行逻辑如下:
- 温度过低 → 加热
- 温度正常 → 停止加热
软件指示器
多数软件指示器,都能看成Agent。
例如X Windows中的xbiff程序,它监视发送给用户的电子邮件,通过GUI告诉用户有没有没阅读的消息。
总结
- Agent是简单的计算机系统,它可以在某一环境中自主动作,以实现设计目标。
- Agent一般会感知环境。
- Agent有一个可用的动作库,可以改变环境,但环境可能会反应出不确定性。
2.1 环境
环境性质
环境有分类的方法:
- 可观察的与不可观察的
- 确定性的与非确定性的
- 静态与动态
- 离散的与连续的
分别讨论一下四个性质。
可观察性与不可观察性
注意到,有些极端情况,环境是不好观察的。比如火星北极的表面温度是-100℃,可能温度计都没法正常工作。这就是不可观察性。
而观察到的信息越多越全,Agent做出决策自然就越可能正确。
确定性与非确定性
另外,如果环境足够复杂,即便做了动作,这个动作对环境的影响也不一定就如Agent所预料的那样。这便是不确定性。
- 不确定性说明了Agent只能影响部分环境。
- 不确定性还表明动作可能无法达到预期。
静态与动态
环境足够复杂,对Agent的动作结果来说是不确定的,而除此以外自身对Agent还反应出了动态性。
- 就是说,t0和t1时间内,就算Agent没做动作,也无法保证环境没变。
- 另外,就是做动作的时候环境变了,甚至会对Agent的动作造成干扰。(Ben-Ari, 1990)
所以静态环境只要采集一次环境就行,动态环境就得不断采集环境的信息。(Moore, 1990)
(人工智能的规划算法,在本书成书的年代,大多数面对的就是静态环境,只采集一次环境。(Lifschitz, 1986))
还不用考虑动作的同步和协调问题。(Bond and Gasser, 1988)
离散性与连续性
最后是离散和连续环境。
有的问题,本身就是离散环境,比如象棋比赛;
有的问题,是连续的,只好抽象成离散状态,而这必然会造成信息丢失,不过这样我们就可以用计算机了,因为计算机就是一个离散状态系统,可仿真连续系统。
抽象成离散的,理论上来说,列出所有可能的状态,都能找到最佳的执行动作。
最复杂、最一般的环境类型是不可观察的、不确定性的、动态的和连续的。具有这些特性的环境通常称为开放环境(Hewitt, 1986)。
交互性质
决定Agent设计过程的复杂性中,除了环境的特性,还有第二个重要的特性,那就是Agent与环境交互的性质。
函数系统与反应系统
函数系统,特点就是
- 有输入,有输出。
- 能停止,前提条件满足了就开始,后续条件达到了就停止。
尽管内部逻辑可能复杂,但设计还是相对简单。比如“各个击破”的设计方法,自顶向下、逐步求精 (Jones, 1990)。还有半自动化的求精技术,从高层的规格说明,逐步求精到实现为止(Morgan, 1994)。
然而我们要反应式的。什么是反应式呢?首先,它是要保持与环境的交互,这点就和函数式的停止的特点区别了;然后,它要快速响应环境;成书的最近,还要求做出行动的响应,而不是明显的推理。
反应式系统可比函数式实现难多了,最简单的对比,函数式只要管一段过程,给什么情况,做什么事,出什么成绩,这就完事了。反应式不仅要考虑具体的执行,还得考虑执行对全局、对长期的影响。
举个例子,两个打印机p1、p2,先给p1,以后再给p2。这样看来没问题。但是,如果老是这样,给p1,给p1,给p1,确实也是在执行“没问题”的事情,但这个“以后”就老是没达到,所以p2就被晾在一边了。这被称为公平性问题(Francez, 1986)。
局部环境下看起来完全合理的决策,全局考虑却是完全不希望的。
解决方法,可以让Agent对系统的行为进行显式的推理和预测,不过当时一个字,难。
场景化
除了反应式的概念,还有场景化的概念。比如邮件分拣系统(Russell and Subramanian, 1995),不同场景干不同的活,有相同的场景就做一样的活,分门别类。
实时性
还有一个概念,实时性。
- 必须在特点的时间范围内做出行动决策的交互
- 必须尽快达到某种状态的交互
- 必须尽可能多的重复执行某些任务的交互
没有时间限制,那总会试图找最好的方法。然后,各种动作,排列组合选起来,可能的情况按指数级增加,搜索结果的时间也是指数级增加。怎么可能给你Agent这么多时间去想。所以某种意义上来说,任何实际的系统都必是实时系统。
更不用说,NASA上的航天飞机故障诊断(Georgeff and Lansky, 1987),需要在几毫秒内响应。
2.2 智能Agent简介
其实通常不会把温度控制器和软件指示器看成Agent,就更别说智能Agent了。
那啥时候看成智能Agent呢,其实这和回答“什么是智能”一样困难。不过有一种方法是列出智能Agent应该具有的能力。
Wooldridge和Jennings(1995)的建议如下:
- 反应性
感知环境并及时反应,以满足目标。
- 预动性
只可以主动发起行动,以达成目标。
- 社会行为能力
可以与其他Agent(或人)交互,以达成目标。
目标与反应的平衡
这些功能看似简单哦。比如预动性,函数程序完全有,有确定的目标,只要达到条件,就可以触发过程,然后输出结果。是不是很有预动性?
那设想一下,怎么增加一个系统的反应性呢?这种情况下,函数程序这样的呆板模式,就行不通了哦。外界环境不断变化,条件可能时而满足时而不满足。而连函数程序设定的目标,有时候在环境变化之下,都变得不切实际了。这种反应性的要求,就使函数程序out了。
难点,不在于单纯的目标引导的系统,也不在于单纯的反应式的系统,而在于两个属性的平衡。毕竟,对于人来说,平衡目标和当下的反应,不也是困难的么?
社会行为能力
社会上的人,成人,每个人的目标不同,但我们还是能互相协作,比如我想赚钱养家,你想报效祖国,我可以给国企外包做项目,你可以攒钱买蛋白粉暂时进组。我们同样希望Agent有这样的能力。
2.3 Agent与对象
Agent与对象有3个区别:
- 与对象相比Agent包含有更强的自治性的概念,特别是它们自己决定是否接受其他Agent的请求执行一个动作。
你想,对象它就声明个属性是私有的,方法差不多都是公有的,那别人想执行就执行,想调用就调用,完全没问过我对象自己是怎么想的。Agent不同,你要调它的方法,那还得它自己同意才行。
- Agent具有灵活的(反应的、预动的、社会的)行为能力,标准的对象模型根本没有这种行为能力。
- 多Agent系统本质上是多线程的,其中每个Agent至少假设有一个控制线程。
2.4 Agent与专家系统
Agent与专家系统的区别:
- “经典”专家系统是与现实分离的——它们与任何环境没有直接联系,而是把用户作为“中间人”发生作用。
- 专家系统一般不能采取反应式的、预动的行动。
- 专家系统一般没有社会行为能力,不能进行合作、协调和协商。
总结就是,专家系统只提供建议,Agent自己要采取行动。专家系统可以在Agent耳边叨叨,Agent不能打它。
2.5 作为意识系统的Agent
讨论Agent系统时,通常采用意识立场的方法,用它赋予Agent思维状态,想干啥,希望得到啥等。比如:
- Janine带上了雨伞,因为她相信要下雨。
- Michael努力工作,因为他想要写完自己的书。
这么描述的系统,意识系统,还可以分不同的层次。
一阶意识系统有信念和愿望(等),但是没有关于信念和感望的信念和愿望…二阶意识系统更加复杂,它有关于信念和愿望的信念和感望(当然还可以有其他思维状态)一包括对于他人的和对于自己的。
(Dennett,1987,p.243)
小举一例
比如开关,开关相信他要传输电流时,它会不停的传送,否则就不送。拨动开关就是向它传递我们的愿望。
然而,我们有更简单和机械的表述方法来描述它的工作。上面的说法,反倒更像小孩子的说法,显得很幼稚倒是。
实际上,确实,我们对系统了解越多,越不用依赖这种行为意图的有灵性的解释。
实际的实际上,这种认知角度的切换,和很多学科的发展情况相吻合,比如Piaget的儿童成长模型,比如人类的科学发展过程。儿童会说“开关开关,快快把电灯开开!”然后学完初中高中自然也就知道开关的原理了。教计算机,说“计算机不知道……”这样教小孩子,他们也更能听懂。
合理吗?
这么做,有效吗?合理吗?著名研究学者McCarthy等人也直言,在有些情况下采用意识立场是合适的。
当赋予一台机器信念、自由感望、意图、知觉、能力、要求等与表示一个人具有同样的信息的时候,这种表示是合理的。如果这样做有助于理解机器的结构、机器过去和将来的行为,或者有助于修理或改进这台机器,则这种表示是有用的。从逻辑上讲,即使对于人类这种表示也不一定是必须的,但是,用有条理并且简单的方式表示在特定情况下实际和道的机器的状态可能会需要意识属性或者拟人的属性。关于机器的信念、知识、要求等思维属性理论可以用比人类思维属性更简单的方式构造,也可以用于人类。给已知其结构的机器威于思维属性是最直接的方式,比如恒温拉制器和计算机操作系统。但是,当应用于并不完全知道其结构的机器时是最有用的。
(McCarthy,1978)(有下划线的地方出自Shoham,1990)
总之,结构越复杂,用这个准没错。
有人就叭叭了,哎呀,你们是没辙了么,搞这么抽象,要Agent上天啊?
别急,我们看看还有什么其他的视角/立场。
物理立场
比如松开手,石头就掉地上。不用信念和愿望,用质量、万有引力公式计算即可。
设计立场
根据系统要实现的目标来预测系统的行为。
比如拿出个闹钟,不是闹钟的齿轮扭到头了就响,也不是闹钟想叫人就响,而是闹钟是用来叫人起床的,所以闹钟会在定好的时间响。
然后,给你来个计算机呢?你看到的页面,是怎么从机子到屏幕,从网上到你电脑里,从html文件到你看到的页面的?这个,难讲的清吧。
抽象,再抽象!
从以前拨开关换真空管,到输小纸条,再到打代码,再到图形化界面,不正是一点点抽象起来的么。所以,不用过多的担心这种视角。
2.6-2.9与习题
更多推荐
所有评论(0)