首页 理论教育 基于电路的智能体

基于电路的智能体

时间:2022-02-11 理论教育 版权反馈
【摘要】:基于电路的智能体是一种具有状态的特殊的反射型智能体,如同第二章中定义的。)图7.20 wumpus世界中采用的基于电路的智能体的局部图,显示了输入、输出、捡起金子的电路以及判断wumpus是否活着的电路。我们在前一节中谈到,基于电路的智能体在处理时间方面比基于命题推理的智能体更能符合要求。如果我们要建造能够以合理方式增长的基于电路的智能体,这一特性是必要的。对于非局部的领域,基于电路的智能体不是总能适用的。

7.7.3 基于电路的智能体

基于电路的智能体是一种具有状态的特殊的反射型智能体,如同第二章中定义的。感知信息是序列电路——门和寄存器的网络——的输入。其中,每个门实现一个逻辑连接符,每个寄存器存储一个单个命题的真值。电路的输出是对应于行动的寄存器——例如,如果智能体希望抓住某个东西,Grab的输出就要设置为true。如果把Glitter的输入直接连接到Grab的输出,智能体一看到目标就要去抓住它。(参见图7.20。)


图7.20 wumpus世界中采用的基于电路的智能体的局部图,显示了输入、输出、捡起金子的电路以及判断wumpus是否活着的电路。寄存器用矩形表示,单步延迟用小三角形表示

以数据流方式评估电路:在每个时间步,给输入设置值,信号在电路中传播。只要一个门的所有输入都有值,它就产生一个输出。该过程与如图7.15(b)所示的与或图前向链接过程密切相关。

我们在前一节中谈到,基于电路的智能体在处理时间方面比基于命题推理的智能体更能符合要求。这是因为保存在每个寄存器中的值赋予相应命题符号在当前时刻t 的真值,而不是每个不同时间步有一个不同的副本。例如,我们可能有一个名称为Alive的寄存器,当wumpus活着的时候,它包含true,而 wumpus 死了,它包含 false。这个寄存器对应于命题符号 Alivet,因此每个时间步它指向不同的命题。智能体的内部状态——也就是其记忆——是通过将寄存器的输出用延迟线路连接回到电路中来保持的。延迟线路将递送寄存器前一时间步的值。示例见图7.20。Alive的值是通过Scream的非和Alive本身的延迟值的合取得到的。按照命题逻辑的观点,Alive电路实现了双向蕴涵


它表明wumpus在时刻t是活着的,当且仅当在时刻t没有感知到嚎叫(来自t − 1的嚎叫)而且t − 1时它还活着。我们假定,电路初始化设定Alive为true。因而,Alive将一直保持为真,直到嚎叫出现,于是它将转为假并保持。这正是我们需要的结果。

智能体的位置可以用与wumpus的健康几乎相同的方法处理。对于每组x和y需要一个Lx,y寄存器,如果智能体位于[x, y],那么它的值必须为true。然而,对Lx, y赋值的电路要比用于Alive的电路复杂得多。例如,智能体在时刻t位于[1, 1],如果(a) t − 1时它也在那里而且也没有向前移动或试图移动但是撞上了墙;或者(b)它在[1, 2],方向朝下,并向前移动;或者(c)它在[2, 1],方向朝左,并且向前移动:


L1,1的电路如图7.21所示。每个位置寄存器具有类似的附属电路。习题7.13(b)要求设计出方向命题的电路。


图7.21 判断智能体是否位于[1,1]的电路。每个位置和方向寄存器都有类似的附属电路

图7.20和图7.21中的电路一直维持Alive和Lx, y的正确真值。然而,这些命题不寻常之处在于它们正确的真值可以一直是确定的。转而考虑命题B4,4:方格[4, 4]有微风。即使这个命题的真值一直恒定不变,智能体也无法认识到这一点,直到访问[4, 4](或者演绎出有相邻的陷阱)。命题和一阶逻辑都是为了自动表示真、假和未知命题而设计的,但是电路不是:B4,4的寄存器必须包含要么为true,要么为false的某个值,甚至在事实被发现之前。寄存器中的值很有可能是错误的,这会将智能体引入迷途。换句话说,我们需要表示3种可能的状态(B4,4已知为真、已知为假、未知),而我们只有一个比特来处理它。

问题的解决方法是采用两个比特而不是一个。B4,4用两个寄存器来表示,我们称其为 K(B4,4)和K(¬B4,4),其中 K 代表“已知”。(记住,这些依然只是具有复杂名称的符号,即使它们看起来像结构化的表达式。)当K(B4,4)和K(¬B4,4)都为假时,意味着B4,4的真值未知。(如果二者皆为真,那么知识库有缺陷!)现在无论何时我们在电路的某个部分中使用B4,4,我们用K(B4,4)代替;使用¬B4,4时则用K(¬B4,4)代替。通常我们用两个知识命题表示每个潜在的不确定命题,来陈述基础命题是否已知为真和已知为假。

我们将简要地看一个如何应用知识命题的例子。首先,我们需要设计出判断知识命题本身的真值的方法。应注意到,尽管 B4,4有固定的真值,K(B4,4)和 K(¬B4,4) 确实会随着智能体对世界更多的了解而改变。例如,K(B4,4)初始值为假,当B4,4一旦被判断为真——也就是说,当智能体处于[4, 4]并检测到微风——K(B4,4)马上改变为真。此后它一直保持为真。因此有:


可以对K(¬B4,4)t写出类似的公式。

智能体现在已经了解了有微风的方格,它能够专心地对付陷阱了。可以断定在某个方格中没有陷阱,当且仅当在它的相邻方格之一中没有微风。例如:

判断方格中有陷阱更加困难——在某个相邻方格中必须有微风,而且该方格不能算到另一个陷阱头上:

虽然判定陷阱存在与否的电路有点儿粗糙,不过对于每个方格只需要固定数量的门。如果我们要建造能够以合理方式增长的基于电路的智能体,这一特性是必要的。它的确是wumpus世界本身的一个特性;如果只看固定数量的其它命题就可以判定每个令人感兴趣的命题的真值,则称环境表现出局部性。局部性对于环境的精确“物理规则”非常敏感。例如,扫雷游戏(习题 7.11)是非局部的,因为判断给定方格中是否有地雷,可能包括对任意远方格的查看。对于非局部的领域,基于电路的智能体不是总能适用的。

有一个我们已经谨慎涉及过的问题:无环性问题。如果每个将寄存器的输出接回其输入的路径上都有一个中间延迟元件,那么电路是无环的。我们要求所有的电路都是无环的,因为作为物理装置的有环电路是无法工作的!它们会进入不稳定的振荡,从而导致不确定的值。作为有环电路的一个示例,考虑公式(7.6)的如下扩充:

额外的析取子句,K(P3,4)t和K(P4,3)t,使得智能体可以根据已知存在的相邻陷阱判断是否有微风,这看来是完全合理的。现在,不幸的是,微风的出现依赖于相邻的陷阱,陷阱的存在通过如公式(7.8)的公式而依赖于相邻的微风。因而,完整电路可能包含环。

困难不在于扩充公式(7.9)不正确。而是,问题在于这些公式表示的互锁依赖无法在对应的布尔电路中用真值传播的简单机制解决。采用公式(7.6)的无环版本,只根据直接的观察判断是否有微风,所以这一版本是不完备的,从某个意义上说原因是在某些方面基于电路的智能体可能比采用完备推理过程的基于推理的智能体知道得更少。例如,如果[1, 1]中有微风,基于推理的智能体可以得出[2, 2]中也有微风的结论,然而采用公式(7.6)的基于无环电路的智能体无法做到这点。可以构建完备的电路——毕竟时序电路可以仿真任何数字计算机——但是它将显著地变得更复杂。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈