喔呼,第三课,基于目标的系统、基于规则的专家系统、建立一个知识工程的三原则
基于目标的程序
从挪动木块的程序说起:
一个挪动木块的程序不仅可以完成挪动木块的功能,还可以回答关于自身行为的问题,怎么才能做到呢?
如下图左侧,我们要将木块B2挪动到B3上,需要经过下图右侧的过程。这时我们问为什么要挪开B1,程序会回答因为我要把B2放在B3上;如果我们问怎么挪开B1,程序会回答通过抓起B2。
为什么程序可以做出上述关于自身行为的WHY和HOW问题的回答?
因为程序建立了目标树,WHY和HOW问题就对应于目标树中相应节点的向上和向下。也就是说,如果解决问题的过程中留下了“踪迹”,那么我们就能回答关于自身行为的问题,就能写出可以回答自身行为问题的程序。
上述问题的解决程序其实并不复杂,在实际情况中复杂的原因主要是环境的复杂性。
行为的复杂性=程序复杂性和环境复杂性中的最大值
基于规则的专家系统
1980年代中期,人们热衷于AI的商业应用,当时的很多学术论文认为,人工智能有用的方面都可以用简单的规则表示出来。
ps:叫做“专家”系统是为了营销
以判断一个动物是否是哺乳动物为例,比如规则是这样的:如果有毛就是哺乳动物,if fur then mammal。
前向链系统
我们发现这个动物有毛,所以我们判定它是哺乳动物。
因为是从已知事实向前推出结论所以叫做前向链系统(forward-chain system)。
后向链系统
假设这个动物是哺乳动物,然后我们看它是不是满足有毛的条件。
这样的系统成为后向链系统(backward-chain system)。
无论向前还是向后的系统,都是演绎系统(deduction system),都是建立在严格的证明上的。
知识工程三原则
下述举到的例子为超市装袋。
1.考虑个案
2.考虑看起来相同,但是实际处理方式不同的事物
盒装冻豌豆和罐装鲜切豌豆,我们不喜欢将冷冻豌豆和其他东西放在一起,因为会化冻弄湿其他东西。
3.建立一个系统,看何时会出问题,然后就知道缺什么规则。
事实上这些原则,不仅适用于给基于规则的专家系统添加原则,也适用于自己的学习过程,把自己建立成一个专家系统。
但是这样的系统就足够聪明吗?
Mycin程序在调试时曾经给一个病人开出一桶盘尼西林的药方。这样的系统没有常识,规则和常识之间通常没有关系,比如在超市装袋程序中可以写一条规则,薯片要放在最上面,但是程序不知道薯片放在最上面是因为放在下面会被压碎,而顾客不喜欢吃碎的薯片。
所以说,这样的智能只是一层掩饰,揭开这层掩饰,他们就会失效。