通过向量化和缓存加速NeurASP

arXiv cs.AI 论文

摘要

本文通过实现向量化、批处理和缓存来加速NeurASP神经符号AI框架,在较大任务上实现了多个数量级的提速。

arXiv:2606.10787v1 公告类型:新 摘要:神经符号AI将神经网络与符号程序相结合,生成鲁棒且可解释的预测。其中一种框架是NeurASP,它训练神经网络预测概念,并使用回答集编程(ASP)编写的规则对这些概念进行推理,以解决下游任务。关键在于,标签仅由符号规则产生的下游预测提供,而非潜在概念本身。通过不可微分的ASP组件进行反向传播需要昂贵的概率和梯度计算,这阻碍了其向更复杂任务的可扩展性。在本文中,我们通过向量化、批处理以及训练过程中中间计算的缓存来提升NeurASP的计算性能,从而解决其当前限制。我们比较了原始实现与新实现的计算速度,并报告了在较大任务上多个数量级的提速。为此,我们提出了一个涉及扑克牌的新困难任务数据集,用于测试NeurASP增强学习功能的能力。
查看原文
查看缓存全文

缓存时间: 2026/06/10 06:16

# 利用向量化与缓存加速 NeurASP
来源:https://arxiv.org/html/2606.10787

###### 摘要

神经符号 AI 将神经网络与符号程序相结合,以生成鲁棒且可解释的预测。其中一种框架是 NeurASP,它训练神经网络以预测概念,并使用回答集编程(ASP)编写的规则对这些概念进行推理,从而解决下游任务。关键在于,标签只针对符号规则产生的下游预测提供,而不针对潜在的隐式概念本身。通过不可微分的 ASP 组件进行反向传播需要昂贵的概率和梯度计算,这阻碍了其扩展到更复杂的任务。在本文中,我们通过向量化、批量处理以及训练过程中中间计算结果缓存,提高了计算性能,从而解决了 NeurASP 当前存在的局限性。我们比较了原始 NeurASP 与我们的新实现在计算速度上的差异,并报告了在较大任务上多个数量级的加速。为此,我们提出一个包含涉及扑克牌的困难任务的新数据集,用于测试 NeurASP 增强学习功能的能力。

###### 关键词:

回答集编程,神经符号 AI,NeurASP

## 1 引言

在神经符号人工智能(AI)中,神经网络与符号语言相结合,以发挥两者的优势。神经网络擅长处理现实世界数据,并利用反向传播自主进行学习,而符号规范则具有可解释性,能够进行鲁棒推理并提供安全保障。两者的结合有潜力创建透明、可信且能够解决现实世界问题的框架(Garcez and Lamb 2023 (https://arxiv.org/html/2606.10787#bib.bib1))。

其中一种符号语言是回答集编程(ASP),它属于逻辑编程家族。ASP 由建模复杂问题的规则组成,并使用自动推理来寻找解决方案(Lifschitz 2019 (https://arxiv.org/html/2606.10787#bib.bib2))。由于其表达能力,它成为神经符号系统的一个热门选择。有多种框架以不同方式将神经网络与 ASP 结合起来:有些框架将 ASP 组件硬编码(Aspis et al. 2022 (https://arxiv.org/html/2606.10787#bib.bib6); Skryagin et al. 2024 (https://arxiv.org/html/2606.10787#bib.bib12); Geh et al. 2024 (https://arxiv.org/html/2606.10787#bib.bib13)),另一些则使用预训练网络(例如大型语言模型)来生成 ASP(Cunnington et al. 2024 (https://arxiv.org/html/2606.10787#bib.bib7); Wang et al. 2024 (https://arxiv.org/html/2606.10787#bib.bib19); Kalyanpur et al. 2024 (https://arxiv.org/html/2606.10787#bib.bib20))。框架 NeurASP(Yang et al. 2020 (https://arxiv.org/html/2606.10787#bib.bib3))属于前者。它使用神经网络处理输入数据并预测潜在的隐式概念。一个硬编码的 ASP 规范接收这些概念,并得出下游预测。

在神经符号推理中,通常隐式概念没有标签,只有下游标签可用。为了通过不可微的 ASP 组件反向传播,NeurASP 利用了语义损失(Xu et al. 2017 (https://arxiv.org/html/2606.10787#bib.bib4))。它首先生成所有能够产生正确下游标签的潜在组合,称为回答集。然后,它为每个回答集分配一个概率,并基于它们计算梯度。这三项计算都很昂贵,因此成为 NeurASP 的瓶颈。在一些现有工作中,NeurASP 在应用于更具挑战性的数据集时会出现超时(Aspis et al. 2022 (https://arxiv.org/html/2606.10787#bib.bib6); 2024 (https://arxiv.org/html/2606.10787#bib.bib5); Cunnington et al. 2024 (https://arxiv.org/html/2606.10787#bib.bib7))。

在本文中,我们解决了这些局限性,并对 NeurASP 算法的每一步进行了改进。我们增强后的框架显著加速了学习性能,提高了对更复杂问题的可扩展性。它采用了回答集的缓存,确保每个下游标签只计算一次回答集,并使用向量化操作代替朴素的循环进行概率和梯度计算。为了提高可用性,我们增加了对数据加载器和批量处理、全面的日志记录、用于可重复结果的种子设置以及用于超参数调优的验证集的支持。

我们在合成数据和多种基准任务上运行性能测试。由于现有的神经符号数据集包含简单的感知输入,隐式概念较少,我们引入了“扑克牌算术”这一新的更复杂任务集,使用扑克牌图像。结果表明,与 NeurASP 和 SLASH(Skryagin et al. 2024 (https://arxiv.org/html/2606.10787#bib.bib12))(NeurASP 的一个近期扩展)相比,我们的改进版本实现了多个数量级的速度提升。此外,我们证明了 NeurASP 能够成功解决扑克牌算术任务,即使涉及数十个概念和数万个回答集,也能达到很高的准确率。它优于 Embed2Sym(Aspis et al. 2022 (https://arxiv.org/html/2606.10787#bib.bib6)),后者超时。

本文结构如下:第 2 节 (https://arxiv.org/html/2606.10787#S2) 概述相似于 NeurASP 的神经符号框架。第 3 节 (https://arxiv.org/html/2606.10787#S3) 介绍 ASP 和 NeurASP 的基础知识。第 4 节 (https://arxiv.org/html/2606.10787#S4) 概述我们为改进框架所做的技术增强。第 5 节 (https://arxiv.org/html/2606.10787#S5) 展示在合成数据上的计算时间加速。第 6 节 (https://arxiv.org/html/2606.10787#S6) 描述基准任务并引入扑克牌算术数据集。第 7 节 (https://arxiv.org/html/2606.10787#S7) 呈现 NeurASP 和 Embed2Sym 的准确率结果。第 8 节 (https://arxiv.org/html/2606.10787#S8) 提供结论性意见和开放的研究方向。

## 2 相关工作

在本节中,我们描述该领域中关键的神经符号推理框架。我们首先介绍 NeurASP(Yang et al. 2020 (https://arxiv.org/html/2606.10787#bib.bib3)),因为本文改进的就是这个框架。NeurASP 将神经网络与回答集程序集成,使得网络预测隐式概念,而程序使用这些概念计算下游预测。它采用语义损失(Xu et al. 2017 (https://arxiv.org/html/2606.10787#bib.bib4))将学习信号从下游标签传播到网络,因为隐式标签不可用。框架 SLASH 通过将神经组件替换为概率电路来扩展 NeurASP,可以估计隐式概念更复杂的概率分布(Skryagin et al. 2022 (https://arxiv.org/html/2606.10787#bib.bib8))。进一步的扩展通过在训练期间剪枝不重要的隐式概念来提高 SLASH 的可扩展性(Skryagin et al. 2024 (https://arxiv.org/html/2606.10787#bib.bib12))。我们将与这两个框架比较我们的改进,因为它们具有共同的核心架构。

NeurASP 和 SLASH 属于通过硬编码的回答集程序训练神经网络的神经符号系统。这个类别中的另一个框架是 dPASP,它使得神经谓词可以是区间值的,并且事实可以用概率进行注释(Geh et al. 2024 (https://arxiv.org/html/2606.10787#bib.bib13))。Embed2Sym 使用了一种不同的方法:它首先在下游标签上端到端地训练神经网络,然后利用嵌入空间的聚类来提取隐式概念。ASP 程序用于以最大化下游性能的方式将聚类与概念匹配(Aspis et al. 2022 (https://arxiv.org/html/2606.10787#bib.bib6))。

超越 ASP,还有其他框架以类似方式集成神经和符号知识。DeepProbLog (Manhaeve et al. 2021 (https://arxiv.org/html/2606.10787#bib.bib14)) 扩展了 ProbLog 语言,支持充当概率事实的神经预测。MetaABD (Dai and Muggleton 2021 (https://arxiv.org/html/2606.10787#bib.bib15)) 更进一步,在训练神经网络的同时学习一个确定的逻辑程序。

## 3 预备知识

这里我们介绍全文使用的基本概念。我们概述逻辑语言 ASP 的基础知识,并详细说明 NeurASP 的工作原理。

### 3.1 回答集编程

我们简要说明与本文相关的 ASP 中的所有概念,改编自 Law et al. (2019 (https://arxiv.org/html/2606.10787#bib.bib21))。详细描述请参考 Lifschitz (2019 (https://arxiv.org/html/2606.10787#bib.bib2))。

一个回答集程序由一组规则组成。我们通常处理普通规则,这些规则按以下方式由原子组成:

```
h :- b1,...,bm,not bm+1,...,not bn.
```

其中 `h` 表示头部,`b1,...,bm,not bm+1,...,not bn` 构成规则的体部。符号 `not` 被称为失败即否定,如果其对应的原子无法从程序中的规则推导出来,则为真。

回答集程序 P 的一个解是一个基原子集 I,即不包含变量的原子,并根据 P 的归约定义。I 是 Herbrand 基 `HB_P` 的子集,后者是可以从 P 中的谓词和常量形成的基原子集合。给定这样一个解释 `I ⊆ HB_P`,归约 `P^I` 构建如下:首先,构建 P 的基化。其次,从基化中移除所有包含形式为 `not b`(其中 `b ∈ I`)的原子的规则。第三,移除所有剩余的失败即否定原子。这就得到了一个确定程序,如果 I 使其中的每条规则都为真,则 I 是一个模型。如果 I 是最小的可能模型,则它是最小的。如果 I 是归约 `P^I` 的最小模型,则它是 P 的一个解,并被称为 P 的一个回答集或稳定模型。一个程序可能有多个回答集。

该语言提供了许多便于建模的构造,其中两个与 NeurASP 相关。选择规则的形式为:

```
1 {h1,...,hk} 1 :- b1,...,bm,not bm+1,...,not bn.
```

每当体部成立时,必须恰好有一个头部原子成立。由于头部原子之间存在选择,每个决策都可能创建一个额外的回答集。弱约束提供了回答集的一种排序,其形式为:

```
:~ b1,...,bm,not bm+1,...,not bn. [w@l,t1,...,to]
```

其中 `w` 和 `l` 指定每个约束的权重和可选的优先级,`t1,...,to` 是标识符。最优回答集最小化所有体部为真的弱约束的权重之和,从最高优先级开始。

### 3.2 NeurASP

我们概述 NeurASP 的结构及其学习机制。详细解释请参考 Yang et al. (2020 (https://arxiv.org/html/2606.10787#bib.bib3)) 的原始论文。

NeurASP 以级联方式将神经网络与 ASP 结合:神经网络接收数据并预测隐式概念,这些概念随后被集成到回答集程序中,由求解器处理以生成下游标签。

参见图注

图 1:NeurASP 的推理过程,以 MNIST 加法示例说明。

我们用一个示例任务说明 NeurASP 的工作原理:在 MNIST 加法中,每个数据点包含两张展示手写数字的 MNIST (Deng 2012 (https://arxiv.org/html/2606.10787#bib.bib17)) 图像以及一个表示它们之和的下游标签。关键的是,数字本身的隐式标签不可用,只有它们的和。

NeurASP 的推理过程如图 1 (https://arxiv.org/html/2606.10787#F1) 所示。首先,框架将每张图像通过神经网络,产生预测向量。向量中的每个条目表示一个符号概念,称为神经原子,并被编码为弱约束。概率较高的条目被赋予较低的权重,因此在最小化任务中受到青睐。为了简洁,我们省略了标识符。弱约束被添加到硬编码的回答集程序中,这里计算两个神经原子的和。回答集求解器 Clingo (Gebser et al. 2017 (https://arxiv.org/html/2606.10787#bib.bib18)) 随后计算程序的最优回答集,并从中提取结果。

虽然推理很简单,但训练神经网络预测正确的神经原子却很有挑战性,因为没有提供隐式标签。学习信号必须从下游标签通过不可微分的回答集程序传播到神经网络。NeurASP 通过利用语义损失解决了这一挑战,该损失奖励神经网络所有能够产生正确下游预测的隐式预测(Xu et al. 2017 (https://arxiv.org/html/2606.10787#bib.bib4))。作者将语义损失适配到 ASP,通过计算所有能产生正确下游预测的可能回答集,并训练神经网络去预测这些回答集中存在的概念。这个过程包括三个主要步骤:

1. **回答集计算**:给定一个下游标签,计算所有预测该标签的可能回答集。每个回答集包含一个独特的神经原子组合。
2. **概率计算**:根据回答集中神经原子的神经网络置信度,为每个回答集分配一个概率。
3. **梯度计算**:计算语义损失相对于神经网络输出的梯度,并通过所有参数进行传播。

在详细探讨每一步之前,我们引入必要的符号。令 `Π^asp` 表示硬编码的 ASP 程序,`Π^nn` 表示神经原子集合。一个神经原子 `c` 可以取一个值 `v ∈ {v1, ..., vn}`。概率 `P(c=v)` 由处理输入 `x` 的神经网络 `NN` 输出向量中相应条目给出。`NN` 具有可学习的参数 `θ`。下游标签是一个观察 `O`,一组神经原子值形成解释 `I`。

#### 3.2.1 回答集计算

参见图注

图 2:NeurASP 的学习过程,以 MNIST 加法示例说明。

程序 `Π` 由 `Π^asp`、下游标签 `O` 和神经原子 `Π^nn` 组成。`O` 被编码为一个约束。

相似文章

构建了一个AI加速器并将其开源。[P]

Reddit r/MachineLearning

作者开源了一个在FPGA上实现的自定义AI加速器(atik),原生支持BF16和注意力机制,展示了在各种模型上相比PyTorch的显著加速效果。