Binding Language Models in Symbolic Languages(GPT-3无需训练的神经符号框架)

发表于2023 ICLR顶会:
在这里插入图片描述
讲述GPT-3的codex与符号语言绑定模型,可以无需预训练和微调,有效实现逻辑推理答案生成。

摘要

尽管端到端神经方法最近在性能和易用性方面主导了NLP任务,但它们缺乏可解释性和鲁棒性。我们提出BINDER,这是一种无需训练的神经符号框架,它将任务输入映射到程序,它(1)允许将语言模型(LM)功能的统一API绑定到编程语言(例如SQL, Python),以扩展其语法覆盖范围,从而解决更多样化的问题,(2)采用LM作为程序解析器和API在执行过程中调用的底层模型,并且(3)只需要少量上下文示例注释。具体来说,我们使用GPT-3 Codex作为LM。在解析阶段,Codex仅使用少量上下文示例,就能够识别任务输入中原始编程语言无法回答的部分,正确生成API调用以提示Codex解决无法回答的部分,并在与原始语法兼容的情况下确定API调用的位置。在执行阶段,Codex可以在API调用中给出适当的提示,执行多种功能(例如,常识性QA,信息提取)。BINDER在WIKITABLEQUESTIONS和TABFACT数据集上实现了最先进的结果,具有显式输出程序,有利于人工调试。请注意,以前最好的系统都是在数万个特定于任务的样本上进行微调的,而BINDER只使用几十个注释作为上下文示例,没有经过任何训练。

文章链接:https://arxiv.org/abs/2210.02875
Github:https://github.com/HKUNLP/Binder

方法

  1. 自然语言处理任务的性能由直接将输入映射到输出的神经端到端系统主导。这些端到端方法灵活且易于使用,但缺乏可解释性和健壮性。
  2. 符号方法(symbolic approaches):产生显式的中间表示,如逻辑形式、推理路径或程序代码,然后可能被执行以获得最终输出
  3. Codex:一款基于人工智能的代码自动生成工具,它可以根据用户提供的上下文和提示,自动生成符合语法和语义要求的代码。将问题转换成符号语言的形式。这可以通过描述问题的语义和结构来实现。例如,在SQL中,可以使用SELECT语句来描述查询的字段,FROM语句来描述查询的表,WHERE语句来描述查询的条件等。

->期望一个支持灵活的神经模块调用的神经符号系统(neural-symbolic system),它将使符号语言具有更高的覆盖率,同时只需要很少的注释。

总框图

BINDER的两个阶段概述:解析和执行。
BINDER分为两个阶段概述:解析执行
1、在解析parsing阶段,给定问题和(可选的)知识来源,语言模型(LM)将输入映射到BINDER程序。程序中蓝色背景的表达式是用于获取外部结果的API调用。
2、在执行execute阶段,LM根据提示实现API调用,并将返回值反馈到原始编程语言。确定性程序解释器执行程序时不需要调用API来获得最终答案。

定义符号

这里我自己花了个简易图,分别讲了文章中的D,Q,A的含义,以及输入自然语言Q被解析为BINDER程序Z。将程序中的API调用定义为函数f(Q^; D^) ->GPT-3。该函数接受要回答的问题Q^ 和要查询的上下文D^
简图

解析与执行

我们使用Codex作为语义解析器和模型来执行API调用功能。

  1. 解析阶段:“北美?”是一个plot Q,其对应的上下文为回答Q^ 的D^ 是列Made_in。请注意,Q^ =Q或D^ =D也是有效的(如果相等,则该程序等效于以端到端的方式用LM解决问题)。API调用f的输出是对Q^ 的回答,并且它被表示为与符号语言语法兼容的变量,以便可以执行程序。
  2. 执行阶段:包括词法分析、语法分析和程序评估。
    在词汇和语法分析中,在语法中添加f(Q^ ;D^ )作为新的标识符,并基于该扩展语法将程序解析为抽象语法树(abstract syntax tree,AST)。在程序评估中,通过调用底层神经模型来评估API调用。

这里没太理解,文章后面放了AST的图:
在这里插入图片描述

Binder 上下文学习

  1. {(Qi,Di,Zi)}i=1~k(上下文)和推理示例(Q,D)的上下文示例中,输入为k个例子。k个例子应该平衡问题类型的多样性和模型的最大输入能力之间的权衡

  2. 模型输出是n个候选BINDER程序Z={Z1,…,Zn},其目的是解决推理问题Q。接下来,程序Z由BINDER解释器执行,产生n个答案A={A1,…,An}。

  3. 输出答案A是通过对一组生成的答案A的多数投票策略得出的。

Binder实现

在这里插入图片描述
以图1中的问题“哪种衬衫是北美制造的最畅销的、不含化学物质的衬衫?”为例。Made_in列中的国家名称本身并不能提供足够的信息来指示它们所在的大洲,因此纯SQL无法解决这个问题(使用此表的数据)。然而,(大型)语言模型很容易回答一个国家是否来自北美,这是由标准SQL中列名位置的fcol (" North America? ";Made_in)表达式表示的。类似地,表达式fcol(“No chemicals?”;Shirt)调用一个(大的)语言模型(可以回答),根据Shirt列中的文本细节确定衬衫是否不含化学物质(即在本例中为纯棉)。

当一个(子)问题太复杂或不可行,无法通过使用fcol创建一个中间的新列来解决时,我们转向fval来直接导出答案。例如,考虑到图1中表格上的问题“哪件衬衫最适合正式活动?”,很难将衬衫映射到一个新的“形式值”列,后面跟着一个SQL“ORDER by”子句。因此,表达式将是fval(“最正式的?”;Shirt),它输出一个值作为答案。fval看起来更像端到端QA,有两个重要的区别:(1)它可以使用结果作为值集成到更具组合性的SQL查询中,(2)它输入子表而不是整个表,这可以减轻输入容量的挑战。

实验

数据集

在三个知识基础数据集上评估我们的方法,这些数据集以前都是由端到端方法主导的: WIKITQ 和TABFACT。WIKITQ需要复杂的表推理技能来回答问题。此外,根据SQUALL的说法,大约20%的WIKITQ问题不能用纯SQL回答,要么是因为需要额外的知识,要么是因为SQL语法的覆盖范围有限,这两个问题都是BINDER设计来解决的。TABFACT是一个基于小表的二进制事实验证基准,端到端方法在小表上有很大的优势,但不提供可解释性。

评价指标

评估指标是WIKITQ和TABFACT的 执行精度(EA),遵循这些数据集的通用实践。程序执行可能在语义上是正确的,但不能完全匹配黄金答案——例如,SQL对于是/否问题输出1/0。虽然根据人类的评价,这被认为是正确的,但被精确匹配评估者认为是不正确的。因此,我们在正式的求值器中添加了对WIKITQ中这些语义正确的用例的预匹配检查。为了公平的比较,我们计算所有基线方法的输出,并使用相同的评估器重新评估它们。

表格提示格式
(1)“CREATE TABLE”模式;
(2)表的前三行;
(3)通过BINDER程序对问题Q进行逻辑解析。
此外,我们还添加了row_id和小写的所有表内容,我们发现这将提高Codex解析性能。
作者给出案例:
在这里插入图片描述

对比

我们将Binder方法与之前的三种大型语言模型使用范式进行比较:End-End、Chain-of-Thought和Semantic Parsing/Code Generation语义解析/代码生成。
在这里插入图片描述

  1. 端到端方法的目标是使用大型语言模型直接生成最终答案,通常通过提供任务描述和/或一些用于上下文学习的示例来完成。尽管它足够有效,在大量基准测试中达到最先进的或可比的性能,但它存在不可解释和缺乏健壮性的问题。
  2. 思维链方法通过生成一系列中间推理步骤来提高大型语言模型执行复杂推理的能力。虽然在各种基准测试中取得了巨大的成功,但作为一种模型生成的自然语言,链思维存在不可靠性和不可控性。
  3. 语义解析/代码生成方法的目标是将问题解析为预定义的程序(SQL, Python等),然后通过相应的解释器执行。与端到端和思维链方法相比,它在可解释性和鲁棒性方面具有优势,但仍然受到预定义编程语言的固定语法的影响,使其在覆盖范围上固有的限制。

优势:BINDER是一个神经符号范式,旨在将问题映射到一个程序,该程序允许绑定一个统一的LM API来提供额外的功能。这保持了语义解析方法的可解释性和健壮性,同时解除了语法在覆盖范围上的限制

接下来我直接用做的ppt截图来呈现论文实验部分:
在这里插入图片描述

消融实验

将神经模块API调用绑定到编程语言中可以帮助解决仅用该语言无法解决的查询。

表3:WIKITQ开发集中执行精度的分解。SQUALL数据集用SQL注释的问题表示为程序可解决的问题,其余问题为程序不可解决的问题。

我们注意到,虽然SQL在大约31.2%的无法解决的问题上表现良好,但许多都是偶然得出正确答案的虚假程序。BINDER在很大程度上缓解了这种现象。我们在SQL和BINDER共享的程序不可解集中随机挑选了100个正确的预测,发现BINDER的假预测值比SQL低得多(12%对33%)

BINDER提供的一个重要优势是改进了端到端方法的可解释性,其中显式程序可以帮助人工调试和错误分析。
在这里插入图片描述
表4. WIKITQ开发集中100个示例的错误类型

错误主要在于BINDER的使用(32%,可更正)和语义错误的结构错误(22%)以及不正确的执行(15%,通过更好执行来更正)
例如:利用更强大的lm,使用更好的上下文学习方法,以及注释更多的示例。

在这里插入图片描述

总结

1、提出BINDER,这是一个无需训练的神经符号框架,它将任务输入映射到一个程序,允许绑定一个统一的LM API来实现额外的功能。BINDER旨在结合端到端方法(高覆盖率)和符号方法(高可解释性)的优点。
2、使用Codex作为LM,只需数十个上下文演示,无需额外的培训。(相比之下,现有的最好的系统是在数千个特定任务的训练样本上进行微调,并且可能需要进一步的领域特定的相关信息。)
我们还对BINDER进行了一系列分析,分解性能增益,检查对大输入或噪声输入的鲁棒性,将其应用于多模态知识源,并将其扩展到Python语言。

我们认为BINDER是一种新的、以语言模型为中心的尝试,它集成了NLP中被广泛采用的两种范式:端到端方法和符号方法。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值