用于表格数据推理的小样本学习

文 / Julian Eisenschlos,AI Resident,Google Research

识别文本蕴涵的任务,也称自然语言推理,是指确定一段文本(前提)是否可被另一段文本(假设)所暗示或否认(或两者都不能)。虽然这一问题通常被视为机器学习 (ML) 系统推理能力的重要测试,并且在纯文本输入方面已经有过深入研究,但对于此类模型在结构化数据,如网站、表格、数据库等方面的应用,相关投入却要少得多。然而,每当需要将表格的内容准确地归纳并呈现给用户时,识别文本蕴涵就显得尤为重要,这对于高保真的问答系统和虚拟助手来说更是必不可少。

在发表于 Findings of EMNLP 2020 的“ 通过中间预训练以了解表格(Understanding tables with intermediate pre-training)”中,我们介绍了为表格解析定制的首批预训练任务,可使模型从更少的数据中更好、更快地学习。

我们在较早的 TAPAS 模型基础上进行了改进,该模型是 BERT 双向 Transformer 模型的扩展,采用特殊嵌入向量在表格中寻找答案。新的预训练目标应用于 TAPAS 后即在涉及表格的多个数据集上达成突破性进展。

例如,在 TabFact 上,它将模型和人类之间的表现差距缩小了约 50%。我们还系统地对选择相关输入的方法进行了基准测试以获得更高效率,实现了速度和内存的 4 倍提升,同时保留了 92% 的结果。适用于不同任务和规模的所有模型均已发布在 GitHub repo 中,您可以在 Colab Notebook 中试用它们。

文本蕴涵

当应用于表格数据时,相比于纯文本,文本蕴涵任务更具挑战性。以一份 Wikipedia 的表格为例,其中有一些句子来自其关联的表格内容。评估表格内容是包含还是与句子相矛盾,这可能需要查看多个列和行,还可能需要执行简单的数字计算,例如求平均值、求和、差分等。

表格,以及来自 TabFact 的一些语句:表格内容可用于支持或反驳语句

表格,以及来自 TabFact 的一些语句:表格内容可用于支持或反驳语句

按照 TAPAS 使用的方法,我们将语句和表格的内容一起编码,通过 Transformer 模型传递,得到一个单一数字,表示语句被表格蕴涵或反驳的概率。

TAPAS 模型架构使用 BERT 模型对语句和展平的表格进行编码,逐行读取。特殊嵌入向量用于编码表格结构。第一个令牌的向量输出用于预测蕴涵的概率

TAPAS 模型架构使用 BERT 模型对语句和展平的表格进行编码,逐行读取。特殊嵌入向量用于编码表格结构。第一个令牌的向量输出用于预测蕴涵的概率

由于训练样本中唯一的信息是一个二元值(即“正确”或“不正确”),因此训练模型来理解语句是否被蕴涵是具有挑战性的。这也凸显了在深度学习中泛化的困难,特别是当提供的训练信号较为稀缺的时候。发现孤立的蕴涵或反驳样本时,模型可以轻松地在数据中提取虚假模式进行预测,例如在“Greg Norman and Billy Mayfair tie in rank”中提取“tie”一词,而不是比较排名,因此无法超越原始训练数据成功应用模型。

预训练任务

预训练任务可通过提供大量现成的未标记数据来“预热”模型。然而,预训练通常主要包括纯文本而非表格数据。事实上,TAPAS 最初的预训练使用的是简单的掩码语言建模目标,而这一目标并非为表格数据应用而设计。为了提高模型在表格数据上的性能,我们引入了两个新的预训练二元分类任务,称其为反事实合成任务,可以用作预训练的第二阶段(通常称为中间预训练)。

在反事实任务中,我们从 Wikipedia 提取句子,该句子提到同时出现在给定表格中的实体(人、地点或事物)。然后,在 50% 的时间里,我们将实体替换为另一个替代实体来修改语句。为了确保语句的真实性,我们在表格中同一列的实体内选择一个替换。模型以识别语句是否被修改为目标接受训练。这项预训练任务包括数百万个这样的样本,虽然它们的推理并不复杂,但通常还是会听起来很自然。

对于合成任务,我们采取类似于 语义解析 的方法,使用一组简单的语法规则生成语句,要求模型理解基本的数学运算,比如求和与求平均值(例如“the sum of earnings”),或者理解如何使用条件过滤表格中的元素(例如“the country is Australia”)。虽然这些语句是人为的,但它们仍然有助于提高模型的数字和逻辑推理能力。

两个新的预训练任务的示例实例。反事实示例将输入表格随附的句子中提及的实体换为一个可信的替代实体。合成语句使用语法规则创建新句子,这些句子需要以复杂的方式组合表格的信息

两个新的预训练任务的示例实例。反事实示例将输入表格随附的句子中提及的实体换为一个可信的替代实体。合成语句使用语法规则创建新句子,这些句子需要以复杂的方式组合表格的信息

结果

我们通过与基线 TAPAS 模型和先前两个文本蕴涵领域的成功模型 LogicalFactChecker (LFC) 和 Structure Aware Transformer (SAT) 进行比较,评估了反事实和合成预训练目标在 TabFact 数据集上的成功。基线 TAPAS 模型相对于 LFC 和 SAT 表现出更好的性能,但预训练的模型 (TAPAS+CS) 的性能明显更好,达到新的技术水平。

我们还将 TAPAS+CS 应用于 SQA 数据集上的问答任务,这要求模型在对话框环境下从表格内容中找到答案。加入 CS 目标后,最佳性能相比于之前提高了 4 个百分点以上,这表明这种方法还可以将性能泛化到文本蕴涵之外。

TabFact(左)和 SQA(右)的结果。使用合成和反事实数据集,我们在这两项任务中都以较大优势取得了新的最先进结果

TabFact()和 SQA()的结果。使用合成和反事实数据集,我们在这两项任务中都以较大优势取得了新的最先进结果

数据和计算效率

反事实和合成预训练任务的另一个方面是,由于模型已经针对二元分类进行了调整,因此可以应用而无需对 TabFact 进行任何微调。我们探索了只对数据的一个子集(甚至没有数据)进行训练时,每个模型会发生什么。不查看单个样本时,TAPAS+CS 模型与强基线 Table-Bert 不相上下,只包含 10% 的数据时,结果与先前的最先进水平相当。

TabFact 上的开发准确率相对于所用训练数据的分数

TabFact 上的开发准确率相对于所用训练数据的分数

试图使用此类大型模型对表格进行操作时,一个普遍的担忧是,高计算要求会使其难以解析非常大的表格。为了解决这个问题,我们研究了是否可以启发式地选择要通过模型的输入子集,以优化其计算效率。

我们对各种过滤输入的方法进行了系统性研究,发现选择整列和主题语句之间的单词重叠的简单方法可获得最佳结果。通过动态选择要包括的输入令牌,我们可以使用更少的资源或以相同的成本处理更大的输入。这样做的挑战是如何保留重要信息和准确率。

例如,上述模型全部使用 512 个令牌的序列,接近于 Transformer 模型的正常极限(尽管最近的效率方法,如 ReformerPerformer 被证明可以有效地缩放输入大小)。我们在这里提出的列选择方法可以让训练速度更快,同时还能在 TabFact 上实现高准确率。对于 256 个输入令牌,我们的准确率下降非常小,但现在可以对模型进行预训练、微调,并使预测速度提高 2 倍。在 128 个令牌的情况下,模型仍然优于之前的最先进模型,速度提升更为显著,获得 4 倍全面提升。

通过我们的列选择方法缩短输入,使用不同序列长度在 TabFact 上得出的准确率

通过我们的列选择方法缩短输入,使用不同序列长度在 TabFact 上得出的准确率

使用我们提出的列选择方法和新颖的预训练任务,可以创建出以更少数据和更少计算能力得出更好结果的表格解析模型。

我们已经在 GitHub repo 中提供了新的模型和预训练技术,您可以在 Colab 中亲自尝试。为了使这种方法更易于使用,我们还共享了不同大小的模型,最小到 “Tiny”。我们希望这些结果有助于在更广泛的研究社区中推动表格推理的发展。

致谢

这项工作由苏黎世语言团队的 Julian Martin Eisenschlos、Syrine Krichene 和 Thomas Müller 完成。我们要感谢 Jordan Boyd-Graber、Yasemin Altun、Emily Pitler、Benjamin Boerschinger、Srini Narayanan、Slav Petrov、William Cohen 和 Jonathan Herzig 的有益意见和建议。

原文:Learning to Reason Over Tables from Less Data
中文:TensorFlow 公众号