ULLER:神经符号AI,学习和推理的统一语言

科技   2024-09-12 00:00   上海  

ULLER: A UNIFIED LANGUAGEFOR LEARNING AND REASONING

ULLER:学习和推理的统一语言

https://arxiv.org/pdf/2405.00532

后续相关内容:

AGI雏形,系统1+系统2,Scallop2:神经符号编程语言: 符号、概率、可解释等强化学习等




摘要

神经符号人工智能(NeSy)领域,结合了学习和推理,最近经历了显著的增长。现在有各种各样的NeSy框架,每个框架都有自己特定的语言来表达背景知识以及如何将其与神经网络相关联。这种异构性妨碍了新来者的使用,并使得比较不同的NeSy框架变得具有挑战性。我们提出了一个统一的NeSy语言,我们称之为ULLER,即学习和推理的统一语言。ULLER涵盖了多种设置,同时确保在其中描述的知识可以用于现有的NeSy系统。ULLER具有神经符号一阶语法,我们为其提供了包括经典、模糊和概率逻辑在内的示例语义。我们认为ULLER是使NeSy研究更加易于访问和可比的第一步,为简化跨多种语义、知识库和NeSy系统的训练和评估的库铺平了道路。

1 引言

深度学习在过去十年中推动了许多领域的创新。其背后有许多原因,其中之一是它可以轻松应用于众多问题。最近,神经符号(NeSy)方法(例如,参见[30, 4, 49, 21, 35, 56, 24]),这些方法属于信息机器学习领域的NeSy子领域,[20, 52]通过利用手头问题的背景知识,克服了影响深度学习模型的一些众所周知的问题。例如,知识可以帮助使用更少的数据点和/或不完整的监督来训练模型,创建符合一组要求的模型,并在分布外预测中更具鲁棒性。

然而,背景知识的存在使得获得机器学习(ML)所特有的“无摩擦可复制性”[17]变得更加具有挑战性。事实上,在ML中,共享的数据集和清晰的评估指标允许ML从业者快速开始评估新方法并与现有工作进行比较。为了实现NeSy研究的这一目标,我们也需要知识共享的无摩擦性。当前的NeSy框架都采用不同的方法来编码背景知识:有些使用逻辑语言,如一阶[4, 35]、命题[2, 55, 21]、逻辑编程[30]或答案集编程[56] - 具有各种不同的语法 - 而其他方法使用纯Python程序[14]。见第5节的概述。为了比较不同NeSy系统的性能,研究人员需要用许多不同的语言来指定相同的知识。对于新领域的研究人员来说,这是一个重大障碍,即使对于专家来说,这也是一个耗时且容易出错的任务。

1.0.1 ULLER,学习和推理的统一语言

我们通过提出学习和推理的统一语言(ULLER,发音为“OOH-ler”,类似于北欧神话中的神)来迈出在NeSy领域实现知识无摩擦共享的第一步。ULLER允许我们表达知情机器学习中使用的知识。长期目标是创建一个实现ULLER的Python库,以便在重要的NeSy系统之间共享。首先,用户用ULLER表达知识。然后,他们加载数据,之后用一行代码调用不同的NeSy系统来训练神经网络,或在预测时使用知识。这使得NeSy社区(i)可以定义包含数据和知识的基准,(ii)可以轻松比较这些基准上的现有NeSy系统,以及(iii)可以降低更广泛的机器学习社区进入NeSy研究的门槛。

为了实现上述目标,需要将知识表示的语法与NeSy系统给出的语义解耦。ULLER的语法在第2节中定义,它是围绕一阶逻辑(FOL)的语法糖,具有专门设计的言论绑定。言论简化了撰写函数应用和组合的过程,因此处理数据采样和处理管道。我们选择类似FOL的语法。它概括了命题逻辑,同时是声明一般约束的通用语言。我们将FOL语法适应为机器学习研究人员更熟悉的语法,他们通常习惯于编写类似Python的程序语句,同时对逻辑学家有明确定义的语义。此外,FOL具有高表达性:我们相信它可以表达NeSy方法中目前使用的所有知识。

ULLER的语义(第3节)取决于

(i)一种解释,通常称为“符号接地”[23],它将符号映射到含义,以及

(ii)一个“NeSy系统”,它接受知识和其解释,并相应地计算损失函数和输出。我们通过它们在给定ULLER程序和解释的情况下计算的内容来形式化NeSy系统之间的差异。我们还为几个常见系统提供了示例,如经典逻辑、模糊逻辑(如逻辑张量网络[4])、概率逻辑(如语义损失[55]和DeepProbLog[30])。这突出了我们语言的灵活性,因为它可以用来表达许多形式化体系中的知识。

2 ULLER的语法

设V是一组变量符号,C是一组常量符号,D是一组域符号,P是一组谓词符号,T是一组属性符号,F是一组函数符号。我们然后定义ULLER LULLER的语法为一个上下文无关文法:


2.1 语句

ULLER的一个关键设计选择是使用特殊的语句绑定 x := f(T, ..., T) (F) 来声明通过应用(可能是非确定性的)函数获得的(可能是随机的)变量。函数符号f只出现在语句中,而不出现在术语T的定义中,就像标准FOL中一样。语句简化了函数的组合。它们提供了一种语法,既熟悉于习惯编写Python的机器学习研究人员,又清晰地区分了处理数据的机器学习管道和逻辑对数据的约束。我们将用以下两个例子来说明语句的动机。

例2.1(函数的过程组合)。考虑附录A中的MNISTAdd示例。为了强调在ULLER中组合函数的简便性,考虑一个场景,其中(i)两个MNIST数字总是代表不同的数字,以及(ii)分类器f期望灰度图像,而数据集T中的数据点是RGB图像。我们可以使用ULLER语句轻松应用转换并制定新条件:

例2.2(作用域独立性)。ULLER语句的另一个关键特性是它们明确限定了变量的作用域,从而控制了记忆和独立性假设。考虑一个非确定性函数dice(),它为六面骰子的每种结果关联一个概率。考虑以下用ULLER编写的程序:

这个公式询问一个掷骰子的结果是否既是六点又是偶数。对于一个公平的骰子,在概率语义下,该公式的概率是

现在考虑另一种ULLER程序:

在这个程序中,我们掷两个独立的骰子,并检查第一个是否为六点,第二个是否为偶数。对于公平的骰子,这个公式的概率是

考虑一个在标准FOL中的类似程序(这在ULLER中是不允许的):

在这里,不清楚骰子的结果是否像在(3)中的ULLER程序那样共享,或者像在(4)中那样不共享。许多概率NeSy框架选择第一种选项并记住函数的结果。我们认为这种行为不应该是NeSy系统的默认假设。相反,依赖关系和记忆范围应该由程序明确定义。ULLER语句使研究人员能够控制这些范围。◁

3 ULLER的语义

在本节中,我们定义了ULLER的语义。在3.1节中,我们讨论了ULLER如何解释语言中的符号,例如函数和域符号。然后,在3.2节中,我们讨论了不同的NeSy系统如何解释ULLER中的公式。

3.1 符号的解释

为了给ULLER程序赋予意义,我们需要使用解释函数I来解释LULLER中的非逻辑符号,即D、P、F和C。

我们对域和函数都给出了概率解释。特别地,我们将函数(如神经网络)视为在给定输入变量的条件下的有条件分布。这允许我们表示神经网络的不确定性,使用例如概率和模糊语义的NeSy系统可以利用这些不确定性来计算概率和模糊真值。我们还将经常想要使用常规(确定性的)函数。常规函数是一种特殊的情况,我们称之为确定性函数的有条件分布。我们使用狄拉克δ分布在处为连续分布定义确定性函数,并为有限域分配一个分布,该分布在输出值处分配1,在其他值处分配0。

3.2 神经符号系统语义

接下来,我们定义LULLER中公式的含义,这需要一个解释I和一个NeSy系统JK。在这里,JK是一个函数,它解释LULLER中程序语句的语义。我们还需要一个变量赋值η : V → O,将变量v ∈ V映射到域O = ∪iΩi的一个元素上,其中Ωi = I(Di)是与域Di ∈ D相关联的集合。


3.4 概率语义

概率语义,也称为加权模型计数或可能世界语义,在文献中计算公式为真的概率。这是通过遍历所有可能的变量赋值来完成的。

在接下来的章节中,每当语义与经典语义相等时(除了域的差异),我们不会重新定义语义。例如,我们将不再重复常量和变量的语义。

我们应该注意到,在大多数实际案例中,由于第19条方程中引入的指数递归,更不用说通常难以处理的第20条方程中的积分,概率语义将是难以处理的。我们可以通过将公式编译成表示形式的技术来加速这一过程,在这种表示形式中,计算公式的概率是可行的[8, 11]。概率语义在极限情况下是经典的(见附录C.1),并且与在例如Semantic Loss[55]、SPL[2]和DeepProbLog[30]中使用的标准加权模型计数语义相联系。有关详细信息,请参阅附录D。

我们可以通过考虑带有乘积和求和操作的半环B来推广概率语义到代数模型计数[25, 15]。例如,这允许我们计算公式中变量的最可能赋值,或者使用偶数计算概率语义的梯度。

3.5 模糊语义

模糊语义的设置与概率语义非常相似。两个不同之处在于使用t-范数和t-合取来连接模糊真值,以及从布尔分布中采样的解释。


在方程25的第一个案例中,模糊语义将布尔值域上的分布Ωn+1 = {0, 1}作为一个单一的真值pf (1|T1, ..., Tn)进行操作。第二个案例是为离散的、非布尔值域定义的。模糊语义通过对所有可能的结果a ∈ Ωn+1进行不相交的推理,通过将概率pf (a|T1, ..., Tn) ∈ [0, 1]解释为真值度来实现。然后,这个真值度与公式F的其余部分的解释相结合。直观上,它们询问“是否存在一个a,使得f(T1, ..., Tn)映射到a,并且a验证公式F的其余部分”。我们没有为连续或无限域在模糊语义中给出语义,因为我们不知道神经符号文献中的标准定义。模糊语义在极限情况下是经典的(见附录C.2),并且与可微分模糊逻辑(如逻辑张量网络[48, 4])密切相关(见附录E)。

除了使用t-范数和t-合取作为合取和析取的模糊逻辑,其他如DL2[18]和STL[51]的NeSy框架也可以使用这种语义实现。虽然模糊逻辑作用于[0, 1]中的真值,DL2作用于[−∞, 0]中的真值,STL作用于[−∞, ∞]中的真值。它们选择适当的可微分运算符来实现合取和析取。我们建议读者参考[42]以获取详细信息。


3.6 抽样语义

抽样语义JK_S是对经典语义的简单修改。它从每个条件分布中抽取一个值,并使用该值来评估公式。因此,JK_S与定义3.3中经典语义的唯一区别在于方程15:


在这里,sample是一个(随机)函数,它取一个概率分布,并在分布下从值域Ωn+1中抽取一个值。我们可以重复计算抽样语义

以减少方差,就像在标准的蒙特卡洛方法中一样。这种语义可以与梯度估计方法结合使用,以学习神经网络的参数[39, 50]。在NeSy背景下梯度估计的一个最近实现是CatLog导数技巧[14],但是可以使用任何基于分数函数的估计器(通常称为REINFORCE)[26]。见附录B进行简短讨论。

4 学习和推理

本节描述了如何使用ULLER进行神经符号学习和推理。对于学习设置,我们扩展了解释的定义(定义3.1)到参数化解释。参数化实现允许我们实现具有可学习参数的神经网络。例如,函数model()可以被解释为一个神经网络


为了支持小批量处理,我们将域符号 T 解释为小批量。我们可以轻松地实现这种损失函数的变体。例如,我们可以结合多个公式,并为每个公式赋予不同的权重。注意,对于概率和模糊语义,L(θ) 是可微的,这使得我们能够使用常见的优化器。然而,并不是所有的 NeSy 结构都可以进行优化:这个损失函数只有在语义返回一个有序集合 B 中的值时才有意义,但我们也允许 NeSy 结构返回其他类型的值。

另一种与推理更相关的模式是找到使神经符号系统最大化或最小化的输入 x:

这种策略可以与对抗性学习相结合,首先找到最违反背景知识的输入,然后纠正该输入[34]。

5 相关工作

过去十年见证了允许以符号方式指定神经网络行为知识的神经符号框架的兴起[31]。然而,与ULLER不同,它们通常限于单一语义,通常是概率(第3.4节)或模糊语义(第3.5节)的变体。大多数当前框架使用第3.1节讨论的语法神经谓词结构。DeepProbLog[30]是一种概率逻辑编程语言[12],具有神经谓词。它的语法变体在多个后续工作中使用[13, 53, 28]。Scallop[24]选择将其语言限制为Datalog以提高可扩展性,等等[29]。对于ULLER,我们选择使用表达性强的一阶语言,将可扩展推理留给NeSy系统的实现。其他神经符号框架基于答案集编程[56, 41, 3],关系语言[36, 33, 9],时序逻辑[45]和描述逻辑[54, 43, 44],而逻辑张量网络[4]也基于一阶逻辑,等等[32, 16]。最后,许多常用的神经符号框架限于命题逻辑[55, 2, 27, 10, 21, 18]。

可微分逻辑的逻辑(LDL)[42]定义了一种一阶语言,用于比较几个神经符号框架的形式属性。与ULLER相比,LDL是强类型的,而ULLER是弱类型的,LDL不模拟概率语义。在LDL中,不确定性来自谓词,而不是函数,并且没有像ULLER的语句块这样的语法构造。Pylon[1]是一个与ULLER目标相似的Python库。它也允许表达命题逻辑(CNF)公式,然后可以编译成语义损失或模糊损失函数。然而,由于限于命题语言,Pylon在表达性上受到限制,需要用户手动展开公式。

ULLER也受到概率编程语言[22]的极大启发,如Stan[7],它以高级语言指定概率模型。特别是,ULLER可以被认为是定义在布尔输出上的一阶概率编程语言(FOPPL)[46]。这些布尔输出代表概率模型的条件(观测)。由于是一阶的,该语言限于有有限数量的随机变量。其他以神经网络为中心的FOPPL语言包括Pyro[6]和ProbTorch[40]。这些语言强制执行与ULLER在第3.4节中定义的概率语义相对应的语义。然而,ULLER不强制执行这种语义,还支持例如模糊语义。我们将ULLER与上述概率编程语言之间关系的深入分析留作未来的工作。

其他相关工作试图定义神经符号人工智能的构建块[47]或对现有方法进行分类[38]。我们则专注于一组特定的知情机器学习方法,并开发了一种统一的语言以便与它们进行交流。

6 结论

我们介绍了ULLER,一种学习和推理的统一语言。ULLER是一种为神经符号学习和推理设计的一阶逻辑语言,具有用于约束神经网络的特殊语句语法。我们展示了如何在ULLER中实现常见的模糊和概率语义,从而便于不同NeSy系统之间的比较。对于未来的工作,我们希望将ULLER实现为一个易于使用的Python库,以增加NeSy研究的“无摩擦可复制性”。在这个库中,研究人员可以轻松编写和共享知识,并开发新的NeSy基准。我们还认为这样的库是降低进入NeSy研究门槛的好途径。



CreateAMind
ALLinCreateAMind.AGI.top , 前沿AGI技术探索,论文跟进,复现验证,落地实验。 鼓励新思想的探讨及验证等。 探索比大模型更优的智能模型。
 最新文章