表格推理论文中文阅读资料4 篇译文 · 方法与实验附录 · 证据评析

在符号语言中绑定语言模型

原题:Binding Language Models in Symbolic Languages。作者:Zhoujun Cheng、Tianbao Xie、Peng Shi、Chengzu Li、Rahul Nadkarni、Yushi Hu、Caiming Xiong、Dragomir Radev、Mari Ostendorf、Luke Zettlemoyer、Noah A. Smith、Tao Yu。ICLR 2023;对应 arXiv:2210.02875v2。

来源:论文页面;原始 PDF;官方代码。原文采用 CC BY 4.0。本中文学习译本由 AI 翻译,未经作者审定,保留作者署名与来源;属于对原作的翻译与重新排版。覆盖正文、方法和实验附录,参考文献原文见 references/Binder_references.txt。程序标识符、实验输入与表格实体保留英文。页码指原 PDF;“译注”不属于作者原话。

摘要

端到端神经方法近年来在自然语言处理的性能与易用性方面占据主导地位,但缺乏可解释性与稳健性。我们提出 Binder:一种无需额外训练的神经符号框架,将任务输入映射为程序。它允许把统一的语言模型功能 API 绑定到 SQL、Python 等编程语言,扩展其语法覆盖,以处理更多样的问题;同一个语言模型既充当程序解析器,也实现执行时 API 调用的底层功能;只需少量上下文示例标注。

我们使用 GPT-3 Codex。在解析阶段,Codex 从少量示例学习识别原编程语言无法回答的部分,生成适当 API 调用,让 Codex 处理该部分,并将调用放入与原语法兼容的位置。在执行阶段,通过 API 提示,Codex 完成常识问答、信息抽取等功能。Binder 在 WikiTableQuestions 和 TabFact 上达到当时先进结果,输出的显式程序有助于人工调试。此前最佳系统需要数万条任务样本微调,Binder 只需数十条上下文示例而不再训练模型参数。

1 引言

当前自然语言处理多使用直接把输入映射到输出的端到端神经系统(Devlin et al., 2019;Lewis et al., 2020;Raffel et al., 2020 等)。这种方法灵活、易用,却缺少可解释性与稳健性。符号方法则输出逻辑形式、推理路径或程序等显式中间表示,再通过执行得到答案;这有助于解释结果,对输入变化也更稳健。不过,能处理的语义受到所选符号语言功能的限制,例如表中只有国家名时,纯 SQL 无法直接判断“北美国家”。此外,中间表示的标注需要专家知识与研究人员劳动。

已有神经符号研究尝试结合两者(Andreas et al., 2016;Gupta et al., 2019;Khot et al., 2021;Zhu et al., 2022),但常需为特定任务手工设计语言与神经模块,并依赖大量数据校准。迁移到新领域时,又必须引入新的模块与语言规则。

Binder 将任务映射为绑定统一语言模型 API 的通用程序。借助 Codex 的代码预训练和上下文学习,少量“输入—Binder 程序”示例即可让模型生成调用。API 处理符号语言难以表达的子任务,再由程序解释器使用其结果计算答案。图 1(p.2)用挑选衬衫的例子说明:程序负责按销售额排序,语言模型判断原产地是否在北美,以及产品描述是否符合“无化学材料”等语言条件。图同时展示 SQL 与 Python 形式。

这一框架通过统一提示 API 替代手工定制神经模块,以通用编程语言替代任务专用语言,避免复杂的语言和模块设计。它依赖语言模型已有能力,不进行额外参数训练,也不需要大规模任务标注。

我们在 WikiTableQuestions(WikiTQ)和 TabFact 上验证方法,另在 MultiModalQA 上探索文本、表格与图像的组合推理。Codex-Binder 在主要表格基准上取得当时先进结果。进一步分析表明,提升主要出现在纯 SQL/Python 难以解决的问题上;显式程序有助于定位错误,处理大输入与干扰内容时也更稳定。

2 方法

给定自然语言问题或陈述 Q,以及可选的上下文 D(段落、表格、图像或其组合),任务是输出正确答案 A。表格事实验证中的 Q 是待验证陈述,D 是表格。

2.1 Binder 框架

概述。 根据 (Q,D) 生成可执行 Binder 程序 Z,再由 Binder 解释器执行得到 A。

解析。 Binder 程序是在符号语言表达式中按需加入 API 调用。将调用记为 f(Q̂;D̂):Q̂ 是仅靠原编程语言无法回答的子问题,D̂ 是与之相关的上下文。例如“North America?” 是子问题,Made_in 列是相应上下文。Q̂=Q 或 D̂=D 也合法;两者同时相等时,等价于语言模型端到端回答整个问题。API 返回值必须能作为原符号语言中的合法变量参与后续计算。

执行。 Binder 解释器由标准语言解释器和实现 API 的模型组成。词法与语法分析时,把 f(Q̂;D̂) 加入扩展语法,生成抽象语法树 AST。程序求值时,调用模型处理 API,把结果存为原语言可接受的变量,再由现有解释器完成其他计算。AST 自底向上求值,因此支持嵌套调用,允许不同粒度的任务分解与语言模型组合。语法扩展见附录 A.4。

2.2 Binder 的上下文学习

上下文学习只需少量示例提示,不更新模型参数,可以缓解传统语义解析的标注与训练负担。我们以代码预训练的 GPT-3 Codex 同时实现语义解析和 API 功能。

解析时,插入 API 后的语法不同于原编程语言;Codex 可以从少量上下文示例中学习这种变化。执行时,将 Q̂ 和 D̂ 拼成提示输入 Codex,将其输出存为标准语言变量,继续执行程序。

具体地,输入 k 个示例 {(Qᵢ,Dᵢ,Zᵢ)} 和待推理实例 (Q,D)。示例需平衡问题多样性与输入长度,可人工固定选取,或根据新问题动态检索。模型生成 n 个候选程序 Z₁,…,Zₙ,解释器分别执行得到 n 个答案,最后按执行结果投票。k 和 n 是超参数。

2.3 Binder 的实现

我们以 SQL 和使用 Pandas 的 Python 实现结构化知识推理。核心 API 有两类:fcol(Q̂;D̂) 将一个子表映射为新列,fval(Q̂;D̂) 将子表映射为单个值。列和值都是 SQL/Python 语法可接收的类型,因此可以替代程序中相应位置。

例如“哪件在北美制造且没有化学材料的衬衫最畅销”,Made_in 列只有国家名,需要 fcol("North America?";Made_in) 判断洲别;产品描述需要 fcol("No chemicals?";Shirt) 判断材料条件,其余筛选和排序由程序完成。

若子问题不能方便地转成新列,就用 fval 直接回答。例如“哪件衬衫最适合正式场合”难以先构造一个可靠的“正式程度”列再排序,可以使用 fval("The most formal?";Shirt)。它虽然接近端到端问答,但返回值能继续嵌入更复杂程序,而且只输入相关子表,减轻输入容量压力。

译注:关于“纯程序不能回答”的说法指论文给定的表内容、语言接口和可用知识,不是声称 Python 在计算理论上无法实现这类函数。

3 实验

3.1 实验设置

数据集。 WikiTQ 要求对表格进行复杂推理。按 SQUALL 的 SQL 标注口径,约 20% 问题不能由纯 SQL 解决,涉及额外知识或接口功能不足,正是 Binder 针对的情况。TabFact 是小表格上的二元事实验证任务,端到端方法原有明显性能优势,却缺少程序式解释。多模态扩展另用 MMQA。

评价。 WikiTQ 与 TabFact 使用执行准确率。标准精确匹配可能误判语义正确的程序输出,例如把 SQL 的 1/0 与 yes/no 视为不同。我们在 WikiTQ 官方评测器前加入语义预匹配,并用同一评测器重新评价可获得预测结果的基线。附录给出标准评测器结果。

基线。 包括 TAPEX、OmniTab、TaCube、T5-3B、SASP 等已发表方法,它们通常使用完整训练集,有些还做任务相关预训练。为隔离 Binder 框架的贡献,我们另比较同一 Codex 直接回答问题,以及 Codex 生成标准 SQL 的方式。

实现。 解析与执行均用 code-davinci-002。每个主要表格任务人工标注 14 个 Binder 示例,兼顾问题类型与约 8,000 token 的输入限制。提示使用表结构及前三行。TabFact 的动态检索版本另从训练集建立 200 条程序示例池,通过 vote-k 选择标注样本,再以 SentenceBERT 问题嵌入的最大内积检索相关示例。每分钟 200 次 API 请求的限制下,生成和执行每题 20 个程序时,1,000 题约需六小时。考虑耗时,TabFact 主评测只使用官方 2,000 条小测试集。TabFact 的实际候选数在附录 A.2 中设为 50,不能把上述耗时说明当作所有任务的统一配置。

3.2 主要结果

表 1 WikiTQ 执行准确率(%,p.5,使用作者语义匹配评测器):

方法 开发集 测试集
T5-3B 微调 51.9 50.6
TAPEX 微调 60.4 59.1
TaCube 微调 61.1 61.3
OmniTab 微调 — 63.3
Codex 端到端 50.5 48.7
Codex SQL 60.2 61.1
Codex Binder 65.0 64.6

Binder 超过表中此前最佳结果 1.3 个百分点,只需 14 个程序示例;比同模型纯 SQL 高 3.5 个百分点。Binder 与 SQL 都明显优于直接回答,说明结构化知识推理适合代码生成与执行。进一步分解见第 4.1 节。

表 2 TabFact 官方小测试集准确率(%,p.5):

方法 准确率
SASP 77.0
BART-Large 82.5
T5-3B 85.4
TAPEX 85.9
Codex 端到端 72.6
Codex SQL 80.7
Codex Binder 固定示例 85.1
Codex Binder 加少样本检索 86.0

固定示例 Binder 比 SASP 高 8.1 个百分点,比同模型 SQL 高 4.4 个百分点,比直接回答高 12.5 个百分点。检索版本再提高 0.9 个百分点,略超此前最佳微调模型。检索提升仍有限,如何高效选择上下文示例是开放问题。二分类答案空间较小,符号方法过去通常比端到端方法更吃亏;这里仍有显著改善。此外,Binder 提供便于调试的中间程序,并在大表与噪声测试中显示稳健性。

4 分析

4.1 消融研究

我们重点检验纯编程语言不可解的问题。以 SQUALL 是否提供 SQL 标注划分 WikiTQ 开发集,得到表 3(%,p.6):

方法 程序不可解子集 程序可解子集 全集
T5-3B 37.6 56.0 51.9
TAPEX 33.6 68.0 60.4
TaCube 34.9 68.5 61.1
Codex 端到端 40.3 53.4 50.5
Codex 不输入表格 14.2 11.9 12.4
Codex SQL 31.2 68.4 60.2
Codex Binder 41.3 71.8 65.0

不可解子集上 Binder 比 SQL 高 10.1 个百分点,符合扩展覆盖面的设计动机。纯 SQL 在该子集上仍能答对 31.2%,部分是错误程序偶然返回正确答案。对两种方法共同答对的 100 条样本人工检查,Binder 伪程序比例为 12%,SQL 为 33%。

Binder 在可解子集上也有提升,因为 SQUALL 为执行 SQL 曾手工清洗表格,例如从文本中提取数值;按原始表格运行时,一些被标为“可解”的问题仍有困难。附录 C.4 进一步讨论。Codex 不输入表格只答对 12.4%,作者据此认为模型并未仅凭内部知识拟合该任务;这项实验的解释边界另见评析。

4.2 可解释性

显式程序可以帮助定位错误。我们从 WikiTQ 开发集错误预测中抽取 100 条,约占全部错误的 10%,得到表 4:语法错误 5%;语义错误 64%,其中列/值/操作符错误 10%、程序结构错误 22%、Binder 使用缺失或不当 32%;程序正确但执行错误 15%;标注错误或评测器假阴性 16%。

例如“堪萨斯州立大学第一次以两位数分差获胜是哪一年”,正确答案是 1926。端到端模型回答 1967,却不给出原因。纯 SQL 把含队名与比分的字符串直接相减,无法通过原有功能解决。Binder 使用 API 抽取比分,方向正确,但用了精确匹配 win_team='kansas state',而单元格还含比分,所以返回空。显式程序使错误可定位为需要 LIKE 模糊匹配等修正。作者把系统性评价人工调试成本留待未来研究。

4.3 稳健性

4.3.1 可扩展性。 大型知识源难以完整装进端到端模型输入,而程序能在外部数据上执行。作者随机选择 WikiTQ 开发集 150 条,提示 Codex 将原表扩展到 100、200、500 行,再由两位标注者人工标注问答。超过 Codex 8,000 token 时截断表行。图 2(p.8)显示,直接问答随表规模增大明显下降,Binder 下降较小;该扩展实验中的 Binder 解析输入始终只有前三行。

4.3.2 噪声内容。 另取随机 150 条构建干扰集:用模糊匹配找到相关列与单元格,将相关列中 15% 的单元格替换为 WordNet 中编辑距离近的文本,或原数值±1,再由一名标注者检查问答仍有效。图 3(p.8)显示,Binder 下降约 1.3 个百分点,端到端下降约 6.7 个百分点。

4.4 Binder 扩展

Python。 在 WikiTQ 的 SQL 不可解子集上,Codex Python 为 30.7%,Binder-Python 为 34.4%(表 6,p.8)。Python 与 SQL 都可能缺少外部知识或所需功能,绑定 API 可以扩展覆盖。SQL 整体优于 Python,作者推测 Codex 更熟悉表格到 SQL 的解析,但这仍是推测。

多模态。 在 MMQA 中,先用 OFA 将图像转成说明文字;表格问题生成 SQL 程序,非表格问题针对段落或图像说明调用 fval。使用既有方法检索相关段落和图像。表 7(p.8):

方法 F1 EM
Implicit-Decomp 微调 55.5 48.8
PReasM-Large 微调 65.5 59.0
Codex 端到端 55.4 48.0
Codex Binder 57.1 51.0
Binder 提供正确证据的 oracle 检索 64.5 58.1

结果支持用可执行程序处理多模态知识的可行性;oracle 检索下接近当时最佳系统,提示检索仍是重要瓶颈。

5 相关工作

语义解析。 将自然语言映射为可执行程序一直是符号方法的重要路径,生成中间结构协助求解与解释。在结构化知识上常使用 SQL、SPARQL;也有为文本设计可执行专用语言的研究。代码预训练模型促进了少样本程序生成,但纯符号语法仍受限于功能与知识覆盖。

神经符号方法。 神经模块网络用对应模块软执行生成程序;文本模块网络把复杂任务分成简单问答与计算;BREAK 的 QDMR 表示问题分解。这些方法往往要求精细设计任务函数与神经模块,并通过复杂训练和大量标注适配特定领域。Binder 用统一 API 调用语言模型功能,较容易在保留中间程序的同时处理不同语义,只需数十条基于现有语言的示例,不再额外训练,并兼顾性能、规模、可解释性与噪声稳健性。

6 结论

Binder 是把任务输入映射为程序、允许绑定统一语言模型 API 的免额外训练框架,目标是结合端到端方法的覆盖能力与符号方法的可解释性。使用 Codex 和少量示例,在 WikiTQ 与 TabFact 上取得当时先进结果。本文还分析了性能来源、大表与噪声稳健性、多模态扩展和 Python 实现。随着语言模型能力提升,无额外训练生成并执行这类程序已成为可能;未来可通过合适的编程语言与功能扩展到更多应用,进一步平衡模型能力与可解释性。

7 可复现性

Binder 实验主要基于 OpenAI Codex(code-davinci-002)API。我们在附录 A.1 提供输入提示模板,在 A.2 提供各数据集超参数,在附录 A 提供其他实现细节,并公开源码,以便复现实验。

附录 A 实现细节

A.1 输入提示

提示由任务说明、少量示例和待处理样本组成。表格格式使用 CREATE TABLE 描述结构,再给前三行示例、问题 Q 和 Binder 程序;添加 row_id,表内容转小写。待预测样本的程序留空。附录说明,通常给待预测样本完整表格,太长则减少示例数;大表扩展实验则固定示例数、截断表行。正文关于“输入前三行”与此处条件应一起阅读。

WikiTQ 指令译为:“根据问题和表格生成 SQL,正确回答问题。”例如从任期字符串计算时长再排序。TabFact 指令为:“根据陈述和表格生成 SQL,正确验证陈述。”例如判断地点是否属于英国,再计数并与 8 比较。MMQA 指令为:“根据问题、表格、段落和图像说明生成 SQL,正确回答问题。”例如通过图像中的交叉剑标志识别转出球队,再筛选球员。

端到端问答的提示相近,但示例也必须输入完整表格。作者发现完整表格对端到端问答是必要条件,对语义解析只有小幅帮助。

A.2 Codex 超参数

表 8(p.18):

宽表格可左右滑动查看

阶段与任务 temperature top_p 最大输出 token sampling_n 示例数
解析 WikiTQ 0.4 1.0 512 20 14
解析 TabFact 0.6 1.0 512 50 14
解析 MMQA 0.4 1.0 512 20 18
执行 三种任务 0.0 1.0 1,024 1 8

停止符均为两个换行。解析示例来自训练集或修改后的开发集实例;temperature 平衡保真与多样性。TabFact 输出空间小,作者经验上采用更多、更分散的候选。执行阶段每次只生成一个输出以控制成本;即使 temperature=0,两次推理也可能不完全相同。

执行时的神经映射另有 50 条共享标注示例池,用 BLEU 检索八个示例。输入和输出都使用带行号的表格格式,以免列表输出造成行对齐混乱。示例功能包括从“10080 ft; 3072 m”提取英尺值、根据城市州名判断是否来自 Alabama,以及由赛车手姓名推断国家。图像经 OFA 预转为文字;换用专门 VQA 模型可能更好,因为图像说明与问题无关,而 VQA 可针对问题抽取信息。

A.3 投票策略

通常从候选执行结果中选择出现最多的答案。本文另采用两种加权方式:TabFact 中,作者认为复合陈述的程序有一个小错误就容易返回反驳,因此给支持标签 1 四票、反驳标签 0 一票,称“答案偏置”;WikiTQ 与 MMQA 中,因使用 Binder API 的程序在示例中较少,给这类程序十票,普通程序一票,称“程序偏置”。

A.4 SQL 语法扩展

将 fcol 加入列位置的产生式,将 fval 加入值或函数位置的产生式。扩展后的 AST 与标准 SQL 类似,只是在列或值的位置允许 API 节点。图 4(p.20)展示按衣服纯色、原产地条件筛选后按销量排序的 AST。

A.5 评测器

程序输出可能语义正确却与答案字符串不一致。作者增加两类预匹配:选择题中的 1/0 与选项、yes/no 对应;纯数字与带单位答案对应,例如 4 与“4 years”。日期用 Recognizers 归一化。表 9(p.21)展示:oil pressure 与 oil pressure (56 laps) 的归一化,浮点误差 7.449999999999989 与 7.45,以及布尔值、单位的处理。主实验将可获得输出的基线重新用语义匹配评测。

译注:原示例问“至少 13”却展示 COUNT(component)>13;这不处理恰好 13 的边界,不应将该示例当成无误的语义等价证明。

附录 B 与其他语言模型使用方式的比较

端到端方式直接生成答案,灵活却缺少中间依据;思维链生成自然语言步骤,增强复杂推理但步骤可能不可靠、难控制;语义解析或代码生成通过固定语言执行,有解释和稳健性优势,但受覆盖限制;Binder 在程序中调用语言模型 API,保留中间表示,并通过 API 扩展功能。图 5(p.21)展示四种方式。

附录 C 更多实验

C.1 更多已有系统

表 10(p.22)汇集 WikiTQ 更多已有系统的执行准确率:

方法 开发 测试
Pasupat & Liang(2015) 37.0 37.1
Neelakantan et al.(2015) 34.1 34.2
Zhang et al.(2017) 40.6 43.7
Liang et al.(2018) 42.7 43.8
Dasigi et al.(2019) 43.1 44.3
Agarwal et al.(2019) 43.2 44.1
Wang et al.(2019) 43.7 44.5
Herzig et al.(2020) — 48.8
Xie et al.(2022) 51.9 50.6
Yin et al.(2020) 53.0 52.3
Yu et al.(2020) 51.9 52.7
Guo et al.(2021) 53.6 52.3
Liu et al.(2021) 60.4 59.1
Zhou et al.(2022) 61.1 61.3
Jiang et al.(2022) — 63.3
Codex 端到端 50.5 48.7
Codex SQL 60.2 61.1
Codex Binder 65.3 65.2

原表注明 Xie、Liu、Zhou、Jiang 以及两项 Codex 基线经语义匹配评测器重评;SQL/Binder 属于输出中间程序的符号方法。译注:Binder 的 65.3、65.2 与正文表 1 的 65.0、64.6 不同,原文未在此解释,不能合并。

表 11 重列 TabFact 小测试结果:

方法 小测试准确率
Chen et al.(2019a) 68.1
Zhong et al.(2020) 74.3
Shi et al.(2020a) 74.2
Yang et al.(2020) 76.2
Ou & Liu(2022) 77.0
Liu et al.(2021)BART-Large 82.5
Eisenschlos et al.(2020) 83.9
Xie et al.(2022) 85.4
Liu et al.(2021)TAPEX 85.9
Codex 端到端 72.6
Codex SQL 80.7
Codex Binder 85.1
加少样本检索 86.0

C.2 官方 WikiTQ 评测器

表 12(p.23)使用官方评测器并保留日期归一化:

方法 开发 测试
T5-3B 51.6 50.3
TAPEX 60.1 58.5
TaCube 60.9 60.8
OmniTab — 62.9
Codex 端到端 49.3 47.6
Codex SQL 57.6 55.1
Codex Binder 62.6 61.9

符号方法在官方评测器下下降更明显,因为布尔答案和单位差异更易被判错。译注:官方口径下 Binder 高于同模型 SQL,却低于 OmniTab;因此“最佳结果”必须附带所用评测器。

C.3 候选数

图 6、7(p.23)显示,增加候选并投票可提升 WikiTQ 与 TabFact,二分类 TabFact 需要更多候选。WikiTQ 尚未尝试超过 20 个候选,作者认为仍可能继续提升。

C.4 SQL 不可解比例复查

SQUALL 曾归一化部分表格,导致可解划分与原表情况不同。作者重新执行 SQL 并检查答案,得到不可解 1,251 条(44.19%)、可解 1,580 条(55.81%);原先划分为 625 条(22.08%)与 2,206 条(77.92%)。人工清洗会减轻内容噪声,也可能低估原始表格挑战。作者计划公开新划分。

附录 D 扩展到新领域

第一,按领域选择中间语言:表格用 SQL,知识图谱可用 SPARQL/Cypher,跨领域可用 Python/Lisp/Java。第二,标注少量插有 API 的 Binder 示例;也可建立更大的例子池动态检索。第三,提示 Codex 生成程序,按任务调整超参数。第四,将 API 绑定到能完成目标功能的模型;语言模型不足时可用专门 VQA 等模型。第五,联合确定性解释器与神经模型执行。

附录 E 错误分析

语法错误是违反 Binder 语法;语义错误包括错列或漏列约束、错值或精确/模糊匹配混淆、错操作符或漏条件、整体结构误解,以及需要 Binder 却未调用或调用问题含糊。执行错误指程序方向正确,但 API 中间结果、信息抽取或边界值处理有误;假阴性指标准答案本身错误,或评测器未能认可正确预测。表 13(p.25)给出 Kansas–Kansas State 橄榄球表以补足第 4.2 节案例上下文,正确答案为 1926。

附录 F 标注界面

作者基于 Hugging Face Spaces 建立可实时执行的标注界面,支持 SQL 与 Binder-SQL,拟公开源码以帮助语义解析与代码生成任务标注。原文 pp.26–27 是 WikiTQ 与 TabFact 界面截图。

非官方中文学习资料 · 来源与版本见阅读说明 · 研究评析与原文主张分别标明
湘ICP备2026051447号