《多Agent系统引论》第2章 智能Agent 小结②

本文深入探讨了智能Agent的抽象结构,包括环境状态、动作库、状态转移函数,以及纯反应式和有状态的Agent模型。重点介绍了效用函数在指导Agent行为中的应用,如瓦片世界示例,以及任务环境和任务说明的不同方法。同时,文章还讨论了经典控制理论与智能Agent技术的比较。
摘要由CSDN通过智能技术生成

前言

本文接着上一篇《多Agent系统引论》第2章 智能Agent 小结①进行写作。上一篇总结了环境、交互、智能Agent的概念,对比了Agent与对象、专家系统,思考了我们对Agent的认识、设计的角度、立场。

第二部分还讨论了把Agent系统抽象,用数学表示Agent的任务等,最后还列出了进一步阅读的内容和习题,有兴趣的朋友可以两篇一起阅读。

2.6 智能Agent的抽象结构

环境状态集合:

动作库集合:

一次动作执行r的序列:

设:

  • R是所有可能的(E和Ac上的)有限序列集合
  • R^{Ac}是以动作结束的序列所组成的R的子集
  • R^E是以状态结束的序列所组成的R的子集 

表示动作作用于环境,引入状态转移函数:

注意:

  1. 这里假设环境与历史是有关的
  2. 这个定义允许不确定的环境

如果\tau (r)=\varnothing,就不存在对r的后续状态了。这就说系统结束执行。

环境的组成,即是一个三元组,其中E是环境状态的集合,是初始状态,\tau是转移函数。

Agent模型

 设AG是所有Agent的集合。

系统是Agent和环境构成的对。任何系统都有与之相关的可能的执行集合表示Agent在环境中的执行的集合。我们只考虑有结束的集合,即\tau (r)=\varnothing

表示Agent Ag在环境中的一次执行:

如果:

  1. e_0是Env的初始状态
  2. \alpha _0=Ag(e_0)
  3. 对于u>0,

其中,

两个Agent Ag1和Agent Ag2对环境Env是行为等价的,当且仅当\Re (Ag1, Env)=\Re (Ag2, Env);两个Agent Ag1和Agent Ag2是完全行为等价的,当且仅当它们对所有环境是行为等价的。

2.6.1 纯反应式Agent

纯反应式Agent决策时不参照历史,完全基于当前的状态。这种Agent可以表示成函数:

容易得:每一个纯反应式Agent,都有一个等价的前面讨论的标准Agent,反之却不成立。

举例

温度控制计就是一个纯反应式Agent:

2.6.2 感知

为了构造Agent,我们不能单单玩的这么抽象,还应该要精细化这个抽象模型。

这种抽象要从两个方面入手:

  • 数据
  • 控制结构

从三个方面下手:

  • 数据结构
  • 在这些数据结构上执行的操作
  • 数据结构之间的控制流

下面是一种方案:

see是观察,比如用摄像机或者红外传感器,还比如软件中ls、finger或其他获取状态的命令。action是决策,比如动动小机械手臂,删删公司大数据库之类的(bushi)。

设Per为(非空的)感知集合,则see是函数:

这是环境映射到感知。

action函数:

这是把感知序列映射到动作。

Agent Ag是二元组:

做完这些工作,就可以来研究更有意义的特性和感知问题了。

环境不同,但感知一样,表示就是这样:

两个环境状态,而,但

你可能会说,这是坏事啊!不过,有时这也更专注了不是么。就拿之前的温度控制器举个例子吧。

x表示句子:

“房间的温度正常”

y表示句子:

“John Major是经理”

假设环境里就这两个事实,那么环境状态集合E刚好包含4个元素:

那温度控制器只会这么两种感知:

不用说,p1自然是表示温度过低,p2是表示温度正常。

我们把这种叫等价。数学上这么表示:

给定两个环境状态,如果有,则写成

如果,即不同感知的数量等于不同的环境状态的数量,那么Agent可以区分每一个状态,Agent就是全知的(不是全知全能嗷,全能还得看他表现)

如果,则Agent没有任何感知能力,因为它不能区分任何不同的状态。

2.6.3 有状态的Agent

现在是有历史依赖的Agent的模型:

这些Agent有内部的数据结构,存储了历史信息。

感知函数不变:

设I是Agent的所有内部状态的集合。动作选中函数action变了:

引入一个附加函数next,结合历史、感知,形成新的历史信息:

然后注意的是,这里定义的基于状态的Agent不比标准Agent强。每个基于状态的Agent可以转换成具有等价行为的标准Agent。

2.7 告诉Agent如何动作

造Agent,是为了执行任务。怎么做任务捏,你倒是可以一直安排好任务,从头安排到尾,但这样Agent的自主性不就没用武之地了么。实际上,我们一般告诉Agent要做什么,而不告诉怎么去做。一般就,用某种性能度量,告诉你要改变环境的程度、效用指标等。

2.7.1 效用函数

环境效用

效用就是表示有多“好”的数值。越“好”越好,嗯,其实就是这个值越高越好。

把每个环境度量一下好的程度。

有俩方法:一种看最差情况下Agent能做的多好,另一种情况看平均值。看情况来,这两种情况没有绝对的优劣之分。

执行效用

这种方法有缺点,评价好坏,还是看局部的状态,不利于长期。于是换成用执行来度量了:

长时间独立操作,这种评价的效果就比较好。

著名例子:瓦片世界

光看可能看不明白,规矩是这样的:

仿真的两位网络环境中,有Agent、瓦片、障碍物、洞穴等。

Agent可以上、下、左、右四个方向移动,在瓦片旁边可以推瓦片。

障碍物是不能移动的一格,顾名思义Agent不能通过这些障碍物。

Agent必须用瓦片填满洞穴,得分自然也是用这个来计算,填满尽可能多的洞穴。

世界是随机生成的,瓦片、障碍物、洞穴出现的频率可以设置,洞穴还会消失,有立刻消失和逐渐消失两种;洞穴相继出现也有时间,称为酝酿时间。

Agent的性能度量是:

要多次运行取平均值哦。

虽简单,但它可以测试Agent几个重要的能力。比如比较重要的,Agent对环境变化的反应能力。回来看这张图:

在(a)里,Agent小车正在向上推。突然“啪”的一下,洞穴没了。(参见(b))诶,Agent是不是得反应过来?是不是摸了一波Agent的底。

又或者,Agent小车正在向上推。突然“啪”的一下,右边出现了新的穴。(参见(c))诶,Agent是不是又得反应一下?是不是又摸了一下Agent的底。

假设有上限存在,即假设效用函数u有一个所设定的效用上限,即存在使得对于所有都有,则可以说最优Agent,最优Agent是使期望的效用最大化的Agent。

表示Agent Ag在环境Env中执行r出现的概率。显然有:

则最优化是:

这与决策理论中期望效用最大化的概念基本上是一致的(参见Russell and Norvig, 1995, p.472)

理想很丰满,实际要缓缓

然而实现很难,因为没考虑实现这个函数需要的内存,或计算这个函数的复杂性等。

于是搞实际一点:假设m是一台特定的计算机,用AG_m表示可以在m上实现的AG的子集为:

假设m在环境Env中,效用函数,则用下面的式子替代2.1:

缺点

这种效用函数,其实是很难找的。别看瓦片世界找到了,但它还是过于简化不是。

所以提出了所谓的谓词说明任务的方法。

2.7.2 谓词说明任务

比如给个谓词u,只能为真1或假0。,则认为执行满足说明u,其他情况则不满足。

表示谓词说明,用表示r\epsilon R满足。换句话说就是,当且仅当为真。

然后先不考虑这个,看下面的。

2.7.3 任务环境

任务环境定义为对,其中Env是环境,是一个执行谓词。设TE是所有任务环境的集合,记住了嗷。

其实就是说,在特定环境下要完成什么样的任务。

那在一个任务环境下,能完成任务的Agent就这么表示:

数学上的话叫:给定一个任务环境,用表示在环境Env中满足的Agent Ag的所有执行的集合。

最牛逼的是什么样的呢?就是啥情况都能应付的。那就这么表示:

或者

能干事,但是是能干事的里面的最挫的,就是只能保证至少成功一次的。这么表示:

这之间的,自然就是概率表示成功几率,来评价英雄好汉等级的啦。

其中表示Agent Ag在环境Env中执行r发生的概率,则Ag在环境Env中满足的概率是

说回谓词说明任务

这个谓词说明任务分两类:实现型任务和维护型任务。

实现型任务

就是要保持某些状态的。

比如积木世界。

维护型任务

就是要避免某些状态的。

比如核反应堆,要避免“熔化”。

2.8 Agent的综合

咋用算法来表示造一个Agent呢?

这样:

其中差不多就是Java中的null。

然后考虑可靠性和完备性,差不多就是充分性和必要性。

可靠性要满足:

完备性要满足条件:

蕴含,大概就是左边能推出右边吧。

可靠性保证Agent能正常工作,但不一定会产生这样的Agent。

完备性保证总是能产生一个Agent,但不一定能工作。

两个都满足,自然就合理了。

2.9 注释和进一步阅读

智能Agent的讨论

主流讨论

Russell and Norvig(1995)把人工智能看成是Agent的设计工程,第二章中给出了很多有用的资料。

Wooldridge and Jennings(1995)给出了Agent的定义,也是本文的根据。

Wooldridge and Jennings(1995)还包括了对Agent结果和Agent程序设计的广泛介绍。

Muller etc.(1997)什么是Agent的问题,继续引起了一个争论,可以看这篇,有些答案。

Agent和对象的关系

Gasser and Briot(1992)

其他有意思的且可读性比较好的

Kaelbling(1986)

Etzioni(1993)

Agent的抽象模型

本文基于的

Genesereth and Nilsson(1987, chapter 13)

借用了思想的

Russell and Wefald(1991)

Russell and Subramanian(1995)

人工智能Agent与软件复杂性

Simon(1981)可能是第一个讨论这个问题的。

Booch(1994)详细讨论了软件复杂性问题,还讨论了面向对象的开发方法对于克服软件复杂性的作用。

Russell and Norvig(1995)引入了根据“难易”程度对环境的5种分类。

Kaelbling(1986)涉及了许多这里讨论的问题。

Jennings(1999)也讨论了复杂性和Agent的一些问题。

Agent与环境

Pollack and Ringuette(1990)引入了瓦片世界。

Kinny and Georgeff(1991)基于上面俩老哥,研究了信念-愿望-意图模型(Wooldridge, 2000b)的一类特殊Agent,剪裁这种Agent以便适应不同变化速率和不同复杂性的环境。

Wooldridge and Parsons(1999)证明了上面俩老哥(不是上上面俩老哥)的一些结论。

Schut and Wooldridge(2000)基于上上面俩老哥(这下是上上面俩老哥了)对有关问题进行了研究。

Muller(1999)搞了一些非正式讨论。

规划问题

与实现型任务环境

Allen etc.(1990)讨论了实现型任务环境。

Fikes and Nilsson(1971)搞了个原型规划系统,STRIPS。

Bylander(1994)说明了上面那个系统是PSPAC完全的。

与决策论

Blythe(1999)最近对这个感兴趣了。

kaelbling etc.(1998)也对这个感兴趣了。

任务说明

Wooldridge(2000a)取了一点材料。

Wooldridge and Dunne(2000)也取了一点材料。

2.9.1 课堂阅读:Franklin and Graesser(1997)

本文非正式地讨论了Agent的各种不同概念,可以和本文对比上。

习题

1.[1级]

给出你所知道的Agent的其他例子(不一定是智能Agent)。对每一个例子,尽可能准确地定义以下问题:
(1)Aget所处的环境(物理环境、软件环境等)、环境中的状态、环境的种类:可观察的和不可观察的、确定性的和不确定性的、一段场景的和非一段场景的、静态的和动态的、离散的和连续的。

(2)Agent可执行的动作库,以及这些动作的前提条件。

(3)目标或者是Agent的设计目标,即要实现什么。

2.[1级]

证明下面的问题。

(1)对于每一个纯反应式Agent,存在一个行为等价的标准Agent。

(2)存在标准Agent,没有与之行为等价的纯反应式Agent。

3.[10级](来来来,挑战一下)

说明基于状态的Agent与标准Agent的表达能力是等价的,即,对于每一个基于状态的Agent存在一个行为等价的标准Agent,反之亦然。

4.[1级]

有两种方法通过效用函数定义任务:通过效用与状态的关系()或者通过效用与执行的关系()。严格来说,第二种效用函数比第一种效用函数有更强的表达能力。给出一个关于执行的效用函数的例子,这个效用函数不能通过与状态有关的效用来定义。

5.[4级]

阅读经典控制理论,把控制理论中的问题和技术与我们试图建造智能Agent的问题和技术相比较。经典控制理论中的哪些问题和技术与智能Aget的问题和技术相似,哪些问题不同?

6.[课堂讨论]

讨论各种任务说明方法。

  • 31
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值