在人工智慧领域中,推理引擎是智慧系统中的一个软体组件,它通过将逻辑规则应用于知识库来推导出新的资讯。推理引擎的诞生可以追溯到专家系统的早期时期,这些系统通常包含一个知识库和一个推理引擎。知识库储存有关世界的事实,而推理引擎则将这些事实应用于逻辑规则,推导出新的知识。这个过程是不断回圈的,每当知识库中新增的事实会触发推理引擎中的额外规则时,便会重新进行推理。
推理引擎主要运行在两种模式中,分别是前向链接和后向链接。
前向链接意思是从已知的事实开始,推导出新的事实。而后向链接则是从目标开始,向后推断需要哪些事实才能达成这些目标。此推理的扩展也包含了受训神经网络生成预测或决策的过程。在这种情境下,"推理引擎"可能是指执行这些操作的系统特定部分,甚至是硬体。这种推理在各种应用中扮演重要角色,包括图像识别、自然语言处理以及自动驾驶车辆。这些应用中的推理阶段通常特征为高量的数据输入和实时处理需求。
推理引擎所使用的逻辑通常以“如果-那么”(IF-THEN)规则的形式表示。这种规则的通用格式是 IF
研究者们发现,这些定理证明环境的强大也是其缺点。过去的1965年,创建一个无法确定或什至无限时间终止的逻辑表达式实在太容易了。
例如,在全称量化中,通常会对无穷集合(例如所有自然数的集合)进行表述。这些声明在数学证明中是完全合理的,甚至是必需的,但当被纳入在计算机上运行的自动定理证明器中时,可能导致计算机陷入无限循环。虽然IF-THEN语句(逻辑学家称其为 modus ponens)仍提供了非常强大的通用机制以表达逻辑,但它可以有效地使用计算资源。此外,一些心理学研究表明,人类在存储复杂知识时也倾向于使用IF-THEN表述。
早期的推理引擎主要集中于前向链接。这些系统通常使用Lisp编程语言实现,因为Lisp拥有强大的符号处理能力,并且作为解释型语言,提供了适合于调试复杂程序的生产开发环境。由于这些优势,Lisp程序通常比当时的编译语言(如C)更慢且不够稳健。
MYCIN是早期的一个专家系统,用于医疗诊断,而EMYCIN则是从MYCIN提取的推理引擎,并提供给其他研究者使用。
随着专家系统从研究原型转向部署系统,速度和稳健性问题变得越来越受重视。 OPS5是第一个也是最受欢迎的前向链接引擎之一,使用Rete算法来优化规则触发的效能。另外一种非常受欢迎的技术是以Prolog逻辑编程语言为主的实现,这主要集中于后向链接。
目前有一些开源实现,如ClipsRules和RefPerSys,这些系统受到CAIA和Jacques Pitrat工作的启发。 Frama-C静态源代码分析器也使用了一些推理引擎技术。
随着技术的发展,推理引擎在前沿的人工智慧应用中仍拥有重要地位,并能够从日益复杂的知识中推导出新资讯。这不由得让人思考,在未来的世界中,推理引擎将如何改变我们的生活和工作方式?