网易首页 > 网易号 > 正文 申请入驻

神经符号编程语言2

0
分享至

Neurosymbolic Programming inScallop: Principles and Practice


第五章 基于基础模型的编程

5.1 基础模型与关系

基础模型是在非常大规模的数据集上训练的深度神经网络模型,可以适应各种下游任务(Bommasani等,2021)。基础模型的典型示例包括语言模型(LMs),如GPT(Bubeck等,2023),视觉模型,如Segment Anything(Kirillov等,2023),以及多模态模型,如CLIP(Radford等,2021)。虽然基础模型是一个基本构建块,但它们不足以端到端地编程AI应用程序。例如,语言模型会产生幻觉并生成不真实的主张或错误的推理链(McKenna等,2023)。此外,它们缺乏可靠地整合结构化数据的能力,而结构化数据是现代数据库中的主要数据形式。最后,尽管出现了多模态基础模型(如用于视觉问答的ViLT(Radford等,2021)),但在自定义或复杂模式中组合不同数据模态仍然是一个未解决的问题。

为了克服这些限制,已经提出了各种机制来增强基础模型。例如,PAL(Gao等,2023)、WebGPT(Nakano等,2021)和Toolformer(Schick等,2023)将语言模型与搜索引擎和外部工具连接起来,扩展了它们的信息检索和结构化推理能力。LMQL(Beurer-Kellner等,2022)将语言模型中的纯文本提示推广到包含脚本的领域。在计算机视觉领域,神经符号视觉推理框架(如VisProg(Gupta和Kembhavi,2022))将多种视觉模型与语言模型和图像处理子程序组合在一起。尽管有这些进展,程序员仍然缺乏一个统一的框架来系统地整合这些方法的通用解决方案。

Scallop支持一种声明式框架,用于基于基础模型的编程。在这个框架中,关系构成了与基础模型交互的抽象层。我们的关键见解是,基础模型是具有关系输入和输出的无状态函数。图5.1a展示了一个Scallop程序,该程序调用GPT来提取其名称在结构化表中指定的山脉的高度。同样,图5.1b中的程序使用图像-文本对齐模型CLIP将图像分类为离散标签(如猫和狗)。图5.1c展示了这两个程序的关系输入输出示例。请注意,CLIP模型还输出了允许进行概率推理的概率值。

5.2 可扩展的插件库

诸如OpenAI API和Hugging Face生态系统等Python库表明,Python是与基础模型交互的主要语言。这促使我们开发一个插件库,允许用户在Scallop程序中与他们选择的Python支持的基础模型进行交互。

每个插件通过Scallop与Python的外部接口定义了一组外部属性(FAs)和函数。我们为接口设计的原则有三点:简单性、可配置性和组合性。代码清单5.1展示了一个简洁的FA实现,该实现支持使用图5.1b中所示的CLIP模型。

由于FAs可以包含任意Python代码,插件库通过一系列对AI应用至关重要的实用函数增强了Scallop的原生功能。一些示例包括用于图像编辑、人脸检测模型和思维链提示的插件。插件库的模块化设计使得熟悉Python的用户能够轻松创建和安装自定义插件。

5.3 大型语言模型

文本补全 在Scallop中,像GPT(OpenAI,2023b)和LLaMA(Touvron等,2023)这样的语言模型可以用作文本补全的基本外部谓词(代码清单5.2)。在这种情况下,`gpt`是一个二元FP(外部谓词),它接收`request`(一个字符串作为提示)并生成`response`(一个字符串作为响应)。结果,我们将获得事实`ans("8468000")`。请注意,外部谓词`gpt`默认使用`gpt-3.5-turbo`模型。

为了使接口更具关系性和结构性,我们提供了一个FA(外部属性)来更好地指定提示,如代码清单5.3所示。在这里,我们声明了一个名为`population`的关系,它根据输入的`location`(`loc`)生成人口数量(`num`)。请注意,通过`examples`参数提供了结构化的少样本示例。在底层,外部属性将提示中的`{{loc}}`替换为给定的位置,并调用GPT来填充自由参数`{{num}}`。

考虑代码清单5.4中的Scallop程序。按照上述模式,调用`gpt`时,通过将`{{mountain_name}}`替换为给定的字符串来提示GPT-4(`gpt-4-0613`),并要求它为每座山推断`{{height}}`的值。`examples`中提供的示例修改了GPT-4的提示,如图5.2所示。

请注意,我们提示GPT-4以JSON格式给出答案,因此响应可以转换为关系型Scallop事实,供程序处理。

关系抽取 语言模型可以从自由形式的文本数据中提取结构化的关系知识。为此,我们引入了一个外部属性`gpt_extract_relation`。例如,代码清单5.5中声明的谓词接收一个上下文并生成`(subject, object, relation)`三元组。

此属性与文本补全属性`gpt`的不同之处在于,它可以为多个关系提取任意数量的事实。为了说明这种属性的必要性,考虑BIG-bench基准测试(Srivastava等,2023)中的日期理解任务。在此任务中,模型被给定一个上下文,并要求计算一个MM/DD/YYYY格式的日期。

5.3 大型语言模型

问题:昨天是2019年2月14日。今天的一个月前是什么日期?

答案:01/15/2019

现在假设我们在Scallop中可以访问以下关系:

1. `mentioned_date(label, date)`:`label`是问题上下文中明确提到的日期的字符串标签,`date`是对应的MM/DD/YYYY格式字符串。当提到“圣诞节”等日期时,它将根据LLM所具备的常识知识转换为当年的确切日期。

2. `goal(label)`:`label`是请求作为答案的日期标签,其MM/DD/YYYY格式为答案。

3. `relationship(date_1, date_2, diff)`:前两个参数是与问题相关的一对日期标签,`diff`是日期之间的时间差。

假设上述关系提供了完整且准确的事实,代码清单5.6中的Scallop规则将推导出关系`answer`中的正确日期。基于这一观察,我们可以使用代码清单5.7中由FA `@gpt_extract_relation`注释的规则来定义GPT-4提示,以在执上述规则之前提取代码清单5.8中提到的`mentioned_date`、`goal`和`relationship`三个关系。请注意,根据问题上下文,`mentioned_date`和`relationship`关系中的事实数量可能会有所不同。因此,文本补全属性不足以生成这些关系。

参考代码清单5.7,`prompts`中提供的每个问题(第2-6行)对应于GPT-4应从代码清单5.8中的绑定参数`question`中提取的具有给定类型签名的关系。`examples`中提供的示例(第7-17行)被格式化为消息,并预置到GPT-4的对话历史中,如图5.3所示。最后,参数`cot`(第18行)是一个布尔数组,其中`cot[i]`切换是否应使用零样本思维链(CoT)提示技术(Kojima等,2022)提取第`i`个关系。

现在假设绑定参数`question`的值为:

> Jane于2008年1月5日完成了她的博士学位。今天是10周年纪念日。10天前的日期是什么?

执行代码清单5.7和5.8中的代码后,GPT-4的对话历史如图5.3所示。稍加思考,读者会发现,将代码清单5.6中的规则应用于图5.3中GPT-4生成的关系将得出正确答案:12/26/2017。

这个例子指向了一种使用基础模型进行神经符号编程的通用模式。给定一个问题,我们将其分解为两个子任务。第一个任务是通过像`gpt_extract_relation`这样的FA使用语言模型提取结构化信息。随后是对结构化数据进行逻辑推理和算术运算,这些操作简洁地表示为Scallop的原生关系规则。通过将语言模型的作用限制在关系提取上,我们减轻了模型幻觉的影响,并使关键推理步骤更加稳健和可解释。

5.4 嵌入模型与向量数据库

文本嵌入在执行信息检索等任务时非常有用。在Scallop中,嵌入模型通常被建模为外部谓词。代码清单5.9声明了一个封装交叉编码器(Nogueira和Cho,2019)的FP(外部谓词)。

在第3行中,我们通过对变量`e`进行软连接来计算编码嵌入的余弦相似度。结果,我们获得了一个概率事实,例如`0.9::sim()`,其概率编码了“cat”和“neko”文本嵌入之间的余弦相似度。

这些技术的一个应用是信息检索。例如,考虑HotpotQA(Yang等,2018)中的任务。在这个基于维基百科的问答(QA)数据集中,模型接收一个包含两部分的输入:1)一个问题,以及2)10个维基百科段落作为回答问题的上下文。在这10个维基百科页面中,最多有2个与答案相关,而其他页面则是干扰项。

在代码清单5.10中,我们实现了FE2H(Li等,2022)的改编版本。该方法是一个两阶段过程。首先,我们通过使用`gpt_encoder` FP(第1-2行,第11行)将10个文档嵌入,将其转换为向量数据库。然后,我们使用余弦相似度(通过Scallop内置的`soft_eq`)选择与问题最相关的2个文档(第8-15行),并将其作为上下文提供给GPT-4进行QA(第17-24行)。通过仅检索2个文档,我们生成的上下文本质上比所有10个文档的原始上下文干扰更少。

5.5 视觉与多模态模型

图像分类模型:图像-文本对齐模型,如CLIP(Radford等,2021),自然可以用作零样本图像分类模型。图5.1b展示了`@clip`属性的示例用法。我们还注意到,可以通过谓词中的绑定参数向CLIP提供动态生成的分类标签。

图像分割模型:OWL-ViT(Minderer等,2022)、Segment Anything Model(SAM)(Kirillov等,2023)和Dual-Shot Face Detector(DSFD)(Li等,2018)作为图像分割(IS)和对象定位(LOC)模型被包含在Scallop中。IS和LOC模型可以提供许多输出,例如边界框、分类标签、掩码和裁剪图像。

例如,OWL-ViT模型可以如代码清单5.11所示进行使用和配置。在这里,`find_obj`谓词接收一张图像,并找到包含“人脸”或“火箭”的图像片段。根据参数名称,模型为每个片段提取3个值:ID、标签和裁剪图像。请注意,每个生成的事实都将与一个概率相关联,表示模型的置信度。

图像生成模型 视觉生成模型,如Stable Diffusion(Rombach等,2022)和DALL-E(Ramesh等,2021),也可以被视为关系。

代码清单5.12展示了`gen_image`谓词的声明,它封装了一个扩散模型。从签名中可以看出,它接收一个`String`文本作为输入,并生成一个`Tensor`图像作为输出。可以提供可选参数(例如所需的图像分辨率和推理步骤数)来控制生成图像的粒度。

组合性示例:为了展示Scallop在组合各种模态的基础模型方面的实用性,我们介绍了基于Gupta和Kembhavi(2022)的面部标记任务。在这里,模型接收一张带有描述性自然语言文件名的图像,并需要输出一张编辑后的图像,其中所有与描述相关的面部都用其名称框出。图5.4展示了一个输入输出对的示例。

面部标记的代码如代码清单5.13所示。我们的解决方案从GPT-4中获取一组可能的名称(第5-12行),并从DSFD面部检测模型中获取候选面部(第14-26行)。这些被提供给CLIP进行对象分类(第28-31行),之后通过概率推理过滤出最相关的面部-名称对(第33-37行)。最后,程序调用插件库中的图像编辑外部函数,使用面部-名称对绘制带标题的面部框(代码省略)。

6 高级应用程序

神经符号方法将问题分解为两个核心组件:神经感知和逻辑推理,以同时享受深度学习和传统算法的优势。在现实场景中,Scallop用户可能特别感兴趣的是理解何时以及如何应用这一范式。本节旨在解决这些问题,通过多个复杂任务提供对神经符号方法实际应用的针对性见解。

选择神经和逻辑组件的最佳分割点是有效应用Scallop的基础。当给定一个任务时,可以首先通过纯神经方法设想其解决方案,然后评估如何仅使用逻辑方法来解决。这两种视角可以作为极端基线。接下来,确定一个合适的中间表示,以便无缝提取感知输入并促进高效的神经符号学习方法。

我们列出了3个适用于神经符号范式的任务,并在本章的其余部分展示了这些任务如何改进现有基线性能。由于每个任务的复杂性,我们不会展示端到端的Python和Scallop代码。相反,我们专注于每个应用带来的概念性进展,例如非结构化数据的独特符号表示、特殊的逻辑推理模式和新适应的学习范式。具体来说,我们为每个任务涵盖以下主题:

理解输入数据集:详细检查适合神经符号方法的数据集的性质和结构,为Scallop的有效处理奠定基础。

选择结构化表示:讨论Scallop用于无缝整合逻辑推理与感知数据的中间表示。

神经架构与Scallop程序:我们提供每个任务使用的神经网络架构,并描述这些架构如何集成到Scallop程序中。

性能指标:评估采用神经符号范式带来的改进和效率提升。

6.1 学习亲属关系推理的组合规则

CLUTRR(Sinha等,2019)由亲属关系推理问题组成。给定一个描述家庭日常活动的上下文,目标是推断故事中未明确提及的两个家庭成员之间的关系。

我们在图6.1中展示了一个CLUTRR示例。输入文本是:“Rich的女儿Kelly为她的妹妹Kim做了晚餐。Dorothy去参加她哥哥Rich的生日派对。Anne和她的妹妹Kim一起去购物。”从这段叙述中,我们推断出几个关系:Rich是Dorothy的哥哥,Kelly是Rich的女儿,Kim是Kelly的妹妹,Anne是Kim的妹妹。利用我们的常识知识,我们知道一个人的妹妹的妹妹也是她的妹妹,妹妹的父亲是她的父亲,哥哥的女儿是他的侄女。因此,我们推断Anne是Kelly的妹妹,Rich是Anne的父亲,Dorothy是Anne的姑姑。

CLUTRR数据集中的家庭亲属关系图是合成的,家庭成员的姓名是随机化的。然而,故事中包含的句子是众包的,因此数据集中存在相当程度的自然性。CLUTRR数据集进一步分为不同的难度,以推理链中使用的事实数量 k 来衡量。在训练中,我们仅使用10K个数据点,其中5K个k = 2 ,另外5K个 k = 3 ,这意味着我们只能在具有短推理链的数据上获得监督。另一方面,测试集包含1.1K个示例,。

6.1.1 结构化表示:家庭图

家庭关系的一种自然表示是家庭图,如图6.2所示。家庭图中的节点代表家庭成员,边代表相连的两个家庭成员之间的关系。因此,我们可以以事实的形式表达家庭图。

逻辑规则可以应用于已知事实以推导出新的事实。例如,以下是一个Horn子句,其含义是“如果b是a的兄弟,且c是b的女儿,那么c是a的侄女”:

请注意,上述规则的结构可以通过一个称为“composite”(缩写为`comp`)的高阶逻辑谓词来捕捉。这使我们能够轻松表达许多其他类似结构的规则。例如,我们可以有`comp(brother, daughter, niece)`和`comp(father, mother, grandmother)`。通过这些规则,我们可以基于已知的亲属关系推导出更多事实。事实上,组合规则是亲属关系推理中唯一需要的规则类型。通常,还有许多其他有用的高阶谓词可用于推理知识库,我们在表6.1中列出了这些谓词。

亲属关系推理的逻辑在代码清单6.1中通过Scallop实现。第2行声明了主语、宾语及其关系之间的三元关系`kinship`。第3行声明了`composite`,这是一个关联3个亲属关系的高阶谓词。第7行声明了组合两个现有亲属关系事实以推导新亲属关系事实的规则。

我们注意到,完整性约束也作为逻辑规则包含在内。具体来说,我们包含了一个名为`violate`的一元关系,用于存储布尔值,以基于预定义规则编码完整性违规的可能性。在此应用中,我们选择使用违规(负面)规则而不是完整性(正面)规则,原因有二。首先,它更具模块化,因为多个违规标准可以通过“或”组合在一起,形成更大的违规标准,从而允许将违规规则表示为多个Scallop规则。其次,完整性违规的可能性可以直接用于语义约束损失,我们将在第6.1.2节中介绍。

6.1.2 学习管道

学习管道涉及将用于关系提取的感知模型与符号推理引擎 Scallop 紧密集成,以进行逻辑推理。我们为此特定应用引入了两个附加组件。首先,我们使用语言模型初始化用于逻辑推理的常识知识规则,然后通过端到端管道进一步调整这些规则,从而减少人工干预。其次,我们对提取的关系图和逻辑规则施加完整性约束,以提高语言模型和学习规则的逻辑一致性。基于此设计,我们将方法形式化如下。我们采用预训练的语言模型构建关系提取器,记为 Mθ,它接收自然语言输入 x 并返回一组概率关系符号 r。接着,我们使用一个可微分的演绎推理程序 Pϕ,其中 ϕ 表示学习到的逻辑规则的权重。它接收概率关系符号和查询 q 作为输入,并返回一个在 R 上的分布作为输出 yˆ。总体而言,演绎模型可表示为:

其中,是可调的超参数,用于平衡演绎损失和语义损失。尽管图中显示为两个独立的程序 Pϕ 和 Psl,但在实践中它们共享同一个 Scallop 程序,如代码清单 6.1 所示。我们只需额外配置 Scallop 模块以输出两个关系:answer(用于亲属关系预测)和 violation(用于语义损失)。

6.1.3 关系提取

由于预训练语言模型(LMs)在诸如命名实体识别(NER)和关系提取(RE)等任务中表现出强大的模式识别能力(Tenney 等,2019;Soares 等,2019),我们将其作为 Scallop 中的神经组件。为了确保语言模型接收的字符串长度相似,我们将整个上下文划分为多个窗口。目标是从每个窗口化的上下文中提取每对实体之间的关系。具体来说,我们的关系提取器 Mθ 包含三个组件:

1. 命名实体识别器(NER):用于从输入文本中获取实体;

2. 预训练语言模型:经过微调,将窗口化文本转换为嵌入表示;

3. 分类器:接收实体的嵌入表示并预测它们之间的关系。

参数集 θ 包含语言模型和分类器的参数。

我们假设要分类的关系来自一个有限的关系集合 R。例如,在 CLUTRR(Sinha 等,2019)中,我们有 20 种亲属关系,包括母亲、儿子、叔叔、岳父等。在实践中,我们对每对实体进行 (|R| + 1) 类分类,其中额外的类别表示“不适用”(n/a)。窗口化上下文的划分基于简单的启发式规则:“包含至少两个实体的连续一到三句话”,以解决共指消解问题。窗口化上下文可以重叠,并且我们允许推理模块处理噪声和冗余数据。总体而言,假设上下文 x 中有 m 个窗口,我们提取 mn(n − 1)(|R| + 1) 个概率关系符号。每个符号表示为一个形式为 p(s, o) 的原子,其中 p ∈ R ∪ {n/a} 是关系谓词,s 和 o 是由谓词连接的两个实体。我们将语言模型和关系分类器提取的此类符号的概率表示为 Pr(p(s, o) | θ)。所有这些概率组合形成输出向量。

规则学习 手工编写规则可能成本高昂,甚至无法实现。为了缓解这一问题,Scallop 利用语言模型(LMs)帮助自动提取规则,并进一步利用可微分管道对规则进行微调。每条规则(例如 `comp(r, p, q)`)都附有一个权重,该权重通过提示底层语言模型进行初始化。例如,组合规则 `prob :: comp(r, p, q)` 表示一个人的 `r` 的 `p` 是他们的 `q`。以代码清单 6.2 中的事实为例,这意味着一个人的父亲的父亲总是其祖父(概率为 1.0)。同时,一个人的兄弟的女儿是其侄女的概率为 0.9。

假设关系 `r, p, q ∈ R`,Scallop 会自动从 R 中枚举 `r` 和 `p`,同时查询语言模型以揭示 `q` 的值。语言模型返回一个单词分布,我们将其与 R 取交集。这些概率组合形成初始规则权重 ϕ。这种规则提取策略与归纳逻辑编程中的现有方法不同,因为我们利用语言模型挖掘关于关系的现有知识。

需要注意的是,语言模型在回答此类提示时经常会犯简单的错误。事实上,即使使用上述提示,GPT-3 也只能正确生成 62% 的组合规则。虽然我们可以通过编辑提示来包含少量示例,但在本工作中,我们考虑在可微分推理管道中对这些规则权重 ϕ 进行微调。需要注意的是,需要微调的规则权重数量呈指数级增长。例如,用于亲属关系推理的组合规则有 3 个参数,导致候选规则数量为。

在实践中,我们使用具有不同超参数的两个优化器来更新规则权重 ϕ 和底层模型参数 θ,以考虑优化不同类型的权重。

语义损失与完整性约束 通常,使用弱监督标签进行学习是具有挑战性的,更不用说还需要学习演绎规则。因此,我们在训练过程中引入了一种额外的语义损失。这里的语义损失是通过一组完整性约束推导出来的,这些约束用于正则化预测的实体-关系图以及学习到的逻辑规则。具体来说,我们考虑检测完整性约束违规的规则。例如,“如果 A 是 B 的父亲,那么 B 应该是 A 的儿子或女儿”是关系提取器的一个完整性约束——如果模型预测 A 和 B 之间存在父子关系,那么它也应该预测 B 和 A 之间存在儿子或女儿关系。用一阶逻辑编码,这一约束可以表示为:

这一一阶逻辑公式的违反情况在 Scallop 中被编码为代码清单 6.1 中的第 13-14 行。通过可微分推理,我们评估此类约束被违反的概率,从而得到预期的语义损失。在实践中,可以包含任意数量的约束,尽管过多的交错约束可能会阻碍学习。


6.1.4 实验

实验设置CLUTRR 数据集根据推理链中使用的事实数量 k 划分为不同的难度级别。对于训练集,我们只有 10K 个数据点,其中 5K 个是 k = 2,另外 5K 个是 k = 3,这意味着我们只能在具有短推理链的数据上获得监督。另一方面,测试集包含 1.1K 个示例,k ∈ {2, ..., 10}。我们首先使用 GPT-3 提供的概率初始化所有可能的亲属关系组合规则,并从给定的故事中提取关系。

基线 我们将Scallop与一系列从纯神经网络到逻辑结构化的基线进行了比较。这些基线包括预训练的大型语言模型(BERT(Kenton和Toutanova,2019)和RoBERTa(Liu等人,2019))、非语言模型对应物(BiLSTM(Hochreiter和Schmidhuber,1997;Cho等人,2014)和BERT-LSTM)、结构化模型(GAT(Veličković等人,2018)、RN(Santoro等人,2017)和MAC(Hudson和Manning,2018))以及其他神经符号模型(CTP(Minervini等人,2020b)、RuleBert(Saeed等人,2021))。结构化模型包括具有关系归纳偏置的模型,而神经符号模型则使用逻辑约束。

性能表现 我们在图 6.3 中将 Scallop 的性能与多个基线模型进行了比较,结果显示我们的神经符号解决方案显著优于所有对比的神经基线模型。此外,我们在图 6.2 中展示了从 CLUTRR 实验中学习到的前 20 条规则。所有前 20 条学习到的规则都与我们预期的现实生活中的亲属关系一致。

6.2 场景图像上的视觉问答

在本节中,我们描述了Scallop程序在我们的一项基准应用CLEVR(Johnson等人,2016)中的应用。在图6.4中,我们展示了在CLEVR数据集的一张图像上执行我们所描述的程序的一个具体示例。我们有两个输入,即图像(左侧)和问题(右上角),我们的任务是生成一个答案(右下角)。一般来说,CLEVR数据集中的图像可能包含多达10个基本对象,每个对象都有一组预定义的形状、颜色、材质和大小。有一系列问题,其答案可能是数字(计数问题)、真/假(存在或比较或断言问题)或属性(查询颜色)。

我们将此应用的解决方案分解为三个子任务:a) 从输入图像中提取结构化的场景图,b) 从输入的自然语言(NL)问题中提取可执行的查询程序,以及c) 将两者结合,根据场景图回答问题。在这里,a)和b)需要处理非结构化数据,如图像和自然语言问题,因此可能是神经网络的任务。另一方面,c)可以编程实现且完全是符号化的。我们可以选择让a)和b)中的神经网络都通过我们的端到端管道进行训练。但鉴于GPT-4(OpenAI,2023b)和CLIP(Radford等人,2021)等基础模型的进步,在本节中,我们提出了一种现成的无需训练的解决方案。

接下来,我们将描述如何解决这些子任务中的每一个。

6.2.1 图像到结构化场景图

为了将图像转换为结构化场景图,我们使用了两个视觉模型:OWL-ViT(Minderer 等,2022)和 CLIP(Radford 等,2021)。我们使用 OWL-ViT 获取对象分割,并使用 CLIP 模型对对象属性进行分类。目标是构建包含以下信息的场景图:每个对象的形状、颜色、材料和大小,以及每对对象之间的空间关系。

我们的对象检测谓词定义在代码清单 6.3 中。我们使用 `@owl_vit` 外部属性修饰谓词 `vit_segment_image`。这里,图像有一个绑定参数作为输入图像,并生成由 5 个元组表示的图像分割,包含分割 ID(`id`)、分割后的图像(`cropped_image`)、分割区域面积(`area`)、中心 x 坐标(`bbox_center_x`)和底部 y 坐标(`bbox_bottom_y`)。具体来说,分割后的图像可以传递给下游的图像分类器,面积用于分类对象是大还是小,坐标用于确定对象之间的空间关系。我们在图 6.5 中展示了生成的表格。

需要注意的是,我们传递给 `@owl_vit` 的参数包含预期的标签:cube(立方体)、sphere(球体)和 cylinder(圆柱体)。由于 OWL-ViT 在根据形状分类给定几何对象时表现不佳,我们并未使用它来查询与每个对象关联的标签。相反,这些标签用于标识模型从基础图像中提取的图像分割区域。

我们将 `expand_crop_region` 设置为 10,这会将裁剪图像按给定比例放大。由于对象的边界框较紧,扩大裁剪区域可以帮助后续分类器更好地识别对象。将限制设置为 10 后,OWL-ViT 仅生成 10 个图像分割区域。最后,我们将 `flatten_probability` 设置为 true。这是因为 OWL-ViT 并未在 CLEVR 数据集上进行训练,因此它对所有识别对象的置信度得分非常低。为了避免这些得分影响下游计算,我们将所有对象的概率覆盖为 1。

通过以上设置,我们可以使用外部函数 `$load_image` 加载由图像目录路径指定的图像,然后使用之前定义的 `segment_image` 谓词对图像进行分割。我们的代码如代码清单 6.4 所示。

接下来,我们定义用于形状、颜色、材料和大小分类的分类器。例如,我们利用外部属性 `@clip` 对每个对象分割进行分类,标签为三种可能的形状之一:cube(立方体)、sphere(球体)和 cylinder(圆柱体)(代码清单 6.5)。为了与 CLIP 交互,我们编写了一个提示模板:“a {{}} shaped object”。每个标签用于替换提示中的 `{{}}` 模式,生成诸如“a cube shaped object”之类的短语。然后,这三个提示与对象图像一起传递给 CLIP,并返回带有概率的标签事实。颜色分类器的实现方式类似,如代码清单 6.5 所示。

空间关系(左、右、前、后)是从对象坐标中推导出来的(代码清单 6.6)。我们注意到,这里没有使用神经组件,因为从对象坐标中推导出的空间关系相当精确。将所有内容结合起来,我们生成了 color、shape、material、size 和 relate 等关系,从而构建了图像的场景图。

6.2.2 自然语言问题到程序化查询

我们使用 GPT-4 模型(OpenAI,2023b)将自然语言问题转换为程序化查询。第一步是定义用于查询 CLEVR 数据集的领域特定语言(DSL),如代码清单 6.7 所示。需要注意的是,DSL 由用户定义的代数数据类型(ADT)Query 表示,其中包含获取对象、计数对象、检查对象是否存在甚至比较从多个查询评估中获得的计数的结构。

接下来,我们通过配置一个关系来创建 DSL 的语义解析器,将自然语言问题解析为程序化的 Query,如代码清单 6.8 所示。为此,我们利用了 Scallop 提供的 `@gpt_semantic_parse` 外部属性。除了用于指定调用的 OpenAI 模型的 `model` 参数外,我们还传递了三个主要参数给 `gpt_semantic_parse`,即 `header`、`prompt` 和 `examples`。`prompt` 构成系统提示,而 `examples` 结构则与提示一起扩展为少样本示例。在图 6.6 中,我们展示了一个与 LLM 进行“对话”的具体示例,以将自然语言问题精确解析为 Query。

6.2.3 综合所有内容

将所有内容整合在一起的最后一部分是我们查询DSL的语义,如列表6.7所示。我们可以先将DSL的每个变体视为一个函数。假设我们有Oall = {o1, o2, ... , on}表示场景中所有对象的集合。那么我们有一个任意的对象集合表示为O ∈ P(Oall),其中P是幂集运算。假设O = P(Oall),我们可以为DSL中的一组变体给出以下函数类型和功能语义(见图6.7)。例如,Scene是一个返回场景中所有对象的函数。Count接收一个对象集合并返回该集合的基数。假设我们有形状和颜色等关系谓词,并且它们已经预先填充了场景图中的事实,我们可以使用它们来定义诸如FilterShape和QueryColor这样的函数。其他谓词的定义被省略了,因为它们看起来与我们展示的类似。

不出所料,这些函数的定义都可以转化为关系规则。我们可以定义`eval`,它递归地将每个“函数调用”评估为它们各自的输出。需要注意的是,由于这些函数具有不同的返回类型,我们定义了不同的`eval_*`关系,如代码清单6.9所示。特别是对于`eval_obj`,尽管原始函数返回的是对象集合,但我们可以定义一个关系,将函数与其输出集合中的一个对象关联起来。这种表示在关系编程范式中是自然(且独特)的——它允许我们为每个输出附加概率,而这在传统的函数语义中可能非常难以实现。

在一切设置完成后,我们现在可以开始在Scallop中定义我们的DSL语义(代码清单6.10)。语义是基于查询数据结构归纳定义的。每条规则本质上编码了DSL中一个变体的评估过程。例如,第2行的规则指出,评估`Scene()`会返回任何对象`o`,其中`o`是一个对象。第3-4行的规则处理`FilterShape(e1, s)`查询:它评估子查询`e1`以获取对象`o`,并通过`shape(o, s)`原子进一步限定它,以确保它具有所需的形状。对于处理`count`和`exists`的规则,我们直接使用Scallop中相应的聚合器。需要注意的是,我们使用`where`关键字进行显式的分组操作,以便默认行为是返回0(对于`count`)或`false`(对于`exists`)。

如规则所示,它们的定义相对简洁。需要提醒的是,虽然这些规则看起来与它们的函数式对应物相似,但它们实际上具有底层的概率和可微分语义。因此,图像分割模型和分类器生成的概率可以传播,从而生成答案的概率分布。

6.2.4 评估

我们将我们的方法与另一种无需微调的视觉问答(VQA)模型ViLT-VQA(Kim等,2021)作为基线进行比较。如表6.3所示,在无需微调的设置下,我们的方法在CLEVR数据集上显著优于基线模型。我们注意到,CLEVR数据集需要系统性的组合推理能力,这意味着纯数据驱动的神经模型可能永远无法达到具有符号组件的模型的泛化能力。此外,我们还尝试在其他设置下解决CLEVR问题,例如从头开始训练简单的一元属性和二元关系分类器。在这些实验中,Scallop被用作端到端训练循环中的可微分模块,并取得了95.4%的准确率(Li等,2023)。总的来说,我们得出结论:神经符号方法非常适合解决需要感知和推理的视觉问答任务。

6.3 对齐文本与视频以实现视频检索

由于视频搜索、文本-视频检索、视频问答、视频分割和视频字幕生成等广泛的应用,理解视频语义变得越来越重要。视频语义包含两个关键方面:空间语义,涉及视频中的实体、它们的个体属性及其语义关系;以及时间语义,捕捉随时间演变的动作和属性。例如,图6.8中描述的“用手将盒子从桌子上推下”这一短语涉及“盒子”和“手”等实体,它们通过空间关系“接触”连接。它还包含两个时间上连续的状态:盒子最初“在”桌子上,然后“不在”桌子上方。

为了显式学习空间和时间语义的结合,一种称为时空场景图(STSG)(Shang等,2017;Zhu等,2022)的结构化表示被提出,用于表示视频中的实体关系。现有的从视频数据中学习STSG的方法通常是完全监督的(例如,Nag等,2023;Cong等,2021)。尽管这些方法可以从视频数据中学习高保真的STSG,但由于低层次注释的复杂性,实践中受到很大限制(Yang等,2023)。我们将STSG和STSL结合到一个新颖的框架中,用于学习细粒度的视频表示。特别是,我们在Scallop神经符号框架上实现了STSL及其规范检查器。我们的检查器计算预测的STSG与描述输入视频的STSL规范之间的对齐分数。直观地说,对齐分数表示STSL规范在从视频中提取的STSG上被满足的可能性。我们利用Scallop的端到端可微分推理能力,通过弱监督训练STSG模型。为了提供额外的监督,我们将对比学习、时间跨度监督和语义损失纳入损失函数设计中。此外,由于现有数据集中通常缺乏此类规范,我们设计了一个通用的提示模板,利用像GPT-4(OpenAI等,2024)这样的大型语言模型将任何字幕转换为STSL程序。这使得我们能够利用广泛可用的带字幕的视频数据集来学习细粒度的STSG提取模型。

弱监督成为解决这一挑战的一种有前景的方法。例如,大量可用的视频字幕提供了宝贵的弱监督信号来源。然而,从这种弱监督中有效学习STSG存在关键困难。考虑到字幕提供的信号的稀疏性和噪声,使用字幕是否可行?字幕通常只关注主要对象,忽略底层细节,许多时间信号要么隐藏,要么需要推断。在这种情况下,我们如何提供有用的细粒度信号?为了解决这些挑战,我们提出利用大型语言模型将字幕转换为逻辑规范,以显式揭示隐藏的空间和时间信息。这种转换创建了一个共享基础,可以系统地将字幕与预测的STSG对齐。对齐过程应满足以下要求:a) 捕捉空间和时间上的细微差别,为底层STSG生成器提供细粒度监督;b) 允许视频和字幕数据的多样性、自然性和模糊性;c) 考虑字幕中可能隐含或模糊的常识知识。

我们首先设计了STSL,这是一种通用且富有表现力的时空规范语言,用于指定细粒度的时空属性。STSL基于有限线性时序逻辑(LTLf)(De Giacomo和Vardi,2013),用于描述有限动作和状态轨迹上的时间属性。STSL涵盖了视频-动作对齐任务中常见的动作序列(Chang等,2019),同时捕捉了诸如“直到”(U)和“最终”(♢)等额外的时间细微差别。它还允许表达常识约束以提供额外监督。最后,结合从自然语言中提取的关系谓词(如“正在推下”和“位于上方”),它甚至可以指定视频的开放域空间语义。

我们从问题的高层定义开始。给定一个视频-字幕对的数据集D = {(X, C)},其中X = [x₁, ..., xₙ]是包含n帧的视频,C是描述视频的自然语言字幕。我们希望学习一个神经模型Mθ,它提取一个时空场景图(STSG),即ˆr = Mθ(X),使其符合相应的字幕C。在训练期间,给定损失函数L,我们的目标是最小化以下主要目标:

其中,LLM(C) 是由大型语言模型(LLM)从字幕C生成的STSL公式ψ,而是由我们的时空对齐检查器计算的对齐分数(对齐概率)。我们在图6.8中展示了完整的学习流程,并在本节中详细描述了这一过程。

6.3.1 视频到概率关系数据库

概率时空场景图是一种概率关系数据库,包含两种类型的事实,分别用关系unary_atom和binary_atom表示一元和二元谓词,每个事实都与一个概率相关联,表示该事实为真的可能性。例如,0.05::unary_atom("deformed", 3, e)意味着“实体e在时间戳3时不太可能是变形的”,而0.92::binary_atom("push", 10, h, b)表明“对象h在时间戳10时很可能正在推对象b”。这种灵活的表示支持将一元和二元关键词无缝整合到数据库中。统一的概率数据库使我们的方法能够与模型无关,既支持封闭域STSG分类模型,也支持开放世界视觉 - 语言模型,用于将输入视频数据转换为关系数据库表示。通过统一的形式化,STSG生成器Mθ,由参数θ参数化,接收基于像素的原始视频数据X,并生成STSGs的分布。然后将此分布编码为预测的概率关系数据库,。

6.3.2 时空规范语言

线性时序逻辑(Linear Temporal Logic, LTL)(Pnueli, 1977)是一种扩展了命题逻辑的形式逻辑系统,引入了时间概念。它通常用于正式描述时间事件,并应用于软件验证(Chaki等,2005;Kesten等,1998)和控制(Ding等,2014;Sadigh等,2014)等领域。由于我们处理的是预录制的、有限长度的视频,我们的语言基于LTLf(De Giacomo和Vardi,2013)开发,支持在有限轨迹上进行LTL推理。因此,我们使用LTLf作为指定事件及其时间关系的框架。

我们的STSL(图6.10)通过引入关系谓词和变量进一步扩展了LTLf。它从规范ψ开始,ψ对STSL公式中的变量进行存在量化。公式φ是归纳定义的,其基本元素是形式为a(t₁, ..., tₙ)的关系原子α。注意,项t̄ = {t₁, ..., tₙ}可以包含量化变量,这些变量稍后根据上下文Γ具体化为实体,记作substΓ(t̄)。在此基础上,φ可以使用基本的命题逻辑组件∧(与)、∨(或)和¬(非)构建。系统还包括时间一元运算符□(始终)、♢(最终)、⃝(下一个)以及二元运算符U(直到)(Albers等,2009)。 例如,描述“一只手一直触摸盒子,直到它掉落。”可以表示为STSL公式:

需要注意的是,谓词`drop`的一个参数是通配符(_),因为我们没有指定盒子从何处掉落。这个公式可能看起来过于严格,因为它要求两个事件是连续的。为了使规范更加自然,可以将上述公式修改为“♢(touch(h, b) ∧ ♢drop(b, _))”。在这里,两个事件`touch`和`drop`需要按时间顺序发生,但不需要连续发生。

在代码清单6.11中,我们使用代数数据类型(ADT)定义了STSL。我们将STSL公式分层为时间公式和逻辑公式,以便稍后可以更简洁地实现语义。在时间部分(第6-10行),我们涵盖了STSL支持的所有核心时间操作。在逻辑部分(第14-18行),我们将合取(conjunction)作为唯一的逻辑连接词;否定只能应用于一元或二元原子,这使我们能够定义`NegUnary`和`NegBinary`原子公式。需要注意的是,如果我们允许任意否定,则我们的语义可能会受到非分层否定的影响,导致程序无法被Scallop编译器编译。在第21-23行,我们展示了一个表示公式6.5的示例规范。

6.3.3 从自然语言到时空规范

为了利用丰富的视频字幕作为弱监督信号,我们采用大型语言模型(LLM)从每个视频字幕c中自动提取程序化规范ψ。直接将字幕转换为正式程序对LLM来说尤其具有挑战性,特别是在像STSL这样的低数据语言中。因此,我们使用LLM进行少样本学习,生成字幕的中间结构化表示(JSON格式)。对于每个字幕c,我们的目标是将其转换为一系列事件ē = {e₁, e₂, ..., eₙ}。每个事件包括:(a) 事件的详细自然语言描述,用于指导后续细节的生成;(b) 描述场景语义的一系列一元、二元、肯定和否定谓词;(c) 事件在视频中发生的位置loc(ei),表示为视频长度的分数;(d) 事件的持续时间dur(ei),同样以分数表示。在6.3.5节中,我们将解释如何将这些结构化表示整合到损失函数中。

为了从字幕中提取此类结构化表示,我们设计了一个通用的提示模板,包含以下组件:(a) 分数形式的时间规范示例:“0”、“1/2”、“2/3”、“1”;(b) 场景图关键词,例如对象名称和关系;(c) 字幕与JSON结构化表示对的少样本示例。我们在图6.11中展示了一个字幕及其结构化表示。

然后,通过按顺序对事件进行后处理,生成程序化的时空规范。因此,我们可以将字幕的程序化时空规范ψ生成为按时间顺序排列的事件序列:

6.3.4 时空对齐检查

给定一个编码STSG分布的概率数据库r(§6.3.1)和一个STSL规范ψ,我们的目标是以端到端且可微分的方式测量对齐分数Pr(r |= ψ)。从概念上讲,数据库中的每个概率事实f可以被打开或关闭,从而产生2^|r|个不同的世界。将每个世界(即一个具体的STSG)表示为w ∈ P(r),我们可以检查世界w是否满足规范ψ。由此,对齐分数可以计算为满足ψ的世界的概率之和:

由于指数级的复杂性,枚举所有可能的世界是不可行的。由于Scallop采用了可扩展的算法,我们可以近似计算这一概率,并大大减少概率推理时间。我们还注意到,从P(r)中采样的一些STSG w可能由于涉及冲突事实而不可行(例如,一个盒子同时位于桌子的上方和下方)。为了进一步提高逻辑推理效率,我们扩展了Scallop的“top-k证明”溯源机制,以支持一般的析取约束,并尽早移除不满足规范的不可行STSG。

我们在Scallop中实现了对齐检查器,如代码清单6.13部分所示。这帮助我们简洁而精确地编码STSL的形式语义。它归纳地计算r的时间片段与STSL公式之间的对齐。如果完整的r(从1到m)在具体的变量赋值Γ(将变量映射到具体实体)下满足ψ,则整个规范ψ是对齐的。我们在图6.13中展示了一个简化的评估过程。检查器迭代地将预测的概率事件(简化为仅climb和walk)与规范对齐。在第4次迭代时,得出了3种不同的满足对齐,最终对齐分数为0.58。

在我们的Scallop对齐检查器实现中,我们首先定义了存储STSG的关系(代码清单6.12的第7-9行)。由于在STSG中我们只处理一元和二元关系,因此我们硬编码了两个关系`unary_atom`和`binary_atom`。我们的对齐检查器与之前展示的其他DSL语义的一个重要区别在于,对齐检查器需要约束求解能力,因为规范中包含变量。具体来说,我们需要将每个变量v解析为场景中的具体对象o。这意味着每个变量只能分配给一个对象,形成互斥关系。为此,我们使用Scallop中的聚合器`disjunct`,在标签空间中构建互斥关系,如代码清单6.12的第5行所示。

我们现在展示用于STSL对齐检查器的Scallop代码(代码清单6.13)。从第1-5行开始,我们定义了用于将每个项解析为具体对象的关系。具体来说,当项是变量(Var)时,我们使用代码清单6.12中定义的`var_obj`关系将其解析为对象o。需要注意的是,`var_obj`内部具有互斥性,这意味着如果在单个证明中存在一个变量被分配给两个对象的事实,则该证明将被Scallop的溯源系统拒绝。我们继续定义对齐逻辑公式的规则,这需要对原子中出现的所有项进行解析。至于对齐时间公式,我们处理时间关系。例如,在第21行,对齐时间步骤s的Global公式意味着子公式p1需要在s到n之间的所有时间步骤中对齐。这正是我们在STSL的形式语义中定义的内容(图6.12)。

6.3.5 损失函数

对比学习。规范中不可避免地存在数据集偏差。对比学习可以有效减少偏差并生成更高质量的解释。设(Xᵢ, ψᵢ)和(Xⱼ, ψⱼ)是小批量B中的两个数据点,其中ψᵢ和ψⱼ分别是视频Xᵢ和Xⱼ的规范,已由LLM提取。如果Xᵢ |= ψⱼ,则它是视频Xᵢ的额外正样本,否则它是Xᵢ的负样本。设表示模型预测的STSG的关系数据库为r = Mθ(Xᵢ),我们可以定义对比损失Lc:

时间跨度监督。通过使用LLM将视频字幕扩展为一系列事件,每个事件都被分配了一个特定的时间目标,详细描述了其在视频中的位置和持续时间,如6.3.3节所示。通过将时空规范ψ与视频对齐,我们可以确定其子规范ψ₁, ψ₂, ..., ψₙ何时被满足。这种对齐促进了整个时间跨度上的弱监督。形式上,我们将时间跨度对齐分数σ(s, l, d) ∈ [0, 1]定义为实际时间戳s、预期时间戳l和预期事件持续时间d的函数。特别地,当事件恰好发生在预期位置时(s = l),σ(s, l, d)应达到峰值1。在实践中,我们将σ嵌入到STSG w与原子规范a(t̄)之间的概率对齐计算中,利用LLM提取的预期位置(loc(a))和持续时间(dur(a)):

语义损失。为了提供进一步的监督,我们利用以完整性约束形式编码的人类知识。我们引入了反映违反完整性约束概率的语义损失。例如,视频中的实体不能同时处于打开和关闭状态;不可弯曲的实体不能被变形。这些完整性约束可能交织得非常复杂,以至于很难使用简单的多类分类器来强制执行。我们将所有完整性约束以一阶逻辑规则的形式编码,并由我们的推理引擎生成这些约束被违反的概率。因此,在计算其他损失分量后,我们将语义损失作为一个额外加权项。设n为完整性约束的数量,ICᵢ为第i个完整性约束,我们有:

6.3.6 在OpenPVSG上的评估

数据集。OpenPVSG(Yang等,2023)数据集包含400个视频,来源于Ego4D(Grauman等,2021)、VidOr(Shang等,2019;Thomee等,2016)和EpicKitchen(Damen等,2022;Damen等,2018)。该数据集提供了15万帧的细粒度STSG真实标注,涵盖126个对象类和57个关系类。我们在1,832个视频-字幕对上训练,并在438个视频-STSG对上评估。

实验设置。如图6.9所示,我们的目标是训练一个STSG生成器,能够以带有对象边界框的视频片段作为输入,并预测对象的属性、特征及其之间的关系。我们利用我们的学习管道,通过字幕的弱监督对三个视觉-语言模型——VIOLET(Fu等,2021)、SigLIP(Zhai等,2023)和CLIP(Radford等,2021)——进行微调。这些模型预测裁剪对象与一元谓词关键词之间的相似度分数,以及对象对与二元谓词关键词之间的相似度分数,从而生成概率STSG。所有骨干模型都支持开放世界词汇,因此对GPT-4生成的结构化表示中的模糊性具有鲁棒性。

评估指标。我们使用Recall@k(R@k)评估模型性能,该指标估计真实标签是否在给定模型的前k个预测中。在评估过程中,模型处理(a)对象和关系类的完整词汇表,以及(b)预处理的裁剪对象和对象对,预测相应的概率STSG。具体来说,一元R@k评估对象类别预测能力,而二元R@k评估二元关系的成对预测。与OpenPVSG中结合对象分割、对象分类和关系分类的原始VIOU指标不同,R@k提供了更详细的评估,分别衡量模型识别对象和关系的能力。

骨干模型在算法弱监督后显著改进。我们通过比较微调后骨干模型的性能改进,验证了Scallop在弱监督下学习STSG的有效性。如表6.4所示,我们的方法仅使用字幕作为弱监督,在OpenPVSG数据集上显著提升了骨干模型的性能。

数据效率。为了进一步评估我们方法的数据效率,我们在10%和50%的训练数据集上训练模型。如图6.14所示,即使仅使用10%的训练数据(183个视频-字幕对),我们的方法也将一元R@1从0.1633提高到0.2305,二元R@1从0.0197提高到0.1261。平均而言,仅使用10%的数据即可达到完整数据集性能的70.75%,凸显了我们管道的数据效率。

弱监督可能优于全监督。为了更好地理解弱监督的效果,我们还将它们与全监督方法进行了比较。我们研究了8种全监督基线方法,这些方法采用了两种不同的视频全景分割策略:带跟踪器的图像全景分割(IPS)和视频全景分割(VPS)。对于关系提取,基线方法采用了4种模型架构:(1)Vanilla:全连接层,(2)Filter:手工设计的过滤器,(3)Conv:一维卷积层,以及(4)Trans:Transformer编码器。如表6.5所示,Scallop-CLIP在所有指标上均显著优于最佳的全监督方法,除了二元R@1,在该指标上仅次于表现最佳的VPS-Conv。

七 结论

逻辑推理和深度学习体现了现代编程的两种主流范式。这两种范式本质上是互补的。例如,代码补全任务需要深度学习来从代码上下文中理解程序员的意图,同时需要逻辑推理来确保生成的代码是正确的。因此,人工智能中的一个核心问题是如何通过整合这两种范式来编程此类任务。神经符号编程(Chaudhuri等,2021)是一种新兴的方法,它将符号知识和推理与神经模型相结合,以提高效率、可解释性和泛化能力,优于单独的神经或符号方法。

在本文中,我们介绍了Scallop,这是一种为开发神经符号应用而设计的通用编程语言和框架。Scallop的主要贡献有三方面:丰富且直观的核心语言、可扩展且可配置的溯源框架,以及与神经网络(包括基础模型)的无缝集成。Scallop的关系式和声明式编程范式简化了逻辑推理组件的规范。其基于专用溯源框架的可微分推理模块,支持通过算法监督实现高效的神经符号学习。此外,Scallop的灵活接口提供了对最先进基础模型的访问,增强了其处理需要感知理解和推理的复杂任务的能力。

7.1 局限性

尽管Scallop在图1.2中概述的场景(a)、(b)和(c)中表现出色——在这些场景中,我们可以假设符号组件是已知的——但在学习循环中学习、合成或优化Scallop程序仍然存在挑战。此外,Scallop非常适合定义离散和逻辑规则,但在指定数值属性方面效果较差,这限制了其在机器人低级控制任务中的应用。此外,Scallop基于Datalog的语法在指定需要规划或因果推理的程序时存在困难。当前的溯源框架针对概率和可微分推理组件进行了优化;然而,如何为大型语言模型传播学习信号仍然是一个开放问题。

7.2 未来工作

为了解决这些局限性,我们计划从三个主要方向推进Scallop的发展:

1. 效率。我们旨在通过开发更优化的溯源框架和运行时环境来提升Scallop的性能。具体来说,我们计划改进编译器优化并引入高级运行时存储系统以提高效率。此外,为Scallop实现基于GPU的运行时将使推理引擎能够在GPU上运行,类似于神经组件,从而增强可扩展性和速度。

2. 表达能力。扩展Scallop的语言能力以支持更复杂的概率规范,以及规划、因果和反事实程序,将极大地提高其表达能力。这将需要对Scallop的表面语法和底层语义进行扩展,从而拓宽Scallop能够有效处理的任务范围。

3. 适用性。为了扩大Scallop的适用性,我们计划将其整合到多种机器学习场景中,并在这些背景下进行性能基准测试。通过在机器学习和神经符号学习领域的重点研究,我们旨在使Scallop适应更广泛的任务。最后,我们计划探索在机器人、医疗保健和科学研究等安全关键领域的应用,这不仅将展示Scallop的多功能性,还将推动神经符号人工智能领域的发展。

原文链接:https://www.cis.upenn.edu/~jianih/res/papers/scallop_principles_practice.pdf

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
德黑兰应该听懂中方的示警,不是所有的做法,都能得到中国的支持

德黑兰应该听懂中方的示警,不是所有的做法,都能得到中国的支持

起喜电影
2026-04-03 20:24:05
优思益暴雷后董宇辉惹上麻烦,网友晒订单要求假一赔十

优思益暴雷后董宇辉惹上麻烦,网友晒订单要求假一赔十

映射生活的身影
2026-04-01 23:26:28
万科的雷,终于还是砸下来了

万科的雷,终于还是砸下来了

芳华青年
2026-04-02 19:32:44
伊朗开始收费,中国船只通过霍尔木兹海峡,特朗普让盟友二选一

伊朗开始收费,中国船只通过霍尔木兹海峡,特朗普让盟友二选一

牛锅巴小钒
2026-04-03 20:20:45
美国慌了,日本完了,印度着急了,菲律宾腿抖了

美国慌了,日本完了,印度着急了,菲律宾腿抖了

南权先生
2026-04-03 05:00:03
美国务卿:中国正在经历人类最大规模军力建设,美国打不过中国

美国务卿:中国正在经历人类最大规模军力建设,美国打不过中国

傲傲讲历史
2026-03-27 16:16:47
一脸横肉、满身赘肉,却硬要在剧中演高智老师,网友:真不害臊吗

一脸横肉、满身赘肉,却硬要在剧中演高智老师,网友:真不害臊吗

白面书誏
2026-04-03 14:14:39
厦门市委书记调整

厦门市委书记调整

农民日报
2026-04-03 18:02:53
美股低开高走实现大逆转

美股低开高走实现大逆转

每日经济新闻
2026-04-03 08:09:57
尾盘异动!600302,1分钟涨停!

尾盘异动!600302,1分钟涨停!

证券时报
2026-04-03 17:34:02
日元狂跌,中国为何不伸手?不是不管,是不能也不该!

日元狂跌,中国为何不伸手?不是不管,是不能也不该!

达文西看世界
2026-04-03 17:01:09
刚刚,中纪委通报!大学原党委书记,接受审查调查

刚刚,中纪委通报!大学原党委书记,接受审查调查

TOP大学来了
2026-04-03 22:09:25
董璇陪张维伊回乡给公婆扫墓,本人又白又美又年轻,47看着像37

董璇陪张维伊回乡给公婆扫墓,本人又白又美又年轻,47看着像37

观察鉴娱
2026-04-03 14:12:16
西海岸球迷意难平!不仅因为1-5惨败蓉城,更多是因为以下五点!

西海岸球迷意难平!不仅因为1-5惨败蓉城,更多是因为以下五点!

田先生篮球
2026-04-03 22:11:16
申裕斌晋级八强!三战全零封状态神勇 韩媒:已超上届雪耻成功

申裕斌晋级八强!三战全零封状态神勇 韩媒:已超上届雪耻成功

颜小白的篮球梦
2026-04-03 15:42:04
杨振宁离世5个月,翁帆远赴英国真相曝光,藏21年的秘密瞒不住了

杨振宁离世5个月,翁帆远赴英国真相曝光,藏21年的秘密瞒不住了

离离言几许
2026-03-13 22:38:05
伟大的10-4!赵心童轰5破百淘汰韦克林,创2大纪录,会师希金斯!

伟大的10-4!赵心童轰5破百淘汰韦克林,创2大纪录,会师希金斯!

刘姚尧的文字城堡
2026-04-03 06:32:11
突破美国封锁,俄海军护航10万吨油轮,挺进古巴!特朗普急转变

突破美国封锁,俄海军护航10万吨油轮,挺进古巴!特朗普急转变

爱吃醋的猫咪
2026-04-03 21:59:25
危机四伏!汪小菲马筱梅婚姻亮红灯,产后露原形,能白头偕老很难

危机四伏!汪小菲马筱梅婚姻亮红灯,产后露原形,能白头偕老很难

魔都姐姐杂谈
2026-04-01 19:43:07
王炸级利好!

王炸级利好!

君临财富
2026-04-03 13:57:56
2026-04-03 22:51:00
CreateAMind incentive-icons
CreateAMind
CreateAMind.agi.top
1323文章数 18关注度
往期回顾 全部

科技要闻

5万辆库存车,给了特斯拉一记重拳

头条要闻

伊朗:美飞行员跳伞在伊境内落地 美方曾试图营救未果

头条要闻

伊朗:美飞行员跳伞在伊境内落地 美方曾试图营救未果

体育要闻

被NBA选中20年后,他重新回到篮球场

娱乐要闻

夏克立官宣再婚当爸?否认婚内出轨

财经要闻

专家称长期摄入“飘香剂”存在健康隐患

汽车要闻

你介意和远房亲戚长得很像吗?

态度原创

本地
教育
家居
公开课
军事航空

本地新闻

跟着歌声游安徽,听古村回响

教育要闻

流失中国学生率最多的几所英国大学!

家居要闻

温馨多元 爱的具象化

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

俄国防部:一架苏-30战机在克里米亚坠毁

无障碍浏览 进入关怀版