2017搜索引擎优化规则(将逻辑规则应用于知识库以推断新信息的系统的一个组成部分)
优采云 发布时间: 2022-01-29 23:002017搜索引擎优化规则(将逻辑规则应用于知识库以推断新信息的系统的一个组成部分)
在人工智能领域,推理引擎是系统的一个组成部分,它将逻辑规则应用于知识库以推断新信息。第一个推理引擎是专家系统的一个组件。典型的专家系统由知识库和推理引擎组成。知识库存储有关世界的事实。推理引擎将逻辑规则应用于知识库并派生新知识。此过程将迭代,因为知识库中的每个新事实都可以触发推理引擎中的其他规则。推理引擎主要工作在两种模式:前向链接和后向链接。前向链从已知事实开始并断言新事实。反向链接从目标开始并向后工作以确定必须断言哪些事实才能实现目标。
建筑学
推理引擎使用的逻辑通常表示为 IF-THEN 规则。这些规则的一般格式是:
如果 那么
如果 那么
在开发专家系统和推理引擎之前,人工智能研究人员专注于更强大的定理证明环境,它提供了更完整的一阶逻辑实现。例如,一个收录一般量词(对于所有 X,该陈述为真)和一个存在量词(有一些 X,该陈述为真)的一般陈述。研究人员发现,这些定理证明了环境的力量也是他们的弱点。创建逻辑表达式非常容易,以至于可能需要一些时间甚至无限时间才能终止。例如,在一般量化中,通常对无限集(例如所有自然数的集合)进行陈述。这样的陈述是完全合理的,甚至在数学证明中也是必需的,但是当收录在计算机上执行的自动定理证明器中时,可能会导致计算机陷入无限循环。专注于 IF-THEN 语句(逻辑学家称之为 Modus Ponens)仍然为开发人员提供了一种非常强大的通用机制来表示逻辑,但可以有效地利用计算资源。此外,一些心理学研究表明,人类在存储复杂知识时也倾向于使用 IF-THEN 表示。
介绍性逻辑书籍中经常使用的一个简单示例是“如果你是人,那么你就是凡人”。这可以用伪代码表示为:
规则1:人类(x) => 凡人(x)
在前向链接中,推理引擎将在知识库中找到与 Human(x) 匹配的任何事实,并且对于找到的每个事实,推理引擎都会将新信息 Mortal(x) 添加到知识库中。因此,如果它发现一个名为苏格拉底的物体是人,它会推断苏格拉底是凡人。
在反向链接中,系统将被赋予一个目标,例如回答问题苏格拉底会死吗?它将搜索知识库并确定苏格拉底是否是人类,如果是,他也将是凡人。然而,在反向链接中,一种常见的技术是将推理引擎与用户界面集成。该系统现在可以是交互式的,而不是简单地以这种方式自动化。在这个小例子中,如果系统的目标是回答苏格拉底是否会死这个问题,而系统还不知道他是不是人类,它会生成一个窗口询问用户“苏格拉底是人类吗?” 然后相应地使用此信息。
这种将推理引擎与用户界面集成的创新导致了专家系统的第二个早期进步:解释能力。将知识明确表示为规则而不是代码可以为用户生成解释。这些解释都是实时的,并有事实支持。如果系统问用户“苏格拉底是人类吗?”,而用户可能想知道她为什么被问到这个问题,系统会使用一系列规则来解释它为什么要确定该知识:即,它需要确定苏格拉底是否是凡人,而获得这种知识就是确定他是否是人。最初,这些解释是通过开发人员在调试任何系统时处理的标准调试技术来询问、理解和生成的,而不是计算机形式的问题和解释。
推理引擎通过三个逐步的步骤循环:匹配规则、选择规则和执行规则。规则的执行通常会导致新的事实或目标被添加到知识库中,从而触发循环的重复。这个循环一直持续到没有新的规则可以匹配。
推理策略
【来源: 】
2. 发展历程
描述
早期的推理引擎专注于前向链接。这些系统通常以 LISP 编程语言实现。Lisp 是 1958 年由麻省理工学院的 John McCarthy 发明的。LISP 是一个早期的 AI 研究平台,因为它具有强大的符号操作能力。此外,作为一种解释性语言,它提供了适合调试复杂程序的开发环境。这些好处的一个必然结果是,LISP 程序往往比当时的编译语言(如 C)更慢,更不健壮。一个典型的做法是构建一个专家系统,将其他专家系统的推荐引擎打包。例如,MYCIN 是一个早期的医学诊断专家系统,EMYCIN 是一个从 MYCIN 打包的推理引擎,供其他研究人员使用。
随着专家系统从研究原型到系统的转变,速度和鲁棒性等问题得到了更多的关注。OPS(据称是“官方生产系统”的缩写)系列是由卡内基梅隆大学的查尔斯·福吉在 1970 年代后期开发的。Allen Newell 的 AI 研究小组已经在生产系统上工作了一段时间,但 Forgy 成功应用了他的 Rete 算法,这种算法特别有效,可以扩展到涉及成百上千条规则的更大问题。作为最早和最流行的前向链接引擎之一,OPS5 使用 Rete 算法来优化规则触发的效率。
另一种非常流行的技术是 Prolog 逻辑编程语言。Prolog 主要关注反向链接,也有各种商业版本和优化,以提高效率和鲁棒性。Prolog 源自一阶逻辑,形式逻辑的一种形式,与许多其他编程语言不同,Prolog 主要用作声明性编程语言:程序逻辑由关系表示,表示为事实和规则。通过对这些关系运行查询来启动计算。该语言最初是在 1970 年代初由法国马赛的一组 Alain Colmerauer 构思的,第一个 Prolog 系统由 Colmerauer 于 1972 年由 Philippe Roussel 开发。
【来源: 】
2001 年,Drools 出来了,基于线性蛮力搜索。Drools是一个业务逻辑集成平台,基于JAVA和RATE算法生产规则引擎实现,是Red Hat的开源产品。在 2.0 版本之后,基于 Rate 算法进行了重写,以提高 Drools 的性能。规则文件主要是 XML。在版本 3.0 中,引入了 .drl 文件格式,这是一种专门为规则编写的域特定语言 (DSL)。5.0版本引入了Drools Funsion/Flow rule等重要功能模块。
NVIDIA TensorRT 是一款高性能神经网络推理 (Inference) 引擎,用于在图像分类、分割和对象检测等生产环境中部署深度学习应用程序,提供最大的推理吞吐量和效率。TensorRT的性能特点、原理结构和使用方法。
由于专家系统引起了商界公司的极大兴趣,许多专家系统是由著名的人工智能研究人员创建或指导的,他们创建了推理引擎的产品化版本。例如,情报最初由 Edward Feigenbaum 领导。这些推理引擎产品通常也是用 LISP 开发的。然而,对更实惠和商业上可行的平台的需求最终使个人计算机平台非常受欢迎。1983 年,Hayes-Roth, F. 撰写了《构建专家系统》。2016 年,Pu, J., Pedram, A., Horowitz, MA, & Dally, WJ 提出“基于压缩深度神经网络的高效推理引擎”,利用深度神经网络有效实现推理引擎,受到广泛关注。
主要活动
年
事件
相关论文
1960
Lisp 由麻省理工学院的约翰·麦卡锡发明
McCarthy, J.(1960)。符号表达式的递归函数及其机器计算,第一部分。ACM 的通信,3(4),184-195.
1983年
Hayes-Roth, F., Waterman, DA 提出如何构建专家系统
Hayes-Roth, F.、Waterman, DA 和 Lenat, DB (1983)。构建专家系统。
2003年
Haarslev, V. 和 Möller, R. 为语义信息网络构建推理引擎
Haarslev, V. 和 Möller, R.(2003 年 10 月)。Racer:语义网的核心推理引擎。在 EON(第 8 卷7)。
2016 年
Han, S.、Liu, X.、Mao, H.,使用深度神经网络有效实现推理引擎
Han, S.、Liu, X.、Mao, H.、Pu, J.、Pedram, A.、Horowitz, MA 和 Dally, WJ(2016 年 6 月)。EIE:压缩深度神经网络的高效推理引擎。在计算机体系结构 (ISCA) 中,2016 ACM/IEEE 第 43 届年度国际研讨会 (pp. 243-254). IEEE。
3. 发展分析
瓶颈
优点:推理机的程序与知识库的具体内容无关,所以知识库的修改不需要改变推理机。
缺点:纯形式推理降低了解决问题的效率。因此,一般采用推理机与知识库相结合的方法。
未来方向
Bengio 在采访中提到了框架:基于深度学习的感知和符号推理引擎连接自然语言,连接符号
“下雨了,人们撑起了雨伞。” 是一种单独存在的语言。几个数字中有两个确定的元素:“是否在下雨”和“是否在打伞”,您可以轻松地将它们从句子中删除并使用它们来构建推理规则。但这种推理与现实世界是孤立的。
上面的照片是单独的表示。虽然一组像素表达了与语言相同的含义,但我们无法挑出代表“下雨”和“撑伞”的像素,更不用说某些像素是像素的另一个原因。我们能做的就是以标签的形式告诉机器,这张图片中有一个非常重要的概念,叫做“下雨”,以这种形式学习到的表示并不能完成推理任务。
“意识先验是将联结主义和象征主义结合起来的粘合剂。象征主义 AI 表达了它对联结主义表示 RNN 的吸引力:我想完成‘人们会在下雨时打开雨伞’。请给我这样的推理变量,而Representation RNN需要自己发现‘下雨’是一个可以从图像中提取来帮助推理的特征,然后学习它。”