什么是合一?

2025年5月27日 | 7分钟阅读

合一,涉及对带有变量的定量表达式形式进行通用求解(“形式合一”),是人工智能和符号推理中的核心过程。简单来说,它通过为变量赋值来使各种表达式或术语等效或相等。此外,自然语言理解中的合一在知识表示和逻辑编程等领域显然非常重要,因为这允许人工智能引擎在统一的同时处理、推导、提取和管理松散数据。

合一在人工智能中的作用

自然语言处理 (NLP): NLP 利用合一进行不同的任务,如解析和语义分析。在解析中,合一通过识别单词之间的连接来促进句子的句法和语义结构的构建。这些中的第一个和第二个都允许合一,这对于处理不明确的情况,例如处理模糊的语言结构和确定性代词指代的情况也是必需的。例如,在给定文本中,合一可以确定“他”是特指某个人,而不是其他人。

逻辑编程: 合一是 Prolog 等逻辑编程语言的基本范式之一。合一还用于在逻辑编程中匹配查询谓词和数据库谓词。它允许系统通过将逻辑问题与系统中已存储的事实和规则结合起来得出结论。例如,在 Prolog 程序中,合一有助于检查规则中是否满足给定条件,因此是基于规则推理的关键工具。

符号推理: 在许多逻辑和数学领域,特别是在符号推理和定理证明中,合一用于确定两个逻辑表达式是否相同,或者是否可以通过简单地替换一个或多个变量将第二个表达式转换为第一个表达式。这非常重要,尤其是在命题语句的验证和推理方面。集成是应用基于归结的定理证明技术中的一个重要问题。

语义网和知识表示: 集成在语义网中非常重要,因为它使人们能够连接来自不同来源的不同信息片段。这有助于知识表示,因为不同数据类型被置于同一级别并可互操作。

专家系统: 在专家系统中,合一用于将用户的查询与系统知识库中可用的数据进行转换。此组件通过找出哪些规则或信息适用于给定问题或疑问来简化决策过程。

为什么合一在人工智能中很重要?

提高效率: 集中式人工智能系统不需要为每个任务开发不同的模型,这既耗时又耗费资源。

类人智能: 人类智能不是领域特定的。个体在对话、视觉和逻辑处理之间平稳过渡。总的来说,拥有一个设计得同样流畅的单一系统会更有帮助。

可扩展性: 统一的人工智能系统包含更少的参数,并且由于它们可以很少或不经修改地适应其他任务和问题,因此更具可移植性。

增强协作: 它们汇集了来自多个领域的想法,例如 NLP计算机视觉机器人技术,以在这些领域的接口处实现新的进步。

理解合一

合一是通过找到一个替换来使两个不同的逻辑原子表达式相同的过程。合一依赖于替换过程。

它将两个文字作为输入,并使用替换使它们相同。

设 Ψ1 和 Ψ2 是两个原子语句,并且 ? 是一个合一器,使得 Ψ1? = Ψ2?,那么它可以表示为 UNIFY(Ψ1, Ψ2)。

示例

为 Unify{King(x), King(John)} 找到 MGU

设 Ψ1 = King(x), Ψ2 = King(John),

替换 θ = {John/x} 是这些原子的一个合一器,通过应用此替换,两个表达式将相同。

UNIFY 算法用于合一,它接受两个原子语句并返回这些语句的合一器(如果存在)。

合一是所有一阶推理算法的关键组成部分。

如果表达式彼此不匹配,它将返回失败。

替换变量称为最通用合一器或 MGU。

例如,假设有两个不同的表达式 P(x, y) 和 P(a, f(z))。

在此示例中,我们需要使以上两个语句彼此相同。为此,我们将执行替换。

P(x, y)......... (i)

P(a, f(z))......... (ii)

在第一个表达式中用 a 替换 x,用 f(z) 替换 y,它将表示为 a/x 和 f(z)/y。

通过两次替换,第一个表达式将与第二个表达式相同,替换集将是:[a/x, f(z)/y]。

合一的条件

以下是合一的一些基本条件

  • 谓词符号必须相同;具有不同谓词符号的原子或表达式永远无法合一。
  • 两个表达式中的参数数量必须相同。
  • 如果同一表达式中存在两个相似的变量,则合一将失败。

合一算法

算法:Unify(Ψ1, Ψ2)

步骤 1: 如果 Ψ1 或 Ψ2 是变量或常量,则

a) 如果 Ψ1 或 Ψ2 相同,则返回 NIL。

b) 否则,如果 Ψ1 是变量,

  • 如果 Ψ1 出现在 Ψ2 中,则返回 FAILURE
  • 否则返回 { (Ψ2/ Ψ1)}。

c) 否则,如果 Ψ2 是变量,

  • 如果 Ψ2 出现在 Ψ1 中,则返回 FAILURE,
  • 否则返回 {( Ψ1/ Ψ2)}。

d) 否则返回 FAILURE。

步骤 2: 如果 Ψ1 和 Ψ2 中的初始谓词符号不同,则返回 FAILURE。

步骤 3: 如果 Ψ1 和 Ψ2 的参数数量不同,则返回 FAILURE。

步骤 4: 将替换集 (SUBST) 设置为 NIL。

步骤 5: 对于 i=1 到 Ψ1 中的元素数量。

a) 调用 Unify 函数,使用 Ψ1 的第 i 个元素和 Ψ2 的第 i 个元素,并将结果放入 S。

b) 如果 S = failure 则返回 Failure

c) 如果 S ≠ NIL,则执行,

  • 将 S 应用于 L1 和 L2 的其余部分。
  • SUBST= APPEND(S, SUBST)。

步骤 6: 返回 SUBST。

合一算法的实现

步骤 1: 初始化替换集为空。

步骤 2: 递归合一原子语句

a. 检查相同的表达式匹配。

b. 如果一个表达式是变量 vi,另一个是不包含变量 vi 的项,则

  • 在现有替换中替换 ti / vi
  • 将 ti /vi 添加到替换集列表。
  • 如果两个表达式都是函数,则函数名必须相似,并且两个表达式中的参数数量必须相同。

对于以下每对原子语句,找到最通用合一器(如果存在)。

1. 找到 {p(f(a), g(Y)) 和 p(X, X)} 的 MGU

解:S0 => 在此,Ψ1 = p(f(a), g(Y)),Ψ2 = p(X, X)

SUBST θ= {f(a) / X}

S1 => Ψ1 = p(f(a), g(Y)),Ψ2 = p(f(a), f(a))

SUBST θ= {f(a) / g(y)},合一失败。

这些表达式无法合一。

2. 找到 {p(b, X, f(g(Z))) 和 p(Z, f(Y), f(Y))} 的 MGU

在此,Ψ1 = p(b, X, f(g(Z))),Ψ2 = p(Z, f(Y), f(Y))

S0 => { p(b, X, f(g(Z))); p(Z, f(Y), f(Y))}

SUBST θ={b/Z}

S1 => { p(b, X, f(g(b))); p(b, f(Y), f(Y))}

SUBST θ={f(Y) /X}

S2 => { p(b, f(Y), f(g(b))); p(b, f(Y), f(Y))}

SUBST θ= {g(b) /Y}

S2 => { p(b, f(g(b)), f(g(b)); p(b, f(g(b)), f(g(b))} 成功合一。

合一器 = { b/Z, f(Y) /X , g(b) /Y}。

3. 找到 {p (X, X), 和 p (Z, f(Z))} 的 MGU

在此,Ψ1 = {p (X, X), 和 Ψ2 = p (Z, f(Z))

S0 => {p (X, X), p (Z, f(Z))}

SUBST θ= {X/Z}

S1 => {p (Z, Z), p (Z, f(Z))}

SUBST θ= {f(Z) / Z},合一失败。

4. 找到 UNIFY(prime (11), prime(y)) 的 MGU

在此,Ψ1 = {prime(11) , 和 Ψ2 = prime(y)}

S0 => {prime(11) , prime(y)}

SUBST θ= {11/y}

S1 => {prime(11) , prime(11)},成功合一。

合一器:{11/y}。

5. 找到 Q(a, g(x, a), f(y)), Q(a, g(f(b), a), x)} 的 MGU

在此,Ψ1 = Q(a, g(x, a), f(y)),Ψ2 = Q(a, g(f(b), a), x)

S0 => {Q(a, g(x, a), f(y)); Q(a, g(f(b), a), x)}

SUBST θ= {f(b)/x}

S1 => {Q(a, g(f(b), a), f(y)); Q(a, g(f(b), a), f(b))}

SUBST θ= {b/y}

S1 => {Q(a, g(f(b), a), f(b)); Q(a, g(f(b), a), f(b))},成功合一。

合一器:[a/a, f(b)/x, b/y]。

6. UNIFY(knows(Richard, x), knows(Richard, John))

在此,Ψ1 = knows(Richard, x),Ψ2 = knows(Richard, John)

S0 => { knows(Richard, x); knows(Richard, John)}

SUBST θ= {John/x}

S1 => { knows(Richard, John); knows(Richard, John)},成功合一。

合一器:{John/x}。

合一中的挑战

  • 复杂性: 强制单一模型构建本身就具有挑战性,因为多个 AI 领域具有独特的架构、数据和训练方法。
  • 计算资源: 将不同领域的模型整合起来需要统一的人工智能系统具备大量的计算能力和存储空间。
  • 泛化问题: 这意味着,单一机器学习系统能够出色地完成不同任务的泛化目标仍然难以实现。
  • 偏见和伦理: 随着整合许多人工智能系统的想法,探测器本身可能会变得带有偏见。在集成范式中,伦理问题显得尤为重要。

人工智能中合一的例子

  • OpenAI 的 GPT-4: 合一的又一个进步与 GPT-4 相关,它基于相同的架构执行文本分析、代码编写和会话模型。
  • Google DeepMind 的 Gato: Gato 是一种人工智能模型,设计用于从语言翻译到机器人控制的多种任务,所有这些都在单一架构中实现。
  • 自动驾驶汽车: 为了构建高效的自动驾驶汽车,需要将计算机视觉、决策算法和传感器融合等所有功能作为一个整体连接起来。

结论

人工智能中的合一是一个充满希望的前景,它致力于连接人工智能的不同部分。它对人工智能的未来至关重要,因为它可能会改变我们构建和创建智能系统的方式,以及我们如何使人工智能系统看起来更像人类。然而,我们提出的合一也带来了许多计算和伦理上的困难。由于研究将继续进行,人工智能系统将继续被整合——成为未来技术和更广泛社会的一部分。