TaBERT

论文标题

Tabert: Pretraining for joint understanding of textual and tabular data

arXiv:2005.08314

code:facebookresearch/TaBERT

Abstract

Recent years have witnessed the burgeoning of pretrained language models(LMs) for text-based natural language(自然语言) understanding tasks.

这些模型通常在形式自由的自然语言文本上训练,因此可能对于有结构的数据上的语义解析任务不适用,这种解析任务需要对形式自由的自然语言问题和结构化的表格数据进行推理。

本文我们提出了一种叫TABERT的预训练语言模型,它联合学习自然语言句子和(半)结构化表的表示。

TABERT在一个包含2600万张表的大型语料库及其英语上下文上接受训练。在实验中,使用TABERT作为特征表示层的神经语义解析器在具有挑战性的弱监督语义解析基准WIKITABLEQUESTIONS上取得了新的最佳结果,同时在text-to-SQL数据集SPIDER上也有一定的竞争力。

1 Introduction

近年来,提出了BERT等预训练语言模型,这些模型能够在进行下游任务的微调前,通过无监督学习捕获文章的语法与语义。

然而,如何预训练与微调同时具有自然语言句子和结构化表的问答任务仍是一个悬而未决的问题。

一个典型例子是访问数据库的语义解析任务,例如将自然语言句子(Which country has the largest GDP?)翻译为对数据库表的查询语句。这个应用场景的主要挑战不仅在于理解数据库表的结构化模式,还在于输入文本和模式之间的对齐方式,例如”GDP”指代Gross Domestic Product这一列。

因此,针对此任务定制的神经语义解析器试图学习自然语言语句和数据库表结构化模式的联合表示。然而,这种独特的设置给应用预训练语言模型带来了几个挑战:

  1. 储存在数据库表中的信息表现出强大的底层结构,而现有的语言模型仅为自然语言文本训练。
  2. 一个数据库表有大量的行,使用占用大量资源的语言模型简单地对所有行进行编码将会难以计算。
  3. 大多数基于文本的QA任务,可以设计为一个通用的答案跨度选择问题,并且可以用预训练模型与额外的分类层解决。但是,语义解析是高度特定于领域的,并且神经解析器的架构与其底层数据库的结构紧密耦合。

事实上,现有的系统已经试图利用BERT,但每个系统都有自己的特定于领域的内部策略来编码DB中的结构化信息,并且没有使用在结构化表上预训练的表示。这些挑战要求开发通用的预训练方法,用于学习自然语言话语和结构化数据库表的表示。

因此,本文提出了TABERT,它建立在BERT的基础上,并联合学习语句的上下文表示和DB表的结构化模式。特殊地,TABERT通过将表的结构线性化来适配基于Transformer的BERT模型。

为了处理大型表,我们提出了内容快照(content snapshots),这是一种编码与输入话语最相关的表内容子集的方法。该策略进一步与垂直注意机制结合,在不同行的单元格表示之间共享信息。

TABERT可以被插入到一个神经语义解析器中,作为一个通用的编码器来计算话语和表的表示。我们的关键见解是,尽管语义解析器是高度特定于领域的,但大多数系统依赖于输入话语和表模式来促进后续生成数据库查询,这些representations无论解析任务的域,都可以由TABERT提供。

我们将TABERT应用在两个语义解析范式:

  1. SPIDER,a test-to-SQL dataset
  2. WIKI TABLE QUESTIONS benchmark

我们证明了TABERT在这两种情况下都是有效的,表明它是解析器的原始编码器的一个可插入替换,用于计算自然语言话语和DB表的上下文表示。具体来说,使用TABERT增强的系统优于使用BERT的系统,在可用问题上得到了最先进的性能。

2 Background

Semantic Parsing over Tables

语义解析:自然语言的语句 u -> 正式意义表示(例如SQL查询语句) z

根据数据库使用的底层数据表示模式,表可以使用强类型和规范化内容进行完全结构化

Masked Language Models

给定一个自然语言token序列 x = $x_1,x_2,…,x_n$ ,MLM是一个使用掩蔽语言建模目标进行训练的语言模型。它的目的是从x中的一个【损坏的】通过随机屏蔽x中的某些标记的上下文中恢复原来的标记。

3 TABERT

我们首先介绍TABERT如何计算自然语言话语和表模式(3.1),然后描述预训练的过程(3.2)

3.1 Computing Representations

3.1.1 Content snapshot

给定一个语句 u (In which city did Piotr’s last 1st place finish occur?)和一个表 T,首先创建一个内容快照,如图1所示。

这个快照由采样的行组成,这些行总结了T中与输入话语最相关的信息。

图1 针对输入表的一个内容快照

为了减少计算开销,我们选择与输入话语最相关的几行作为内容快照。采用的策略是基于n-gram的字符匹配率选取Top-K,K的选取由查询文本与表格数据决定,在本文中选取$n\le3$。

3.1.2 Linearization

然后,该模型将快照中的每一行线性化,将每个线性化的行与话语连接起来,并使用连接的字符串作为Transformer(例如,BERT)模型的输入,该模型输出话语标记和单元格的行级编码向量。

图2 逐行编码示意图

具体来说,每个单元格由列的名称和数据类型表示,以及它的实际值,用一个竖条分隔。

然后,通过连接所有单元格的上述字符串编码,由[SEP]符号分隔。

3.1.3 Vertical Self-Attention Mechanism

这些编码会被输入到一系列垂直的自注意层中,其中,单元格表示(或话语标记表示)是通过关注同一列(或同一自然语言标记)的垂直对齐向量来计算的。

图3 垂直自注意层

为了允许信息在不同行的单元格表示之间流动,提出了垂直自注意。

如图3所示,TABERT有V个堆叠的垂直级的自注意层。为了给垂直自注意层生成对齐的输入,首先为每个单元格计算一个定长初始化向量,计算方法为对Transformer的输出向量序列采用平均值池化。之后,自然语言话语的单词向量序列(来自基本Transformer模型)与该单元的向量连接,作为垂直注意层的初始输入。

每个垂直注意层具有与Transformer层相同的参数化,但操作对象为垂直对齐的元素。这种垂直的自注意机制使模型能够聚合来自内容快照中不同行的信息,从而允许TABERT捕获对单元格的跨行依赖关系。

3.1.4 Utterance and Column Representations

representation $\pmb{c}_j$ 是从最后一个垂直层通过在其垂直对齐的单元格向量${\{\pmb{s}_{}:R_i\ in\ content\ snapshot \}}$ 上进行平均值池化来计算每一列 $c_j.$

自然语言语句的representation $\pmb{x}_j$ 在垂直对齐的标记向量上的计算方法类似。

这些表示方法将被下游的神经语义解析器使用。TABERT还使用前缀[CLS]符号的表示输出一个可选的固定长度table representation $\pmb{T}$,这对在多个数据库表上操作的解析器很有用。

3.2 Pretraining Procedure

3.2.1 Training Data

由于没有大规模的、高质量的自然语言文本和结构化表的并行语料库,因此我们改为使用通常存在于Web上的半结构化表作为替代数据源。具体来说,我们从英文维基百科和WDC网络表格语料库中收集表格及其周围的自然语言文本,这是一个来自CommonCrawl的大型表格集合。

3.2.2 Unsupervised Learning Objectives

我们应用不同的目标来学习自然语言上下文和结构化表的表示。对于自然语言上下文,我们使用标准的掩蔽语言建模(MLM)目标,在自然语言上下文中掩蔽率为15%。

对于学习列表示,我们设计了两个目标,其直觉是一个列表示应该包含列的一般信息(例如,它的名称和数据类型),以及与自然语言上下文相关的代表性单元格值。

Masked Column Prediction

掩蔽列预测(MCP)目标鼓励模型恢复掩蔽列的名称和数据类型。

Cell Value Recovery

确保内容快照中有代表性的单元值的信息在内容快照中经过额外的垂直自注意层后被保留。

image-20221003103634672

Appendix

n-gram模型

N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。