整理一些旧文:
专家系统是具有某种专业领域知识并根据知识推理出正确结论的系统,主要有如下特征:
1)可以通过某特殊领域专家的帮助获取相关的知识。
2)知识库具有很强的可维护性
3)利用现有知识推理出有用的结论(不一定准确,视应用场合而定)并具备一定的学习能力
知识库通过何种形式去学习(主动or被动),知识如何表达决定了专家系统的成败,目前的专家系统主要有3类:基于规则,基于模型,基于案例(也可混合使用)
基于规则的专家系统是将大量复杂的“if 。。。else。。。”作为知识表现的形式,它一般由知识库,推理引擎,规则编辑器,用户接口组成。常见的应用场合往往是在企业级系统当中(通常就是BRMS),这其中又主要以电信,金融为主,拿金融领域来说,典型的应用就是信用卡,保险的智能审批,银行个人信用评估等等,这类应用的特点是业务逻辑复杂,可以根据业务需求或商业分析由业务专家变更规则,只要有正确的知识库,那么绝大多数情况下我们可以得到想要的结论。drools是jboss的开源BRMS,功能强大,商业BRMS公司有ilog(已被IBM收购),fair isaac这家公司目前刚刚进驻中国,不过来头不小,客户包括Fortune 500(财富 500 强)前 10 名中的 9 家企业。sandia国家实验室的 jess是基于规则的推理引擎,如果你想所见即所得,just do it youself
基于模型,案例,why,难道一大堆if else不够吗?首先我们应该明确一点,所谓知识的表示并不仅仅只是一堆谓词演算,每个人在大脑中推理结论的时候需要做的不仅仅是搜索出一堆规则然后得到结论而已,我们还需要经验,回忆类似情况发生时某种处理方式的成功率,或者我们需要某种直觉,又或者我们需要参考特定的上下文,这些东西已经超出了规则所能表现的范畴,于是模型,案例出现了,基于模型的应用最著名的应该是NASA的智能太空探测器,将物理模型转化为数据模型来帮助系统作出正确的决策,而基于案例嘛,想想人机对弈,比如samuel不败的西洋跳棋,基于案例的专家系统具备了很强的学习能力。可以想象到,以上的例子如果仅仅使用规则是很难实现的。
专家系统是否具有足够丰富的知识,这是专家系统分析问题能力的关键,也是开发中必须注意的重点。