ICLR 22 | 一个不需要自然语言的表格预训练方法
PaperReview 一个分享Review的平台 |
论文:
TAPEX: Table Pre-training via Learning a Neural SQL Executor
作者:
Qian Liu, Bei Chen, Jiaqi Guo, Morteza Ziyadi, Zeqi Lin, Weizhu Chen, Jian-Guang Lou
单位:
北航, 西安交通大学,微软亚洲研究院,微软Azure AI
投稿状态:
已中稿 ICLR 2022
文章链接:
https://openreview.net/pdf?id=O50443AsCP
Review链接:
https://openreview.net/forum?id=O50443AsCP
其他资源:
https://github.com/microsoft/Table-Pretraining
Who | Recommendation (Total/10) |
review#1 | 6: marginally above the acceptance threshold |
review#2 | 8: accept, good paper |
review#3 | 8: accept, good paper |
review#3 | 8: accept, good paper |
01
摘要
最近的预训练的语言模型已经通过在大量无监督文本数据上取得了巨大的成功。然而,因为缺少大规模高质量的表格数据,在结构化的表格数据集上进行预训练仍然存在非常大的挑战。在这篇文章中,我们提出了Tapex,这展示了通过在合成的语料上学习一个神经SQL执行器(SQL exector)可以做表格预训练(table pre-training),这些语料是通过自动地合成一些可以执行的SQL查询语句和它们的执行结果。Tapex通过在多种多样、大规模和高质量的合成语料上指导语言模型模拟SQL执行器,解决了数据饥渴的挑战。我们在四个标准数据集上评价了Tapex。实验结果说明了Tapex大幅度地超过了之前的表格预训练方法,并且在这些数据集上达到了新的SOTA结果。这包括在弱监督WikiSQL的表示精度(denotation accuracy)提升到89.5%(+2.3%),在WikiTableQuestions表示精度提升到57.5%(+4.8%),在SQA表示精度提升到74.5%(+3.5%),在TabFact准确度上提升到84.2%(+3.2%)。在我们知识范围内,这是第一个去探索通过合成的执行程序去实现表格预训练的工作,并且在各种下游任务上达到了SOTA结果。
02
引言
预训练语言模型,例如BERT和BART,已经在一系列free-form的自然语言任务上赢得了成功。通过从大量的无结构文本数据学习,这些模型已经在理解自然语言句子上展示了惊人的能力。启发于这巨大的成功,研究者们已经试图去拓展预训练到结构化的表格数据上。然而,和free-form自然语言句子不一样,表格数据通常包含rich和meaningful的结构化信息,其中那些已有的被设计用于建模无结构数据的预训练语言方法不能够很好的适用于建模(结构化数据)。
为了将预训练技术应用到结构化表格数据上,这儿存在两个关键的挑战:(i)去哪儿获取大规模高质量的预训练语料,和(ii)如何针对表格预训练设计一个有效的预训练任务。针对第一个挑战,已有的工作通常会收集包括自然语言句子和表格的parallel data作为预训练语料,因为下游任务通常涉及到在free-form自然语言句子和表格上的一些列推理。它们要么从网上爬取表格和对应的自然语言句子,要么在已有的表格上合成自然语言句子。然而,正如Yin el al. (2020)所指出的那样,从网上挖掘的原生数据是极具噪声的,并且需要复杂的启发式去清洗。相反,合成方法能够轻松控制数据的质量,但是它通常需要专家们去写数以百计的模板,这是非常耗时且缺乏多样性的。对于预训练任务,已有的工作通常应用Masked Language Modeling (MLM)的不同变体去指导LMs去学习更好的表格数据表示。例如,TaPas用MLM with whole word masking,TaBERT提出Masked Column Prediction (MCP)去鼓励模型去恢复被mask的列的名字和数据类型。尽管它们取得了一定的成功,它们仍然将表格数据视为文本的结构化数据,这将会需要一个非常大规模的预训练语料。所有的这些都阻碍了表格预训练的发展。
图1:我们方法的原理图概述。为了简介,在输入中的表格内容被简化为符号[Table]。
在这篇文章中,我们提出了一个新颖的以执行为中心的表格预训练方法,命名为TaPEx(Table Pre-training via EXecution)(为了方便表示我们在这篇博文中使用Tapex)。它解决了上面的挑战,并且通过在表格上近似formal languages的结构化推理过程,设计了一个有效的表格预训练。这个结构化推理过程与表格的可执行性息息相关,例如,表格本身就支持各种各样的推理操作(例如在表格中某一列求和)。特别地,Tapex通过预训练LMs来逼近SQL语句的结构化推理过程,这能够模拟在表格上SQL执行的行为。如图1所示,通过在表格上采样的可执行SQL语句,Tapex首先合成大规模的预训练语料。然后它持续预训练语言模型去输入这些SQL语句的执行结果,这个执行结果可以从SQL执行引擎中通过执行获得。由于可以系统地保证SQL语句的多样性,我们能够轻松地合成一个多样的,大规模的,高质量的预训练语料。我们关键的见解是如果一个语言模型能够被预训练faithfully“执行”SQL语句并且创造正确的结果,它应该对表格有个深入的理解。因此,预训练任务的执行能够在理解表格和在表格上推理更有效。在我们知识范围内,Tapex是第一个探索通过合成的执行程序去做表格预训练的。
在概念上,TaPEx是一个简单且容易实现的方法。在我们论文中,我们将预训练当做一个序列生成任务并且部署了一个encoder-decoder的模型。具体地,我们利用了预训练的encoder-decoder模型BART作为backbone。更进一步,我们通过两个基础性的下游任务来检验Tapex的有效性:基于表格的问答(TableQA)和基于表格的事实验证(TableFV)。为了赋能下游任务的fine-tuning能够充分发挥Tapex的优势,我们使用encoder-decoder序列生成范式来重新描述这些任务。我们用四个well-known的标准数据集来评价Tapex。实验结果清晰地说明了Tapex能够在这些数据集上带来显著且持续的提升。例如,Tapex在WikiTableQuestions数据集上,相比于BART,获得了19.5%的绝对提升。更进一步,Tapex甚至在少量的预训练语料上获得了强的结果,说明了它是高效率的。最后,Tapex在所有的实验数据集上达到了新的SOTA结果,超过了先前所有的方法一大截,包括在数据预处理中带有启发式的复杂的表格预训练方法。我们也将我们的代码,模型和数据公开去促进社区的发展。
怼怼批注
不像上面的摘要和引言我们严格按照论文进行了人工翻译,在下面的方法、实验章节我们仅列原论文的关键部分。如有需要可查看原文去了解详情。
03
方法
这个章节总结了如何收集预训练语料并且如何设计预训练任务(图2);紧接着讲解了如何在预训练之后的模型上进行fine-tune(图3)。
图2:我们方法中预训练过程的说明。在预训练期间,我们直接,将采样的SQL语句和采样的表格拼接起来,输入给模型,并且训练它能够输出对应的执行结果(例如,“Pairs”)。
图3:我们方法fine-tuning过程的说明。在fine-tuning期间,我们将自然语言句子和它对应的表格(来自下游任务)的拼接体,输入给模型,并且训练它能够输出答案(例如,“Marisela Moreno Montero”)。
04
实验
在这篇文章中在WikiSQL-Weak,WikiTableQuestions,SQA和TabFact上做了实验,Tapex带来的提升都比较明显,具体可以查看原论文。
另外,我们还做了Tapex在多任务上的实验和分析实验,也得出了一些有趣的见解。
05
约束
第一个约束就是不能够理想的处理非常大的表格。正如上面所提,我们将表格摊平(flatten)去表示表格。Tapex能够很好的工作是因为表格都相对比较小,但是如果表格非常大的话全部加载进内存是不切合实际的。实际上,我们能够通过移除一些不相关的行和列去压缩表格,这将减少一些下游任务的性能。第二个约束是text-to-SQL任务不能够从我们提出的表格预训练任务中受益。我们已经尝试将Tapex应用到text-to-SQL任务,其中输入相同,输出转换为SQL。我们将此归因于两个因素,首先,我们合成的预训练语料不能够向grounding这一步贡献,而这一步对于语义解析任务是非常关键的;其次,通过Tapex学习到的表格预训练的能力(例如:aggregate)可能对于SQL的生成没有必要。例如,一个模型能够将自然语言短语“total”理解为聚合函数“sum”,尽管它没有“sum”的数学含义的意识。
06
总结
在这篇文章中,我们展示了Tapex,一个以执行为中心的表格预训练方法,它的语料是通过采样SQL语句和对应的执行结果来自动合成的。Tapex解决了表格预训练中的数据饥渴的挑战,通在一个多样性,大规模和高质量的合成语料上学习一个神经SQL执行器。在四个下游任务数据集上的实验结果说明了Tapex超过了先前的表格预训练方法一大截,并且在这些数据集上达到了新的SOTA结果。我们的工作打开了一个新的方式去通过在合成可执行的程序上预训练来探索结构化数据,这在概念上是简单的,并且有巨大的潜力拓展到其他的研究领域(例如,知识图谱)。
总
体评价
Accept (Poster)
Reviews在总体上的评价都是积极的--他们普遍同意接受。Reviews认为提出的预训练方法的简单性、新颖性和有效性是其优点。此外,审稿人称赞草案写得非常清楚,并认为实验性消融相对深入--例如,两位审稿人认为对数据规模影响的额外分析很有价值。有人对额外的消融实验和claims提出了一些担忧,但所有这些都在作者的答复中得到了充分的解决。
怼怼批注
我们使用“问答”的形式对reviewers的问题和作者的回复进行高度总结,具体的review和rebuttal细节请查看原文。
怼
Review#1
分数@6/10
与命名为“pre-training”相比,提出的方法应该被命名为从构建的合成表格语料中数据增强。由于合成语料库和下游任务(问答,事实验证)之间的输入和输出格式是相同的,所以可以很直观地看到性能的提高。因此,难怪会很直观的得到巨大的改进。从这个角度来看,这项工作就不那么有趣和新颖了。
防
Rebuttal
我们要强调的是,我们不同意这个说法,因为:
在算法设计的背后有清晰的直觉是一种常见的做法,它对于为未来的工作提供洞察力也很重要。鉴于此,它不能成为一种方法的缺陷。因此,我们无法理解为什么我们的方法的直观有效性(高达19%的绝对改进)会成为一个缺点。请您详细说明一下好吗?
我们认为 "由于输入和输出格式......是相同的 "的说法在科学上是错误的。再次强调,合成语料库由SQL查询组成,而下游任务由NL句子组成。基于这一事实,你的说法相当于说NL句子和SQL查询是 "一样的"。我们怀疑其他Reviewers不会同意你关于编程语言和自然语言可以 "相同 "的说法。
怼
Review#2
8/10
该方法仅限于与表格相关的问题。
防
Rebuttal
是的,我们目前的论文主要关注与表格相关的任务。探索Tepex在其他自然语言任务中的潜力确实很有价值,这将是我们未来工作中的重要内容。
怼
Review#2
8/10
缺少关于SQL语句难度的影响的分析。
防
Rebuttal
在rebuttal阶段,我们对SQL查询难度的影响进行了两种分析。首先,我们分析了不同下游任务之间的影响。实验结果表明,在预训练语料库中增加更难的SQL查询总是有助于下游性能的提高。其次,我们从细粒度的角度分析了对WikiTableQuestions的影响。细粒度的实验结果表明,预训练中简单的SQL查询可以令人惊讶地提高困难问题的性能。
怼
Review#2
8/10
关于模型可以reproduce表结构的说法似乎有点值得商榷。
防
Rebuttal
谢谢你的反馈! 我们已经将论文中的措辞从“Tapex似乎可以在内部恢复扁平化表格的结构”修改为“Tepex似乎更关注行和单元格对应的标题”。希望这个修改能减轻你的担忧。
怼
Review#2
8/10
对pre-training中的自然语言的分析。
防
Rebuttal
在rebuttal阶段,我们对自然语言对下游任务的影响进行了分析。具体来说,我们在BART-Large的基础上训练了一个SQL-NL模型,并采用该模型将预训练语料库中的SQL查询翻译成NL句子。在对NL预训练语料库进行预训练之后,我们比较了Tapex与NL和Tapex与SQL之间的性能。我们惊讶地发现,使用NL的Tapex的性能与使用SQL的Tapex相当,甚至更差。
怼
Review#3
8/10
论文的措辞不好。
防
Rebuttal
谢谢你对论文措辞的建设性反馈! 我们同意“利用表结构”的说法是有缺陷的,我们应该强调“模仿形式语言中的逻辑运算”,而不是“表结构”。
因此,我们根据你的建议仔细修改了论文的措辞。
我们希望这些修改能使我们的论文更加清晰,请在最新的论文中找到更多的细节。
怼
Review#4
8/10
Table + Query vs Text-to-SQL。
防
Rebuttal
由于Tapex是在Table+query的范围内,它确实有一些局限性,在第5节-分析-局限性中讨论过。我们将在未来的工作中积极探索TAPEX在text-to-SQL任务上的应用。
怼
Review#4
8/10
合成生成的模板。
防
Rebuttal
谢谢你的宝贵反馈! 我们同意,如果在预训练中使用SQL语法来合成SQL查询语句,Tapex将更具有扩展性,我们将在未来积极探索。
PaperReview会分享顶会paper的review和rebuttal,希望大家能够从中学会如何做科研,从而为国家的科研工作共吸纳出自己的一份力量。历史分享的paper已经收录在GitHub项目中,欢迎star和fork。
https://github.com/PaperReviewer/PaperReviewer.github.io
我们还开通了网页版的PaperReview,欢迎访问和收藏。
https://paperreviewer.github.io
同时,我们还开放了PaperReview的交流群,可以添加怼怼入群。