
人工智能教案08章智能体8.3智能体之间的通讯.doc
11页8.3 智能体之间的通讯 智能体之间的交互和协调是通过智能体之间的通讯来完成的当前智能体在完成了对其它智能体的建模之后,如果要对其它智能体进行控制和协调,比如改变其它智能体的目标,知识或者是对环境的置信,就应该通过通讯动作来完成本节主要介绍了智能体之间的言语行为,及言语行为的实验,最后用一个对语言符号串的理解来详细地说明 8.3.1 言语行为 当前智能体可以通过两类方法来有意地影响其它智能体的动作如果当前智能体知道其它智能体如何对其环境的变化做出反应,那么当前智能体就可以通过改变环境来达到所需的效果 例如,当前智能体可能把一块积木放在另一个智能体的前面,因为当前智能体知道其它智能体可能有摞积木的行为当前智能体可以试图改变其它智能体的目标、知识(或者置信)和动作选择机制它可以通过直接"写"另一个智能体的认知机构中的这些元素来达到目的例如一个人(可假定为当前智能体)可以使用这个方法来控制一个拥有这种接口通道的智能体更有趣的是,当前智能体可以用这种方法和其它智能体通讯,使得其它智能体对其的置信和目标(最终使得其它智能体采取其所希望的行动)做出改变这种通讯的媒介是依赖于其它智能体的感觉和知觉装置的。
比如,它可能包括"写"(基于另一个智能体的视觉能力),"声音"(基于其它智能体的听觉能力)或者"广播"(基于其它智能体的电磁接受能力)当一个智能体采取如上之一的行动,并有意的去影响其它智能体的认知结构时,我们称其为正在进行一个通讯的行为(Communication act) 人类的通讯行为一般涉及到了说话时采用的语言(使用声波作为媒介)因此,语言学家也把各种不同的通讯行为称为言语的行为(speech act)讲话的一方称为说话者(Speaker),受话的一方称为听众(Listener)根据哲学家John Searle的理论,言语的行为一般有如下几种:表示型(陈述了一个主张或者建议),指示型(要求或者命令),委托型(许诺或威胁),表达型(感谢或者道歉)和声明型(实际上可以改变世界的状态,比如"我现在宣布你们成为夫妻") 言语的行为可能有不同的物理表现形式,它们可以是一个动作的序列(比如在手势语言中)、一串符号(在文本中)、一个声音扰动(尖叫讲话)或者闪光灯无论采用什么形式,言语行为的表现都被称为讲话据Searle所说,讲话不但要表达讲话的内容,还要表达讲话的类型例如,如果采用英文文本作为媒介,那么语句"Put block A on block B"不但表达了其要求的性质,而且表示了命题的内容:On(A, B)。
这种讲话的方式被说话者采用来改变听众的目标结构 假设言语的行为可以对听众的知道产生影响如果当前智能体A1通过一个表示型的言语行为来通知听众A2:一个由f指代的命题为真那么A1可以认为这个言语行为的后果是:A2知道A1要告诉它f这里没有描述A2是如何表达这个意图的,也没有描述A1如何表达以上的信息让A2知道目标和意图的表达方式所涉及到的装置是比较多的幸运的是,通过谈话(talk)可以代替A1想通过言语行为对A2产生的影响:A2相信f说话者想对听众产生的影响被称为言语表达效果的影响当然,言语表达效果影响的实现完全依赖于听众,只有听众是极端的轻信,或者听众相信说话者是值得信赖的情况下,才能假定言语表达的效果 我们再回到前面的例子中,可通过假设A1认定它的行为(通知A2关于f)具有言语表达效果来简化我们的讨论我们假设A1用公式Κ(A2,f)来表达它对A2的影响 当人类使用语言时,一个语句的言语表达效果有时会产生意外的效果例如,在句子"You left the refrigerator door open"中,说话者的真正意图是要求受话者关上冰箱言语行为的表达效果不同于所谓的间接言语行为(indirect speech act)。
一个采用间接言语行为的说话者假定听众可以从上下文的环境中推断出说话者的意图,并使用这个意图去决定言语行为的表达效果因此,"Do you have the time?"是一个间接的问话方式(因为此方式更有礼貌),它要求听众回答告诉说话人时间,而并不要求听众是否知道时间言语行为的实现 言语行为的实现,或者说物理的表现形式是讲话现在讨论一下类似Tell(a,f)的通讯行为是如何像说话者和听众之间的交谈一样进行传输的可以考虑两种可能性:(a)从说话者到受话者之间的一个逻辑公式的直接传输;(b)说话者传送一些符号串,然后受话者把它们转换成自己的认知结构(比如说逻辑公式) 如果说话者和受话者共享了某些基于特征的世界模型,而且这些模型的公式都由相同的符号构成,那么一个言语行为可以通过传递逻辑公式来实现(附加上传送的言语形式的类型)例如,在这种情况下,言语的行为Tell(A2,Clear(B)∧On(B,C))可以通过如下方式实现:当前智能体发送公式Clear(B)∧On(B,C)给智能体A2,并指示了所传送的言语行为的类型为表示型注意,这样做要假定公式Clear(B)∧On(B,C)相对于A2所表达的意思和其对于当前智能体所表达的意思相同。
甚至在我们对所有的智能体构建和编程的情况下,这种相同的知识表达词汇相同的假设条件还是太强了,对于我们某些感兴趣的情况是根本不可行的即使两个智能体的知识表示词汇和模型在启动时是一致的,如果遇到任何新的对象,几乎不可能赋予它们相同的名字如果智能体能够使用基本的原语创建新的谓词,这些等价的谓词也可能有不同的符号正因为当前智能体对其它的智能体采取一种有意的方式,其它的智能体可以不采用逻辑公式来对世界模型进行编码 在如上的限制下,智能体之间的通讯如何成为可能呢?一种答案包括了前面阐述的两种选择中的第二个:用一个一致、通用的通讯语言,通过设计、使用和指令,通讯智能体对在这种通讯语言方式下传输的符号串如何改变其它智能体的认知结构进行学习举例来说,采用有意的方式,当前智能体能够对如下情况作出预测:如果传送给智能体A2的字符串为"block B is on block C and block B is clear",那么对A2的认知结构的言语表示效果就可以用当前智能体的知识库中的公式:Κ(A2, On(B, C)∧Clear(B))来描述在这个例子中,当前智能体通过发送语句"block B is on block C"和"block B is clear"来执行言语行为Tell(A2, On(B, C)∧Clear(B))。
受话者把这些语句翻译成其知识表示的内部形式当然,因为假定正在智能体的设计阶段,我们能选择我们喜欢的任何通讯语言如果当前智能体也需要用一些像英语一样的语言与人通讯,就可以发明一个如同例子中的类似英语的语言 使用基于符号串的语言蕴涵了两个问题的解决方案:给定一个言语的行为,如何生成一个符号串;如何把一个符号串翻译成一个对认知结构的影响虽然鼓励在人工的智能体中使用符号串作为通讯的媒介,但是用机器生成并理解自然语言是依各自的兴趣进行的通讯使用的符号串的生成和理解主要在自然语言的领域中学习和研究范畴因此对智能体之间通过字符串的通讯,处理将主要集中在类似于英语的语句言语行为中,这将通过自然语言处理的手段来解决8.3.2 理解语言字符串 一个符号字符串是被智能体由一个带有一定意图的言语方式所传递我们要考虑的是如何将被接受方接受的字符串翻译成讲话方希望的命题公式这个翻译过程所需的一些信息嵌入在字符串的语法属性里面例如,讲话方可能希望将字符串block b is on block C 翻译成On(B,C)而不是On(C,B)利用自然语言处理的句法分析和语义分析,我们可以得到所希望的结果参见第7章《自然语言处理》 下面所列出的语法规则都符合上下文相关语法,其中→表示逻辑蕴涵。
例: 一个扩充的短语结构语法如下所示: A→ Noun(E(A)) B→ Noun(E(B)) C→ Noun(E(C)) Block A →Noun(Block(A)) Block B →Noun(Block(B)) Block C →Noun(Block(C)) Floor → Noun(Floor(Fl)) And → Conj(∧) Or → Conj(∨) Clear → Adj(λx Clear(x)) Empty →Adj(λx Clear(x)) Occupied → Adj(λx ~Clear(x))· On → Prep(λxy On(x, y)) Above → Prep(λxy On(x, y)) Below → Prep(λxy On(y, x)) Is Adj(λx φ(x)) → VP(λx φ(x)) Is PP(λx ψ(x ,σ)) → VP(x ψ(x,σ)) Prep(λxy ψ(x,y))NP(φ(σ)) → PP(λx ψ(x ,σ)∧φ(σ)) Noun(φ(σ)) → NP(φ(σ)) Adj(λx φ(x))NP(ψ(σ)) → NP(φ(σ)∧ψ(σ)) NP(φ(σ))VP(λxψ(x)) → S(ψ(σ)∧φ(σ)) S(γ1)Conj(∧) S(γ2) → S(γ1 ∧γ2) 显示"block B is on block C and block B is clear"分析过程的语义分析树,如右图所示:图8-6 语义分析树t8-6_swf.htm 下面就上述语义树的分析过程,进行详细的说明: 从逻辑结构和每个终结符开始,先看一下语法规则为名词的终结符号。
例如第一个规则A→ Noun(E(A)),它陈述了和名词"A"相关的语法元件是原子E(A)(E(A)的意思是由A代表的对象是一个实体)在语法分析中,这个规则陈述了终结符A在符号串的出现能被重写为Noun(E(A)) 所有的规则按照自左向右的方式进行书写,因为这些公式将应用到自底向上的分析中(用箭头右边的分析代替终结符) 这里,执行名词置换,我们可以得到如下已经过分析的句子: Noun(Block(B)) is on Noun(Block(C)) and Noun(Block(B)) is clear 下面是对终结符and和or写的规则: And → Conj(∧) Or → Conj(∨) 应用and规则生成: Noun(Block(B)) is on Noun(Block(C)) Conj(∧) Noun(Block(B)) is clear 公式中的部件并非与其他的终结符直接相关在本例中,形容词clear, empty和occupied都陈述了一些对象的属性,因此它们应该用适当的关系常量和对象常量引入谓词演算算子但是,在我们置换这些形容词时,可能不知道它们正在描述哪个对象的属性。
因此,对形容词clear,规则表中应该有如下的规则: clear → Adj(Clear(x)) 表达式clear(x)解释为一个谓词演算公式,为了生成一个谓词演算公式,该范式应该应用到一些对象常量上这里使用l表达式来定义这种范式因此对clear规则的一个更精确的描述为: Clear → Adj(λx Clear(x)) 在这里一个短语的含义有时用另一个短语的含义来表达,例如,如果我们把该范式应用到对象常量B,就会得到: (λx Clear(x))B = Clear(B) 把Clear规则应用到我们已经部分解释的句子,得到: Noun(Block(B)) is on Noun(Block(C)) Conj(∧) Noun(Blo。












