表格问答TAPEX

421 阅读4分钟

表格问答tapex: table pretraining via learning a neural sql executor

使用BART架构做表格预训练,预训练使用的数据为合成的可执行的sql查询语句和在表格上的输出结果,模型做的假设是预训练阶段能学习到sql查询语句的能力,就认为模型能充分理解表格,然后可以在下游任务上微调。

本文首发于2022年12月6日,微信公众号【胡说深度学习】

1.表格问答之前存在的问题

  • 缺乏大规模高质量的预训练预料

  • 以前做表格预训练的数据要么是从互联网上爬取,要么就是从已有的可获取表格中合成自然语句。前者数据中有很多噪声并且需要很复杂的清洗数据方法,后者虽然容易控制数据的质量,但是需要专家写很多复杂的模板,耗时且缺乏多样性

  • 表格预训练任务不够高效

  • 之前的模型做预训练时都是把表格数据作为一种文本的结构化形式数据,这就导致需要大规模的预料用于表格预训练。

2. 针对以上问题tapas做的改进

  • 对于数据来源

  • 是通过可执行的sql查询语句直接在表格上得到sql的查询结果,因为sql查询语句非常多,所以可获取的数据也非常多,质量也非常高;其次,控制sql查询语句的多样性,也得到了结果的多样性,数据的多样性得到了保证。所以可以合成多样、大规模且高质量的预训练预料。

  • 对于高效性

  • tapex在预训练阶段是近似sql查询语句的结构化推理过程,这样可以认为模型在预训练阶段对表格有一个非常深刻的理解。如下图,使用更少的预训练预料,tapex比之前的模型有着更好的效果,体现了其预训练时的高效性。图片

3. tapex的整体结构

图片分为预训练阶段和微调阶段两个部分,预训练阶段输入的数据是sql查询语句+线性化的表格,微调阶段输入的数据是问题(文本)+线性化的表格

预训练使用的是encoder-decoder架构的BART,微调是在两类数据集TableQA(table-based question answering)和TableFV(table-based fact verification)上进行的。

4. 微调阶段

图片微调阶段输入为 问题+线性化的表格+答案。是一个监督学习的任务。表格线性化的方式为:,其中[HEAD]和[ROW]是分别用来分隔表头和每一行的,[ROW]后面的数字表示当前是第几行。表示第i列的表头,表示第i行的所有单元格。而且,作者还使用了|符号来分隔表头和不同的列。

微调阶段输出为用逗号隔开的答案,因为BART的decoder是自回归式的生成答案。使用这种方式,tapex可以很好的支持TableQA的所有操作和它们的组合。对于TableFV任务,可以作为一个序列的分类任务,是一个二分类任务,确定问题中的内容是否符合表格给出的事实。

微调策略:一个是在单个任务上进行微调,另一个是在相关的中间下游任务上进行微调,然后在目标下游任务上微调。

优点

  • 灵活性:因为encoder-decoder架构的强大表达能力,tapex可以适应任何的输出。

  • 便利性:不需要预训练语言模型的任何修改(例如任务特别的masking),而且可以使用端到端的训练方式。

  • 可迁移性:因为把下游任务当成是生成任务,所以允许不同的任务共享相同的训练方案,很容易使用多任务的微调策略。

5. 结果

tapex在WIKISQL-WEAK、SQA、WIKITABLEQUESTIONS、TABLEFACT数据集上都取得了sota的效果,如下图所示:图片图片图片

本文使用 文章同步助手 同步