人工智能中的一阶逻辑

2025年6月10日 | 阅读 9 分钟

在命题逻辑这一主题中,我们已经了解了如何使用命题逻辑来表示陈述。不幸的是,在命题逻辑中,我们只能表示为真或假的事实。命题逻辑不足以描述复杂的句子或自然语言陈述。命题逻辑的表达能力非常有限。考虑以下句子,我们无法使用命题逻辑来表示:

  • "有些人是聪明的",或者
  • "Sachin喜欢板球。"

为了表示以上陈述,命题逻辑是不够的,因此我们需要更强大的逻辑,例如一阶逻辑。

一阶逻辑

一阶逻辑是人工智能中知识表示的另一种方式。它是命题逻辑的扩展。一阶逻辑具有足够的表达能力,可以简洁地表示自然语言陈述。

它也被称为谓词逻辑或一阶谓词逻辑。一阶逻辑是一种强大的语言,可以更轻松地开发关于对象的信息,并且还可以表达对象之间的关系。

一阶逻辑(与自然语言一样)不仅假定世界包含命题逻辑中的事实,而且还假定世界中的以下事物:

  • 对象: A、B、人、数字、颜色、战争、理论、正方形、陷阱、wumpus,......
  • 关系: 它可以是单元关系,例如红色、圆形、相邻,或 n 元关系,例如姐妹、兄弟、有颜色、夹在中间
  • 函数: 父亲、最好的朋友、第三局、结局,......

与自然语言一样,一阶逻辑也有两个主要部分:

  1. 语法
  2. 语义

一阶逻辑的语法

一阶逻辑的语法决定了哪些符号集合是一阶逻辑中的逻辑表达式。一阶逻辑的基本语法元素是符号。我们在 FOL 中使用简写符号编写陈述。

一阶逻辑的基本元素

以下是一阶逻辑语法中的基本元素:

Constant1、2、A、John、Mumbai、cat,......
变量x、y、z、a、b,......
谓词兄弟、父亲、>,......
函数sqrt、LeftLegOf,......
连接词∧、∨、¬、⇒、⇔
相等==
量词∀、∃

原子句

原子句是一阶逻辑中最基本的句子。这些句子由谓词符号后跟一个括号组成,括号内包含一系列项。我们可以将原子句表示为 谓词 (项1, 项2, ..., 项 n)。

示例

Ravi 和 Ajay 是兄弟:=> Brothers(Ravi, Ajay)。

Chinky 是一只猫:=> cat (Chinky)。

复杂句

复杂句是通过使用连接词组合原子句而成的。

一阶逻辑陈述可分为两部分:

  • 主语: 主语是陈述的主要部分。
  • 谓词: 谓词可以定义为将语句中的两个原子结合在一起的关系。

考虑陈述:“x 是一个整数。” 它由两部分组成:第一部分 x 是陈述的主语,第二部分“是一个整数”称为谓词。

First-Order Logic in Artificial Intelligence

一阶逻辑中的量词

量词是生成量化的语言元素,量化指定论域中的样本数量。这些符号允许确定或识别逻辑表达式中变量的范围和作用域。有两种类型的量词

  1. 全称量词(对于所有、每个人、所有事物)
  2. 存在量词(对于一些、至少一个)。

全称量词

全称量词是一个逻辑表示符号,它指定其范围内的陈述对于某个特定事物的每一个或每一个实例都为真。

全称量词用符号 ∀ 表示,它看起来像一个倒写的 A。

注意:在全称量词中,我们使用蕴涵“→”。

如果 x 是一个变量,则 ∀x 被读作:

  • 对于所有 x
  • 对于每个 x
  • 对于每一个 x

示例

所有男人都喝咖啡。

让变量 x 指代一只猫,则论域中的所有 x 可以表示如下:

First-Order Logic in Artificial Intelligence

∀x man(x) → drink (x, coffee)。

这将读作:存在所有 x,其中 x 是一个喝咖啡的男人。

存在量词

存在量词是一种量词,它表示其范围内的陈述对于某事物的至少一个实例是真的。

它由逻辑运算符 ∃ 表示,它看起来像一个倒写的 E。当它与谓词变量一起使用时,它被称为存在量词。

注意:在存在量词中,我们总是使用 AND 或合取符号 (∧)。

如果 x 是一个变量,则存在量词将是 ∃x 或 ∃(x)。它将被读作:

  • 存在一个“x”。
  • 对于某些“x”。
  • 对于至少一个“x”。

示例

有些男孩很聪明。

First-Order Logic in Artificial Intelligence

这将读作:存在一些 x,其中 x 是一个聪明的男孩。

注意事项

  • 全称量词 **∀** 的主要连接词是蕴涵 **→**。
  • 存在量词 **∃** 的主要连接词是 AND **∧**。

量词的性质

  • 在全称量词中,∀x∀y 类似于 ∀y∀x。
  • 在存在量词中,∃x∃y 类似于 ∃y∃x。
  • ∃x∀y 不类似于 ∀y∃x。

示例

使用量词的一阶逻辑的一些示例

1.所有鸟都会飞

在这个问题中,谓词是“fly(bird)”。

由于所有鸟都会飞,它将表示为:

2.每个男人都尊敬他的父母

在这个问题中,谓词是“respect(x, y)”,其中 x=man,y=parent。

由于有每个男人,所以我们将使用 ∀,它将表示为:

3.有些男孩打板球

在这个问题中,谓词是“play(x, y)”,其中 x=boys,y=game。由于有些男孩,我们将使用 ∃,它将表示为:

4.并非所有学生都喜欢数学和科学

在这个问题中,谓词是“like(x, y)”,其中 x=student,y=subject。

由于并非所有学生都如此,我们将使用 ∀ 否定,因此以下是表示:

5.只有一个学生数学不及格

在这个问题中,谓词是“failed(x, y)”,其中 x=student,y=subject。

由于只有一个学生数学不及格,我们将使用以下表示法:

自由变量和绑定变量

量词与适当出现的变量交互。一阶逻辑中有两种变量,如下所示:

自由变量

如果一个变量出现在量词范围之外,则称该变量为公式中的自由变量。

示例

其中 z 是一个自由变量。

绑定变量

如果一个变量出现在量词的范围内,则称该变量为公式中的绑定变量。

示例

这里,x 和 y 是绑定变量。

一阶逻辑在人工智能中的应用

知识表示和推理

在人工智能中的作用

对于现实世界知识的简单、清晰、逻辑、结构化的表示,一阶逻辑是一个强大的框架。它可以编码关于特定领域实体的关于事实、关系和规则。

示例

知识库中表示的常见关系

  • 事实:Parent(John, Mary)
  • 规则:∀x ∀y (Parent(x, y) → Ancestor(x, y))

推理

它允许从已知事实和规则中推导出结论。例如,如果我们有 Parent(John, Mary) 和上述规则,那么系统就可以推断出 Ancestor(John, Mary)。

用例

创建能够自主做出明智决策的系统——换句话说,例如医学中的诊断系统或金融中的欺诈检测。

自然语言处理(NLP)

在人工智能中的作用

一阶逻辑将自然语言的结构形式化为逻辑表示,因此有助于理解和处理自然语言。

示例

  • 句子:“班上的每个学生都提交了作业。”
  • 逻辑形式:∀x (Student(x) → Submitted(x, Assignment))

应用

  • 语义解析:从自然语言中提取机器可以理解的逻辑。
  • 问答系统:使用一阶逻辑将问题与知识库事实匹配。

用例

一个很好的例子是像 SiriGoogle Assistant 这样的虚拟助手,它们通过一阶逻辑的原理来处理用户查询。

语义网技术

在人工智能中的作用

一阶逻辑用于支撑本体和规则,从而指定 Web 实体之间的关系。

示例

反过来,一阶逻辑通过(尤其是)RDF(资源描述框架)和 OWL(Web 本体语言)本体创建结构化的、机器可读的 Web 内容。

  • 事实:Book(Book1) ∧ Author(Book1, "AuthorName")
  • 规则:∀x (Book(x) → HasPublisher(x, "DefaultPublisher"))

应用

  • 智能搜索引擎:理解概念之间的关系,这将影响搜索。
  • 数据集成:通过逻辑推理合并不同的数据集。

用例

尽管 Google 的知识图谱设置或链接开放数据工作是最突出的应用,但一阶逻辑正被用于有意义的信息检索。

专家系统

在人工智能中的作用: 某个特定领域中的知识以一阶逻辑形式表示,然后通过一阶逻辑中的逻辑推理推断出问题的解决方案。

示例: 医疗诊断专家系统

  • 知识库
    • 事实:Symptom(John, Fever)
    • 规则:∀x (Symptom(x, Fever) ∧ Symptom(x, Cough) → Diagnosis(x, Flu))
  • 推理:如果我们知道事实 Symptom(John, Fever) 和 Symptom(John, Cough),系统将推断出 Diagnosis(John, Flu)。

应用

  • 医疗保健:协助医生进行诊断。
  • 工程:故障排除和系统维护。

用例

一阶逻辑的使用在 MYCIN 中为人所知,MYCIN 是一个著名的早期专家系统,用于诊断细菌感染。

自动定理证明

在人工智能中的作用: 一阶逻辑用于自动化定理证明,以形式化然后证明数学定理或逻辑断言。

示例: 证明一个定理

  • 假设:∀x (P(x) → Q(x))
  • 给定:P(a)
  • 目标:证明 Q(a)
  • 推理:使用分辨率,系统得出 Q(a)。

应用

  • 验证软件的正确性。
  • 数学猜想的形式证明。

用例: 例如,Coq 和 Prover9 使用一阶逻辑来生成自动化证明。

一阶逻辑在人工智能中的局限性

可判定性和计算复杂度

可判定性问题

  • 在谓词逻辑中,我们无法创建有效的测试来确定给定的陈述是否在所有模型中都为真。可以这样说,在一般情况下不存在一个算法可以确定每个一阶陈述的真伪。
  • 例如,一阶逻辑中的一个逻辑问题,如果其结构导致推理循环导致无限循环,则需要无限的时间/资源来解决。

计算复杂性

  • 在某些可能找到解决方案的情况下,解决问题所需的时间可能呈指数级增长,比问题的大小还要差。
  • 随着领域复杂性的增加,任务在时间和内存方面的成本都会增加。

对某些现实世界问题的表达能力

时态和动态方面

  • 关于时态或顺序事物的推理在一阶逻辑中表现不佳。例如,不那么容易说“如果发生事件 A,则事件 B 应在 10 分钟后运行。”
  • 然而,时态推理需要,例如,时态逻辑或高阶逻辑。

连续域

许多现实世界问题涉及连续变量(例如,基于物理的系统和机器学习模型)。这些问题所处的现实世界领域是恒定的;一阶逻辑本身在此处无法很好地工作。

嵌套和自指陈述

一阶逻辑在描述具有自引用或嵌套条件的复杂关系组合时可能很困难(或不可能)。例如,句子“这个陈述是错误的”是一个逻辑悖论。

在表示不确定或概率知识方面的局限性

确定性

另一方面,一阶逻辑是一个确定性的世界,如果你能证明某件事是真的,那么它就是真的;反之亦然,它也是假的。不幸的是,这种二元方法不能应用于不确定性的所有方面,因为许多人工智能应用很容易表现出缺乏歧义和部分真实性。

例如,在医学诊断中,每个症状都会导致几种潜在的疾病,每种疾病的概率不同——这种结构对于一阶逻辑来说太复杂,无法在没有额外机制的情况下表示。

缺乏概率框架

关键的概率推理、机器学习、不确定性下的决策制定等都依赖于它。不幸的是,一阶逻辑本身并不处理概率等概念。

知识表示中的不确定性

例如,在自然语言处理或社会系统中,信息在许多领域中都可能不完整或不确定。然而,当信息是部分、模糊或依赖于解释时,一阶逻辑是不适合的。