TAPEX:通过神经SQL执行器学习的表格预训练
摘要
近年来,语言模型预训练的进展通过利用大规模非结构化文本数据取得了巨大成功。然而,由于缺乏大规模高质量的表格数据,在结构化表格数据上应用预训练仍然是一个挑战。本文提出了TAPEX,通过在一个合成语料库上学习神经SQL执行器来实现表格预训练,该语料库通过自动合成可执行的SQL查询及其执行结果获得。TAPEX通过引导语言模型在多样化、大规模且高质量的合成语料库上模仿SQL执行器,解决了数据稀缺的挑战。我们在四个基准数据集上评估了TAPEX。实验结果表明,TAPEX显著优于以往的表格预训练方法,并在所有数据集上取得了新的最先进结果。具体来说,弱监督的WikiSQL表示准确率提升至89.5%(+2.3%),WikiTableQuestions表示准确率提升至57.5%(+4.8%),SQA表示准确率提升至74.5%(+3.5%),TabFact准确率提升至84.2%(+3.2%)。据我们所知,这是首次通过合成可执行程序进行表格预训练并在各种下游任务中取得新最先进成果的工作。我们的代码可在https://github.com/microsoft/Table-Pretraining找到。
1 引言
预训练语言模型(LMs),如BERT(Devlin等,2019)和BART(Lewis等,2020),在一系列自由形式的自然语言(NL)任务中取得了成功。通过学习大量非结构化文本数据,这些模型展示了理解自然语言句子的惊人能力。受这一巨大成功的启发,研究人员尝试将预训练扩展到结构化表格数据(Herzig等,2020;Yin等,2020;Yu等,2021a;Wang等,2021b;Deng等,2020;2021;Shi等,2021a)。然而,与自由形式的自然语言句子不同,表格数据通常包含丰富且有意义的结构化信息,现有的针对非结构化数据设计的预训练方法并不完全适用。
要在结构化表格数据上应用预训练技术,存在两个关键挑战:(1)如何获得大规模高质量的预训练语料库;(2)如何设计高效的预训练任务以进行表格预训练。对于第一个挑战,现有工作通常收集包含自然语言句子和表格的并行数据作为预训练语料库,因为下游任务通常涉及对自由形式的自然语言句子和表格的联合推理。他们要么从网络上爬取表格及其周围的自然语言句子(Herzig等,2020;Yin等,2020;Deng等,2021),要么在现有表格上合成自然语言句子(Yu等,2021a;Shi等,2021a)。然而,正如Yin等(2020)所指出的,从网络上挖掘的原始数据极其嘈杂,需要复杂的启发式方法进行清理。相反,合成方法更容易控制数据质量,但通常需要专家编写数百个模板,这既昂贵又缺乏多样性。关于预训练任务,现有工作通常采用不同变体的掩码语言建模(MLM)(Devlin等,2019)来引导语言模型学习更好的表格数据表示。例如,TAPAS(Herzig等,2020)使用了全词掩码的MLM,而TABERT(Yin等,2020)提出了掩码列预测(MCP)以鼓励模型恢复掩码列的名称和数据类型。尽管取得了成功,它们仍然主要将表格数据视为文本的结构化格式,这导致其表格预训练需要极大的语料库。所有这些都阻碍了表格预训练的进展。
本文提出了一种新颖的以执行为中心的表格预训练方法TAPEX(通过执行进行表格预训练)。它通过近似形式语言在表格上的结构化推理过程,解决了上述挑战并实现了高效的表格预训练。结构化推理过程与表格的可执行性相关,即表格本质上能够支持各种推理操作(例如对表格中的某一列求和)。特别是,TAPEX通过预训练语言模型模仿SQL执行引擎在表格上的行为,近似SQL查询的结构化推理过程。如图1所示,通过对表格上的可执行SQL查询进行采样,TAPEX首先合成了一个大规模的预训练语料库。然后,它继续预训练语言模型以输出这些SQL查询的执行结果,这些结果是从SQL执行引擎中获得的。由于SQL查询的多样性可以系统地保证,我们可以轻松合成多样化、大规模且高质量的预训练语料库。
我们的关键见解是,如果一个语言模型能够被预训练以忠实地“执行”SQL查询并生成正确结果,那么它应该对表格有深刻的理解。因此,执行预训练任务在理解表格和推理表格方面可能更高效。据我们所知,TAPEX是第一个通过合成可执行程序探索表格预训练的工作。TAPEX概念简单且易于实现。在本文中,我们将预训练视为序列生成任务,并采用编码器-解码器模型。具体来说,我们使用预训练的编码器-解码器语言模型BART(Lewis等,2020)作为骨干。此外,我们通过两个基本的下游任务评估TAPEX的有效性:基于表格的问答(TableQA)和基于表格的事实验证(TableFV)。为了使下游任务的微调充分利用TAPEX,我们使用编码器-解码器序列生成范式重新表述这些任务。我们在四个知名基准数据集上评估TAPEX。实验结果清楚地表明,TAPEX能够为这些数据集带来显著且一致的改进。例如,TAPEX在WIKITABLEQUESTIONS数据集上比BART绝对提升了19.5%。此外,即使在小规模的预训练语料库下,TAPEX也表现出强大的效果,展示了其高效性。最后,TAPEX在所有实验基准上取得了新的最先进结果,大幅超越了以往的方法,包括在数据处理中使用多种启发式方法的复杂表格预训练方法。我们将公开代码、模型和数据,以促进未来研究。
2 下游任务的微调
在深入探讨我们提出的表格预训练细节之前,我们首先描述如何利用编码器-解码器序列生成范式来解决下游任务的微调问题。在本节中,我们首先介绍两个与表格相关的基本下游任务的背景:基于表格的问答(TableQA)和基于表格的事实验证(TableFV)。然后,我们将详细阐述我们的生成式微调方法。
##2.1 下游任务的形式化描述
如第1节所述,下游任务通常涉及对自由形式的自然语言(NL)句子和表格的联合推理。因此,下游任务的示例通常包含一个自然语言句子 x x x 和一个(半)结构化表格 T T T 作为模型输入。每个自然语言句子由 K K K 个词元组成,记为 x = x 1 , x 2 , ⋯ , x K \mathbf{x} = x_1, x_2, \cdots, x_K x=x1,x2,⋯,xK,而每个表格 T T T 由 M M M 行 { r i } i = 1 M \{r_i\}_{i=1}^M {ri}i=1M 组成,其中每一行 r i r_i ri 包含 N N N 个单元格值 { s ( i , j ) } j = 1 N \{s_{(i,j)}\}_{j=1}^{N} {s(i,j)}j=1N。每个单元格 s ⟨ i , j ⟩ s_{\langle i,j\rangle} s⟨i,j⟩ 包含一系列词元,并对应一个表头 c j c_j cj。至于输出,不同任务之间存在差异。在本文中,我们主要关注基于表格的问答(TableQA)和基于表格的事实验证(TableFV)。
TableQA 的目标是从表格内容中检索信息以回答用户的问题,因此其输出要么是一组单元格值,要么是通过聚合函数(例如求和 SUM)在选定表格区域上计算出的数值。值得注意的是,对于半结构化表格,答案可能并非精确的表格单元格值,而是其规范化形式(例如,将“2k”转换为“2000”),这使得下游任务更具挑战性(Oguz 等,2020)。
对于 TableFV,输出是一个二元决策,即“支持”(entailed)或“拒绝”(refused),用于指示自然语言句子是否符合表格所表明的事实。
2.2 生成式微调
在本节中,我们提出了一种用于下游任务微调的生成式方法。与以往的工作不同,我们将 TableQA 和 TableFV 都建模为序列生成任务,并利用生成式语言模型(LMs)自回归地生成输出。以 TableQA 为例,给定一个自然语言问题,我们的方法通过逐词解码的方式生成答案。
架构
我们的方法理论上适用于任何能够生成序列的语言模型,例如 GPT-3(Brown 等,2020)和 UniLM(Bao 等,2020)。在我们的实验中,我们基于 BART(Lewis 等,2020)实现了我们的方法,BART 是一种广泛使用的预训练编码器-解码器模型。BART 遵循标准的序列到序列 Transformer 架构(Vaswani 等,2017),并将 ReLU 激活函数修改为 GeLU。它通过破坏句子(即随机采样长度可变的片段并用单个 [MASK] 标记替换每个片段)进行预训练,然后优化重建损失。关于层数,我们在实验中采用了 BART L a r g e _\mathrm{Large} Large 配置,即编码器和解码器各使用 12 层。
模型输入
如图 2 所示,输入包含一个自然语言句子及其对应的表格。编码自然语言句子相对简单,而编码表格则较为复杂,因为表格具有潜在的结构。在实践中,我们将表格展平为一个序列,以便直接输入模型。通过插入几个特殊标记来指示表格的边界,展平的表格可以表示为:
T ∗ = [HEAD] , c 1 , ⋯ , c N , [ROW] , 1 , r 1 , [ROW] , 2 , r 2 , ⋯ , r M . T^* = \text{[HEAD]}, c_1, \cdots, c_N, \text{[ROW]}, 1, r_1, \text{[ROW]}, 2, r_2, \cdots, r_M. T∗=[HEAD],c1,⋯,cN,[ROW],1,r1,[ROW],2,r2,⋯,rM.
其中,[HEAD] 和 [ROW] 是分别指示表头和行区域的特殊标记,[ROW] 后的数字用于指示行索引。值得注意的是,我们还使用竖线 | 分隔不同列的表头或单元格。最后,我们将展平的表格 T ∗ T^* T∗ 前缀自然语言句子 x x x,并将它们输入模型编码器。
模型输出
在编码器的注意力机制基础上,解码器负责建模 TableQA 和 TableFV 的输出。
对于 TableQA,输出是由逗号分隔的答案的拼接,解码器以自回归的方式生成这些答案。通过这种方式,我们的模型可以轻松支持 TableQA 中(几乎)所有的操作符及其组合。 对于 TableFV,与 BART 处理序列分类任务的方式类似(Lewis 等,2020),相同的输入被同时送入编码器和解码器,并在解码器最后一个词元的隐藏状态上使用一个二元分类器来生成输出。 值得注意的是,我们的方法可以轻松扩展到其他与表格相关的任务,方法类似。
微调策略
由于我们的方法可以在同一架构上执行各种下游任务,因此可以轻松实现多任务学习。为此,我们探索了两种微调方式:一种是常规微调,另一种是多任务微调。前者是在每个单独的下游任务上对模型进行微调。后者受到 TAPAS(Herzig 等,2020)和 T5(Raffel 等,2020)的启发,首先在相关或类似的中间下游任务上对模型进行微调,然后继续在目标下游任务上进行微调。
讨论
我们的方法具有以下几个优点:
- 灵活性:由于编码器-解码器模型强大的表达能力,我们的方法可以轻松适应(几乎)任何类型的输出。
- 便捷性:我们的方法不需要对预训练语言模型进行任何修改(例如,特定于表格的掩码),并且可以以端到端的方式进行训练。
- 可迁移性:由于我们将下游任务形式化为序列生成任务,这使得不同任务可以共享相同的训练协议,因此我们的方法可以轻松实现多任务微调。
3 通过执行进行表格预训练
如第 1 节所述,TAPEX 通过训练语言模型模仿 SQL 执行引擎的行为来实现高效的表格预训练。在本节中,我们从预训练任务和预训练语料库两个方面说明如何进行表格预训练。
3.1 预训练任务
在自然语言预训练中,MLM(掩码语言建模)任务被广泛使用,现有工作通常采用重建任务进行表格预训练。它们通常以损坏的表格和自然语言句子作为输入,并尝试恢复损坏的部分,以加强自然语言句子与表格之间的联系。尽管这些预训练任务表现良好,但由于通常需要极大的预训练语料库,它们的效率往往较低。
为了设计高效的表格预训练任务,我们认为关键在于表格的可执行性。也就是说,结构化表格使我们能够通过编程语言(如 SQL 查询)对它们执行离散操作,而非结构化文本则不具备这种特性。基于此,TAPEX 采用 SQL 执行作为唯一的预训练任务。如图 3 所示,TAPEX 的预训练过程与上述生成式微调的过程类似。给定一个可执行的 SQL 查询和一个表格 T T T,TAPEX 首先将 SQL 查询和展平的表格 T ∗ T^* T∗ 拼接并输入模型编码器。然后,它通过现成的 SQL 执行器(例如 MySQL)获取查询的执行结果,作为模型解码器的监督信号。直观地说,预训练过程是鼓励语言模型成为一个神经 SQL 执行器。我们相信,如果一个语言模型能够被训练为忠实地“执行”SQL 查询并生成正确的结果,那么它应该对表格有深刻的理解。
3.2 预训练语料库
合成预训练语料库对于表格预训练非常重要。通常,有两个关键因素:表格来源和 SQL 查询采样策略。
表格来源
根据 Yin 等人(2020)的先前工作,我们选择公开可用的半结构化表格作为表格来源。然而,与 Yin 等人(2020)需要数百万个原始表格不同,TAPEX 即使在仅有几千个表格的情况下也能表现良好。因此,我们没有从网络上获取嘈杂的表格并通过启发式方法过滤它们,而是直接从现有的公共数据集中挑选高质量的表格。具体来说,我们从 WIKITABLEQUESTIONS(Pasupat & Liang,2015)的训练集中随机选择了近 1,500 个表格作为预训练语料库的表格来源。需要注意的是,我们用于预训练的表格与所有下游任务的开发集和测试集中使用的表格没有重叠,因此不存在数据泄露问题。
查询采样
关于多样化 SQL 查询的采样,文献中有多种选择。我们可以根据概率上下文无关文法(Wang 等,2021a)采样 SQL 查询,也可以在不同表格上实例化 SQL 模板(Zhong 等,2020a)。在我们的实验中,我们采用后者,其中 SQL 模板是从 SQUALL 数据集(Shi 等,2020b)中自动提取的。一个 SQL 模板的示例是:SELECT num1 WHERE text1 = val1
,其中 num1
和 text1
分别对应数值列和文本列,val1
是指与列 text1
相关的某个单元格值。给定一个 SQL 模板,在每次实例化时,我们从采样的表格中均匀采样表头和单元格值来填充模板,形成一个具体的 SQL 查询。值得注意的是,执行结果为空的结果会被丢弃,因为空结果不能反映表格的可执行性信息。通过这种方式,我们可以获得一个高质量的大规模预训练语料库。
4 实验
在本节中,我们在不同的下游任务上评估 TAPEX 以验证其有效性。
数据集和评估
我们在弱监督的 WikiSQL(WIKISQL-WEAK)(Zhong 等,2017)、WIKITABLEQUESTIONS(Pasupat & Liang,2015)、SQA(Iyyer 等,2017)和 TABFACT(Chen 等,2020)上评估我们方法的性能。与仅需要对表格单元格值进行过滤和可选聚合的 WIKISQL-WEAK 相比,WIKITABLEQUESTIONS 需要更复杂的推理能力。SQA 是一个对话式基准测试,要求我们的方法能够建模对话上下文。数据集详细信息见附录 A。对于 TableQA 数据集,评估指标是表示准确率(denotation accuracy),它检查预测的答案是否与真实答案一致。值得注意的是,我们在 WIKISQL-WEAK 上使用 TAPAS(Herzig 等,2020)提供的答案注释进行评估,因为官方评估脚本中近 2% 的答案是不正确的。对于 TABFACT,评估指标是准确率,通过计算正确预测的百分比得出。
实现细节
我们基于 fairseq(Ott 等,2019)实现了我们的方法。在预训练期间,我们为 TAPEX 合成了多达 500 万对 SQL 查询及其执行结果。在下文中,除非明确说明,所有实验结果默认在 500 万对的设置下进行评估。我们的预训练过程最多运行 50,000 步,批量大小为 256。在 8 个 Tesla V100 GPU 上完成预训练大约需要 36 小时。最佳预训练检查点是根据验证集上的损失选择的。对于所有下游数据集,微调过程最多运行 20,000 步,批量大小为 128。对于预训练和微调,学习率均为 3 × 1 0 − 5 3×10^−5 3×10−5。
4.1 主要结果
表1、表2、表3和表4分别总结了各种模型在WIKISQL-WEAK、WIKITABLEQUESTIONS、SQA和TABFACT数据集上的实验结果。对于所有数据集的开发集和测试集,我们报告了我们方法在五次随机运行中的中位性能。
WIKISQL-WEAK如表1所示,TAPEX在所有基线模型中表现最佳,领先优势显著。在WIKISQL-WEAK的测试集上,TAPEX的表征准确率为89.5%,比BART高出3.7%,比之前的最佳表现高出2.3%。这一结果具有重要意义,因为之前的最佳模型已经使用了执行引导解码。简而言之,TAPEX在著名的WIKISQL-WEAK基准测试中实现了新的最先进的结果。
WIKITABLEQUESTIONS在更具挑战性的WIKITABLEQUESTIONS上,TAPEX也取得了新的最先进的表征准确率,达到了57.5%,比之前的最佳系统高出4.8%(见表2)。与此同时,我们发现单独使用BART仅能达到38.0%的表征准确率,远低于之前的预训练模型的表现。我们推测,这一性能下降可能是由于WIKITABLEQUESTIONS的训练数据量相对较小,导致BART在适应表格结构时遇到更多挑战。
然而,TAPEX相比BART在低数据量情况下带来了19.5%的显著提升,表明在数据较少的情况下,TAPEX带来的改进通常更为显著。
SQA 表3展示了各种模型在SQA测试集上的表现,其中TAPEX再次在对话层面(48.4%)和句子层面(74.5%)获得了新的最先进的表征准确率。这一改进令我们感到惊讶,因为SQA是一个对话数据集,而我们的预训练任务是无上下文的。同时,TAPEX在SQA上相对于BART的显著改进再次验证了TAPEX缓解低资源问题的观察。
TABFACT
除了TableQA,TAPEX在TableFV上的表现也非常出色。如表4所示,TAPEX在TABFACT的所有子集上均取得了新的最先进的结果。例如,它在Testcomplex上超越了之前的最佳系统4.0%。这一结果表明,TAPEX赋予了BART通用的表格理解能力,这些能力可以适应不同的下游任务,无论这些任务是否与TAPEX的预训练任务高度相似。
总体结果 在四个数据集上的实验结果表明,TAPEX能够广泛提升模型在理解表格方面的能力,特别是在低数据量情况下。
4.2 多任务结果
如§2.2所讨论的,我们的方法可以轻松进行多任务学习,从而为下游任务带来好处。为了验证这一点,我们进行了多任务微调实验,得出了以下发现:(1)当以BART初始化时,多任务微调显著提高了目标任务的性能;(2)当以TAPEX初始化时,多任务微调的提升趋于边际化,表明多任务学习获得的大部分“技能”(宽泛来说)可以通过我们的表格预训练获得。详细结果可见附录B。
5 分析
在本节中,我们将从多个方面仔细分析我们的方法。此外,我们还进行了探索性分析,以为未来的工作提供更多见解,相关内容可以在附录C中找到。
通过预训练执行SQL为了了解TAPEX在预训练后执行SQL的表现,我们分析了其在近20,000个未见表格上的SQL查询执行情况。总体来说,SQL执行的准确率相对较高,TAPEX正确“执行”了89.6%的SQL查询。特别地,TAPEX在Filter、Aggregate和Superlative操作符上的表现更好,表明它在表格单元选择和表格聚合方面具有较高的准确性。对于Arithmetic和Comparative操作符,TAPEX也表现得很好,展示了其在表格中的数值推理能力。总之,TAPEX已经学会了成为一个具备良好选择、聚合和数值能力的神经SQL执行器。
通过预训练理解表格为了了解TAPEX是否有助于下游任务更好地理解表格,我们对未经过微调的TAPEX在WIKITABLEQUESTIONS样本上的自注意力进行了可视化和分析。如图4所示,TAPEX似乎更关注与单元格对应的行和表头。从图4中的例子来看,注意力权重表明“adrian lewis”与第一列“player”以及整个第三行紧密相关,这些是“adrian lewis”在结构化表格中的位置。
通过预训练进行表格推理为了了解TAPEX是否能改善表格推理,我们将TAPEX与BART在500个随机选取的问题上的表现进行了比较,并在表5中进行了人工分析。可以发现,TAPEX在所有操作符上的表现都显著提高,这表明它确实增强了BART在文本和表格联合推理方面的能力。
预训练语料库的规模
图5展示了在不同规模的预训练语料库下的下游任务表现。可以看出,即使我们的预训练语料库是合成的,扩大预训练语料库的规模通常会带来积极的效果。这一观察类似于语言建模中的现象(Brown等,2020):预训练语料库越大,下游任务的表现越好。通过对不同数据集的比较,我们可以发现,对于像WIKISQL-WEAK这样的简单任务,扩大预训练语料库带来的提升逐渐趋于边际效应,而对于像TABFACT这样的复杂任务,提升依然显著。同时,低数据量情况下的下游数据集通过增加预训练语料库也呈现出积极的趋势。总之,当下游任务较为困难或下游数据集较小的时候,语料库的规模尤为重要。
预训练效率
如§1所述,现有的表格预训练方法的效率较低,因为它们通常需要一个极其庞大的语料库。因此,以WIKITABLEQUESTIONS为例,我们比较了TAPEX与TAPAS(Herzig等,2020)、TABERT(Yin等,2020)和GRAPPA(Yu等,2021a)的预训练效率。值得注意的是,GRAPPA的一部分预训练语料库来自人工标注的高质量平行数据。如图6所示,TAPEX在使用远小于其他方法的预训练语料库时,依然能取得非常有前景的表现,表明我们提出的SQL执行预训练任务比其他表格预训练任务更为高效。
局限性
我们方法的第一个局限性是,它无法理想地处理大表格。如上所述,我们采用了表格扁平化技术来表示表格。当表格相对较小时,这种方法效果良好,但当表格过大无法放入内存时,它就变得不可行。在实际应用中,我们可以通过移除一些不相关的行或列来压缩表格,但这会降低下游任务的表现。第二个局限性是,文本到SQL的任务无法从我们提出的表格预训练中受益。我们曾尝试将TAPEX应用于文本到SQL任务,其中输入保持不变,输出转换为SQL。然而,TAPEX在该任务上并未显示出相较BART的显著优势。我们将其归因于两个因素:首先,我们的合成预训练语料库对语义解析中至关重要的“基础对接”没有贡献(Liu等,2021);其次,TAPEX学到的表格推理能力(例如聚合)在SQL生成中可能并不必要。例如,模型即使不知道“sum”的数学含义,也能理解NL短语“total”作为聚合函数“sum”。
6. 相关工作
表格预训练
与我们最相关的工作是表格预训练,其关键因素包括预训练语料库和预训练任务。关于预训练语料库,大多数先前的工作几乎都收集了自然语言(NL)-表格数据来进行表格预训练。它们要么挖掘了大量表格及其自然语言句子上下文(Yin等,2020;Herzig等,2020),要么利用人工标注的平行NL-表格数据集进行预训练(Deng等,2021;Yu等,2021a),或者使用人工编写的模板合成了NL-表格语料库(Yu等,2021a;Eisenschlos等,2020)。我们的工作与它们不同,因为我们是首个使用纯合成的SQL-表格数据进行表格预训练的研究,这使得我们能够自动合成一个多样化、大规模且高质量的预训练语料库。关于预训练任务,现有的工作提出了几种预训练任务,例如:列预测遮蔽(Mask Column Prediction,Yin等,2020)、单元格级多选填空(Multi-choice Cloze at the Cell Level,Wang等,2021b)和结构对接(Structure Grounding,Deng等,2021)。与所有这些工作不同,我们提出了一种新的SQL执行任务来进行表格预训练。
表格与文本的联合理解
由于我们的实验主要集中在TableQA和TableFV任务上,我们的方法与这些任务的先前方法也有紧密的关系。对于TableQA,先前的工作几乎将其表述为一个弱语义解析任务(Liang等,2018;Wang等,2019a;Guo等,2021),这些工作通常使用强化学习来优化表格上的语义解析器。虽然这些解析器可以生成逻辑形式(例如SQL),但由于庞大的搜索空间和存在虚假的程序(Goldman等,2018),它们在训练时会遇到困难。此外,最近有一种有前景的工作方向(Mueller等,2019;Herzig等,2020),该方向旨在回答自然语言句子而不依赖于逻辑形式。这些工作通过选择单元格值并可选地应用聚合操作符来预测答案。它们容易训练,但建模能力有限。例如,它们难以支持复合聚合操作符,如max(Year) - min(Year)。与这些工作不同,我们的方法使用生成模型来处理TableQA,并且能够同时享受端到端训练和灵活性。对于TableFV,先前的工作通常使用有限扩展性的专用架构(Shi等,2020a;Yang等,2020;Shi等,2021b)。例如,Zhong等(2020b)利用图构建机制、语义解析器和语义组合模型来捕捉自然语言句子与表格之间的连接。尽管该方法在TableFV上效果良好,但它不易应用于其他表格相关任务。与这些方法相比,我们的方法能够在相同架构下很好地适用于各种下游任务。
7. 结论
在本文中,我们提出了TAPEX,一种以执行为中心的表格预训练方法,其语料库通过抽样SQL查询及其执行结果自动合成。TAPEX通过在一个多样化、大规模且高质量的合成语料库上学习神经SQL执行器,解决了表格预训练中的数据稀缺问题。四个下游数据集的实验结果表明,TAPEX大幅度超越了先前的表格预训练方法,并在所有数据集上都达到了新的最先进结果。我们的工作为通过在合成可执行程序上进行预训练来开发结构化数据开辟了道路,这一方法在概念上简单,并且具有很大的潜力,能够扩展到其他研究领域(例如知识库)。
A. 下游数据集
数据集的统计信息见表6,表7展示了我们模型的输入和输出示例。需要注意的是,SQA是一个对话基准,我们直接将历史记录和第i个问题拼接在一起作为输入中的“句子”部分(x),正如Liu等(2020)所做的那样。
B. 多任务结果
表8展示了在§2.2中提到的多任务微调的完整实验结果。需要注意的是,我们选择了WIKISQL-WEAK和TABFACT作为迁移源,因为它们的训练数据相对丰富。
C. 探索性分析
在本节中,我们进行了一项探索性分析,以提供更多对未来工作的洞察。具体而言,我们探索了两个有趣的研究问题:(1)预训练中SQL查询的难度如何影响下游任务的表现?(2)在预训练中使用自然语言句子是否比使用SQL查询更好?
C.1 预训练中SQL查询难度的影响
SQL难度标准
受到Yu等(2018)的启发,我们假设SQL查询的难度可以通过SQL元素的数量来衡量。一个元素可以是SQL关键字(例如SELECT),也可以是表格模式(即标题或单元格值)。在实践中,我们通过一个现成的SQL解析器来获取SQL查询的元素,该解析器为每个SQL查询返回一系列SQL元素。根据经验,我们将包含 ≤ 6 \leq 6 ≤6个元素的SQL查询归类为Easy,包含 > 6 > 6 >6且 ≤ 14 \leq 14 ≤14个元素的SQL查询归类为Medium,包含 > 14 > 14 >14且 ≤ 20 \leq 20 ≤20个元素的SQL查询归类为Hard,其余的归类为ExtraHard。不同难度级别的SQL查询示例可以在表9中找到。基于SQL难度标准,我们将SQUALL(Shi等,2020b)中的模板分为四个难度级别,并从Easy级别( ≤ \leq ≤Easy)到ExtraHard级别( ≤ \leq ≤ExtraHard)逐步添加它们来构建预训练语料库。值得注意的是,为了避免预训练规模的影响,我们保持上述预训练语料库中的示例数量相同。
下游性能
实验结果如图7所示。可以看出,在大多数情况下,将更难的SQL查询添加到预训练语料库中是有帮助的。例如,与 ≤ \leq ≤Easy级别的查询相比, ≤ \leq ≤Medium级别的查询在下游任务的表现上带来了持续的改善(例如,在WIKITABLEQUESTIONS数据集上提高了10.6%)。同时,我们也注意到,在Medium级别之后,SQL查询难度的影响变得不那么显著。在TABFACT数据集中,涉及Extra-Hard级别的SQL查询进行预训练甚至略微损害了性能。
细粒度分析
为了从细粒度的角度理解影响,我们将WIKITABLEQUESTIONS开发集中的问题分为四个难度级别,并借助SQUALL提供的WIKITABLEQUESTIONS问题的SQL查询注释。所有细粒度的实验结果如图8所示。我们可以看到,随着更难的SQL查询的加入,针对相同难度级别问题的性能得到了大幅提升。例如,加入Medium级别的SQL查询将Medium级别问题的性能从 38.2 38.2% 38.2( ≤ \leq ≤Easy)提升至 56.2 56.2% 56.2( ≤ \leq ≤Medium),这与预期一致。更令人鼓舞的是,加入更简单的SQL查询甚至可以提高更难问题的表现。例如,与BART相比, ≤ \leq ≤Medium级别的预训练使Hard级别问题的性能提高了最多13.1%。
C.2 预训练中自然语言的影响
自然语言生成
直观而言,与SQL查询相比,在预训练中使用自然语言句子对下游任务可能更有利,因为预训练目标几乎与微调目标相同。然而,获取一个流畅的自然语言句子以忠实反映SQL查询的语义并非易事。在这个实验中,我们遵循Zhong等(2020a)的方法,训练了一个SQL到自然语言的模型,并使用该模型将预训练语料库中的SQL查询翻译成自然语言句子。具体而言,我们的SQL到自然语言模型基于BART-Large(Lewis等,2020),并在SQUALL数据集(Shi等,2020b)上进行训练,该数据集包含近9,000个SQL-NL对。然后,我们将训练好的SQL到自然语言模型应用于TAPEX的预训练语料库(50万条),并获得了大小相同的自然语言预训练语料库。通过手动分析100个翻译后的自然语言句子,我们惊讶地发现所有自然语言句子都很流畅,且近68%的句子忠实于相应SQL查询的语义。表10展示了一些采样的SQL查询及其对应的翻译后的自然语言句子。获得自然语言预训练语料库后,我们遵循与TAPEX相同的预训练和微调流程来利用它。
性能比较
我们在表11中比较了TAPEX使用SQL与使用自然语言(NL)在所有下游任务上的表现。令人惊讶的是,TAPEX使用自然语言的表现与使用SQL的表现相当,甚至在某些情况下更差。例如,与使用SQL查询进行预训练相比,使用自然语言句子在WIKITABLEQUESTIONS上的表现下降了1.4%。我们将这种下降归因于翻译后的自然语言句子中包含了一些噪音。以表11中的第二行为例,翻译后的自然语言句子包含了额外的信息,比如“在1989年美国职业棒球大联盟选秀中”,这些可能会干扰预训练过程。
D SQL执行的细粒度分析
图9提供了针对每种操作符类型的SQL执行准确率的细粒度分析。
相关文章:

TAPEX:通过神经SQL执行器学习的表格预训练
摘要 近年来,语言模型预训练的进展通过利用大规模非结构化文本数据取得了巨大成功。然而,由于缺乏大规模高质量的表格数据,在结构化表格数据上应用预训练仍然是一个挑战。本文提出了TAPEX,通过在一个合成语料库上学习神经SQL执行…...

Qt:Qt基础介绍
目录 Qt背景介绍 什么是Qt Qt的发展史 Qt支持的平台 Qt版本 Qt的优点 Qt的应用场景 Qt的成功案例 Qt的发展前景及就业分析 Qt背景介绍 什么是Qt Qt是⼀个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供了建立艺术级图形界面所需的所有功能。它是完全面向…...
加速度计信号处理
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)_加速度计滤波器-CSDN博客 https://wenku.baidu.com/view/622d38b90f22590102020740be1e650e52eacff9.html?_wkts_1738906719916&bdQ…...

基于SpringBoot养老院平台系统功能实现六
一、前言介绍: 1.1 项目摘要 随着全球人口老龄化的不断加剧,养老服务需求日益增长。特别是在中国,随着经济的快速发展和人民生活水平的提高,老年人口数量不断增加,对养老服务的质量和效率提出了更高的要求。传统的养…...

Conmi的正确答案——Rider中添加icon作为exe的图标
C#版本:.net 8.0 Rider版本:#RD-243.22562.250(非商业使用版) 1、添加图标到解决方案下: 2、打开“App.xaml”配置文件,添加配置: <Applicationx:Class"ComTransmit.App"xmlns&q…...
机试题——DNS本地缓存
题目描述 正在开发一个DNS本地缓存系统。在互联网中,DNS(Domain Name System)用于将域名(例如www.example.com)解析为IP地址,以便将请求发送到正确的服务器上。通常情况下,DNS请求会发送到互联…...
Day38【AI思考】-彻底打通线性数据结构间的血脉联系
文章目录 **彻底打通线性数据结构间的血脉联系****数据结构家族谱系图****一、线性表(老祖宗的规矩)****核心特征** **二、嫡系血脉解析**1. **数组(规矩森严的长子)**2. **链表(灵活变通的次子)** **三、庶…...

【LeetCode】152、乘积最大子数组
【LeetCode】152、乘积最大子数组 文章目录 一、dp1.1 dp1.2 简化代码 二、多语言解法 一、dp 1.1 dp 从前向后遍历, 当遍历到 nums[i] 时, 有如下三种情况 能得到最大值: 只使用 nums[i], 例如 [0.1, 0.3, 0.2, 100] 则 [100] 是最大值使用 max(nums[0…i-1]) * nums[i], 例…...

[MRCTF2020]Ez_bypass1(md5绕过)
[MRCTF2020]Ez_bypass1(md5绕过) 这道题就是要绕过md5强类型比较,但是本身又不相等: md5无法处理数组,如果传入的是数组进行md5加密,会直接放回NULL,两个NuLL相比较会等于true; 所以?id[]1&gg…...

MySQL 缓存机制与架构解析
目录 一、MySQL缓存机制概述 二、MySQL整体架构 三、SQL查询执行全流程 四、MySQL 8.0为何移除查询缓存? 五、MySQL 8.0前的查询缓存配置 六、替代方案:应用层缓存与优化建议 总结 一、MySQL缓存机制概述 MySQL的缓存机制旨在提升数据访问效率&am…...

LabVIEW自定义测量参数怎么设置?
以下通过一个温度采集案例,说明在 LabVIEW 中设置自定义测量参数的具体方法: 案例背景 假设使用 NI USB-6009 数据采集卡 和 热电偶传感器 监测温度,需自定义以下参数: 采样率:1 kHz 输入量程:0~10 V&a…...

海思的一站式集成环境Hispark Studio更新了
HiSpark Studio是海思提供的面向智能设备开发者提供一站式集成开发环境,支持代码编辑、编译、烧录和调试等功能。我以前在评测星闪芯片的时候用过,当时写了篇博客:【星闪开发连载】WS63E开发板Windows环境的构建_hispark studio-CSDN博客。那…...
TresJS:用Vue组件构建3D场景的新选择
在当今数字化时代,3D图形技术正以前所未有的速度发展,从游戏开发到虚拟现实(VR)、增强现实(AR),再到各种沉浸式体验,3D技术的应用场景日益丰富。TresJS作为一款基于Three.js的Web3D开…...

Axure设计教程:动态排名图(中继器实现)
一、开篇 在Axure原型设计中,动态图表是展示数据和交互效果的重要元素。今天,我们将学习如何使用中继器来创建一个动态的排名图,该图表不仅支持自动轮播,还可以手动切换,极大地增强了用户交互体验。此教程旨在提供一个…...

攻防世界 文件上传
题目名称-文件包含 今天的题大概提一下解题思路就好了 这里要使用php://filter 在此基础上因为网页过滤了一些关键字 我们要进行爆破 UCS-4* UCS-4BE UCS-4LE* UCS-2 UCS-2BE UCS-2LE UTF-32* UTF-32BE* UTF-32LE* UTF-16* UTF-16BE* UTF-16LE* UTF-7 UTF7-IMAP UTF-8* ASCII…...
从 .NET Framework 升级到 .NET 8 后 SignalR 问题处理与解决方案
随着 .NET Framework 向 .NET 8 的迁移,许多开发者在使用 SignalR 时遇到了一些前后端连接、配置、调用等方面的问题。尤其是在处理 SignalR 实时通信功能时,升级后的一些兼容性问题可能导致应用程序无法正常工作。本文将介绍在从 .NET Framework 升级到…...
《Node.js Express 框架》
《Node.js Express 框架》 引言 Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者使用 JavaScript 来编写服务器端代码。Express 是一个简洁、灵活的 Node.js Web 应用框架,它为 Web 和移动应用程序提供了一系列强大的功能。本文将详细介绍 Node.js …...

Unity LineRenderer 画线及代码控制--Unity小记
Unity LineRenderer 画线及代码控制 目录 Unity LineRenderer 画线及代码控制 一、添加LineRenderer 组件 二、LineRenderer设置起始坐标 三、设置LinRenderer 四、代码片段,找代码直接点我(找代码直接点我) 一、添加LineRenderer 组件…...
llama.cpp GGML Quantization Type
llama.cpp GGML Quantization Type 1. GGML Quantization Type2. static const struct ggml_type_traits type_traits[GGML_TYPE_COUNT]3. Q#_K_M and Q#_KReferences 什么神仙妖魔,不过是他们禁锢异族命运的枷锁! GGUF https://huggingface.co/docs/hu…...

k8s部署go-fastdfs
前置环境:已部署k8s集群,ip地址为 192.168.10.1~192.168.10.5,总共5台机器。 1. 创建provisioner制备器(如果已存在,则不需要) 制备器的具体部署方式可参考我的上一篇文章: k8s部署rabbitmq-CSDN博客文章浏览阅读254次,点赞3次,收藏5次。k8s部署rabbitmqhttps://blo…...

Python----Python高级(并发编程:协程Coroutines,事件循环,Task对象,协程间通信,协程同步,将协程分布到线程池/进程池中)
一、协程 1.1、协程 协程,Coroutines,也叫作纤程(Fiber) 协程,全称是“协同程序”,用来实现任务协作。是一种在线程中,比线程更加轻量级的存在,由程序员自己写程序来管理。 当出现IO阻塞时,…...
什么是可观测性?
现代服务架构常常谈及三个性: 弹性,韧性,可观测性。今天且按下其他两性不表,着重聊一聊可观测性。本文就几个主题对可观测性展开讨论: 可观测性是什么可观测性是必须的吗企业的可观测性落地 可观测性理念 可观测性是…...
3. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--环境搭建
构建现代云原生应用程序时,开发环境的搭建至关重要。NET Aspire 作为一款专为云原生应用设计的开发框架,提供了一整套工具、模板和集成包,旨在简化分布式系统的构建和管理。开始项目初始化之前,确保开发环境的正确配置是成功的第一…...

kubeadm构建k8s源码阅读环境
目标 前面看了minikube的源码了解到其本质是调用了kubeadm来启动k8s集群,并没有达到最初看代码的目的。 所以继续看看kubeadm的代码,看看能否用来方便地构建源码调试环境。 k8s源码编译 kubeadm源码在k8s源码库中,所以要先克隆k8s源码。之…...

【Flink快速入门-1.Flink 简介与环境配置】
Flink 简介与环境配置 实验介绍 在学习一门新的技术之前,我们首先要了解它的历史渊源,也就是说它为什么会出现,它能够解决什么业务痛点。所以本节我们的学习目的是了解 Flink 的背景,并运行第一个 Flink 程序,对它有…...

硬盘修复后,文件隐身之谜
在数字时代,硬盘作为数据存储的重要载体,承载着无数珍贵的信息与回忆。然而,当硬盘遭遇故障并经过修复后,有时我们会遇到这样一个棘手问题:硬盘修复后,文件却神秘地“隐身”,无法正常显示。这一…...
如何处理网络连接错误导致的fetch失败?
处理由于网络连接错误导致的 fetch 失败通常涉及捕获网络错误并提供适当的用户反馈。以下是如何在 Vue 3 中实现这一点的步骤和示例。 一、更新 useFetch 函数 在 useFetch 函数中,需要捕获网络错误,并设置相应的错误信息。网络错误通常会抛出一个 TypeError,可以根据这个…...

Qt之设置QToolBar上的按钮样式
通常给QAction设置icon后,菜单栏的菜单项和工具栏(QToolBar)上对应的按钮会同时显示该icon。工具栏还可以使用setToolButtonStyle函数设置按钮样式,其参数为枚举值: enum ToolButtonStyle {ToolButtonIconOnly,ToolButtonTextOnly,ToolButtonTextBesideIcon,ToolButtonTe…...
责任链模式(Chain Responsibility)
一、定义:属于行为型设计模式,包含传递的数据、创建处理的抽象和实现、创建链条、将数据传递给顶端节点; 二、UML图 三、实现 1、需要传递处理的数据类 import java.util.Date;/*** 需要处理的数据信息*/ public class RequestData {priva…...
docker安装 mongodb
1、拉取镜像 docker run -dit --name mongo \ -p 17017:27017 \ -e MONGO_INITDB_ROOT_USERNAMEadmin \ -e MONGO_INITDB_ROOT_PASSWORD2018 \ --restartalways \ mongo2、进入容器 docker exec -it mongo bash 3、进入mongo ./bin/mongosh -u admin -p 2018 --authenticat…...