附录 附录A 理解规则(1 / 1)

以下是动物例子的完整基础规则,我相信是由帕特里克·温斯顿(Patrick Winston)和伯索尔德·霍恩(Berthold Horn)提出的:

1. 如果动物有毛发,那么该动物是哺乳动物。

2. 如果动物能产奶,那么该动物是哺乳动物。

3. 如果动物有羽毛,那么该动物是鸟类。

4. 如果动物会飞,并且动物能产卵,那么该动物是鸟类。

5. 如果动物吃肉,那么该动物是食肉动物。

6. 如果动物是哺乳动物,并且动物有蹄,那么该动物是有蹄类动物。

7. 如果动物是哺乳动物,并且动物是食肉动物,并且动物毛发是黄褐色,并且动物有黑色条纹,那么该动物是老虎。

8. 如果动物是有蹄类动物,并且动物有黑色条纹,那么该动物是斑马。

让我们看看这些规则如何在正向推理下工作的。假设用户提供的信息是动物产奶,有蹄,有黑色条纹。然后正向推理将按如下方式进行:

1. 动物产奶这个事实会触发规则2,工作存储器里面会增加“该动物是哺乳动物”的信息。

2. 新增的动物是哺乳动物的信息,再加上动物有蹄,则触发规则6,工作存储器里面会增加“该动物是有蹄类动物”的信息。

3. 新增加的该动物是有蹄类动物的信息,再加上动物有黑色条纹的事实,则会触发规则9,工作存储器里会增加“该动物是斑马”的信息。

4. 到了这一步,没有进一步的规则可以触发了。

这样,我们就可以从动物的信息和规则中获得三项新的知识。

对于反向推理,我们从一些想假设的结论(目标)开始,再使用规则来回溯到更小的知识项。让我们看看,如果用户向系统呈现的目标是确定动物是否有蹄类动物,而没有给出任何信息,系统将如何工作:

1. 推理机试图寻找一个“该动物是有蹄类”的规则,在本例中,它找到了规则6。

2. 推理机没有足够的信息来触发规则6,因为它不知道前提(“动物是哺乳动物,动物有蹄”)是否正确。因此,它给自己设立了一个目标,确认前提陈述是否属实。从技术上讲,“该动物是哺乳动物”和“该动物有蹄”成为子目标。

3. 首先来看“该动物是哺乳动物”这个子目标,在本例中,能够寻找到规则1和规则2。这就告诉推理机,这个目标可以通过两种方式达成:要么发现动物有毛发(规则1),要么发现动物产奶(规则2)。因此,推理机取其中的第一个(“动物有毛发”)并将其作为子目标。

4. 推理机查找以“该动物有毛发”为结果的规则,然而,在本例中不存在这样的规则。我们已经到了规则回溯的尽头,但这并非死胡同,面对这样的情况,推理机可以向用户询问特定的语句是否为真。这样,使用反向推理过程就走到了向用户询问信息的阶段。现在我们假设用户并没有关于动物是否有毛发的信息,因此在回答推理机询问的时候会说“不知道”。在没有任何相关信息的情况下,推理机得出的结论是规则1不成立,因此它会继续以“该动物是哺乳动物”作为结论的规则2的前提进行推理,即以“动物能产奶”作为前提。

5. 推理机将“动物能产奶”作为子目标,然后发现这也是一个回溯到了尽头的目标。因此它同样会向用户提出询问,假设用户的回答为“是”,“动物能产奶”的信息会被添加到工作存储器,然后触发规则2,“该动物是哺乳动物”的信息被添加到工作存储器。

6. 到此,推理机已经建立好了规则6前提的第一部分,所以它继续第二部分,试图确定“动物有蹄”是否正确,因此,它将此作为子目标。

7.“动物有蹄”同样也是回溯尽头的规则,因此推理机会再次向用户询问。假设用户的回答为“是”,这一事实就会被添加进工作存储器,再加上“该动物是哺乳动物”的信息,系统就能触发规则6,最终得出结论,该动物是有蹄类动物。达成用户的原始目标。