论文笔记:TABERT: Pretraining for Joint Understanding of Textual and Tabular Data
目录
导语
- 会议:ACL 2020
- 地址:https://aclanthology.org/2020.acl-main.745/
摘要
最近,大规模预训练语言模型在NLP的各种任务上应用广泛。但像BERT之类的传统模型仅在free-form的自然语言文本中进行训练,并不能很好的适用于在结构化数据上进行的semantic parsing任务。本文提出了TABERT模型,它使用自然语言文本和(半)结构化文本共同预训练得到,训练的语料库由一个超过2600万的表格和上下文信息组成。在一个弱监督的semantic parsing数据集WikiTABLEQUESTIONS上取得了最好的结果,在Text-to-SQL数据集Spider上取得了与目前SOTA模型相当的表现。
1 简介
传统的预训练模型使用free-form的自然语言文本进行预训练,能够学习到的语言中的句法和语法知识。在下游任务中,通过对这些表示进行Fine-tune将能够很自然的应用到各个任务中。这在大多数NLP任务中是行得通的方法,但是在面对一些需要同时对自然文本语句和结构化数据进行建模的任务时,比如Text-to-SQL任务,表现并没有那么好。一个主要的挑战在于理解数据库中的schema(即对数据库中table和column及其关系的统称)信息,并能够将schema和输入自然语言语句中相应的token进行对齐(比如自然语言语句中的“GDP” 指的是table中的 Gross DomesticProduct 这个column)。
在使用预训练模型到semantic parsing任务时,主要有以下问题和挑战:
- 存储在数据库schema中的信息显示了强大的底层结构,而现有的语言模型(例如BERT)只接受了编码free-form文本的训练。
- 其次,一个数据库中的table可能有大量的column,使用一个资源密集型LM对所有行进行编码在计算上是很难做到的。
- 最后,与大多数基于文本的QA任务(如SQuAD)不同,semantic parsing是高度特定于领域的,神经网络解析器的体系结构与其底层数据库的结构是强耦合的。
为此,作者提出了一种将free-form的自然语言文本和结构化数据联合训练的模型TABERT,可以很好的学习这种(半)结构化信息。TABERT被应用于WikiTableQuestions数据集和Spider数据集并取得了很好地效果。
2 背景
2.1 Semantic Parsing over Tables
对于表格的Semantic Parsing一个重要的应用是Text-to-SQL。在给定关系型数据库(即schema)的前提下,将用户的提问Question生成相应的SQL查询语句。下图为Spider数据集的一个示例:
2.2 Masked Language Models
在训练语言模型时,人们将整个自然语言语句中的某些token进行遮挡,训练模型根据上下文来预测得到这些被遮挡的token。采用这种技术训练得到的语言模型即Masked Language Model,如BERT等。
3 TABERT: 从表格数据中学习联合分布
3.1 计算自然语言语句和数据库schema的表示
如图所示,整个TABERT模型结构图分为A、B、C三部分。其大致流程如下:在给定自然语言语句u和数据库表格T的情况下,首先从表格T中选出与u最相关的K行数据作为数据库的内容快照(Content Snapshot)。接着,将这几行内容分别进行序列化和自然语言语句一同输入到Transformer中或者相应的编码表示。随后,编码后的每一所有行被送入垂直自注意力编码层(Vertical Self-Attention),一个列值(一个单词)通过计算同一列的值(同一单词)的垂直排列向量的自注意力得到。最终经过池化层得到单词和列的表示。
内容快照
TABERT的一个主要特点是使用了表格中的内容值,因为它们可以更好的反应所属column的属性。但是,一个表格T的行数可能会非常多,为了减少模型的计算量。这里,作者设计只选择与自然语言问句u最相关的前K行输入到模型。模型使用n-gram的重合程度作为相似度的度量标准。这里也区分了K>1和K=1的情形。
- K>1:K>1的情况下直接使用n-gram计算得到最相似的Top K行输入给模型。
- K=1:K=1的情况下会将各个column中最相似的单元格拼接为1行输入给模型。
行的线性化
得到内容快照后,将其线性化后和自然语言语句u组合输入给Transformer。其输入格式为:
[CLS] utterance [SEP] c1 [SEP] c2……
其中,每一个c值表示成三部分:列名、类型和单元值,中间使用“|”分割。
例如,上图中
R
2
R_2
R2这一行的输入即
[CLS] In which city did Piotr's ... [SEP] Year | real | 2005 [SEP] Venue | text | Erfurt [SEP] Position | text | 1st [SEP]
垂直自注意力机制
当K>1时,会得到多行的编码结果,不过由于每一行是单独计算的,因此是相互独立的。为了使信息在不同行的表示中流动,TABERT引入了垂直自注意力,可以在不同行的相互对齐的向量中进行计算。
如图2(C)所示,TABERT有V个垂直堆叠的自注意力层。为了生成垂直注意力的对齐输入,首先对每个单元值计算固定长度的初始向量(对Transformer的输出向量进行平均池化)。接下来将自然语言描述的向量序列与初始化后的单元值向量进行连接。
垂直注意力与Transformer拥有相同的参数,但是只对垂直对齐的元素(自然语言语句中的同一个单词,同一列中的单元值)进行操作。这种垂直注意力机制能够聚合不同行中的信息,允许模型捕获单元值的跨行依赖关系。
最终的自然语言语句和列的表示
最终每一列的表示是将最后一个垂直自注意力层中对齐的单元值向量进行平均池化,得到该列的表示。自然语言语句中每一个单词的表示也采用类似的方式进行计算。
3.2 预训练
3.2.1 训练数据
使用了从英文维基百科和WDC WebTable语料库中收集的表格和与其相邻的文本作为训练数据。预处理后的语料包含26.6M个表和自然语言句子。
3.2.2 无监督学习目标
TABERT使用不同的目标来学习上下文和结构化表格的表示。对于自然语言上下文,还是使用MLM目标,在句子中随机mask15%的token。对于列的表示,TABERT设计了两个学习目标:
- 遮罩列预测(Masked Column Prediction,MCP)目标使模型能够恢复被遮蔽的列名和数据类型。具体来说就是从输入表中随机选取20%的列,在每一行的线性化过程中遮蔽掉它们的名称和数据类型。给定一列的表示,训练模型使用多标签分类目标来预测其名称和类型。直观来说,MCP使模型能够从上下文中恢复列的信息。
- 单元值恢复(Cell Value Recovery,CVR)目标能够确保单元值信息能够在增加垂直注意力层之后能够得以保留。具体而言,使用经过V层vertical attention后的向量来预测表格中的原始值,这里并不是用经过pooling后的,所以只需要预测一个value值,但是每个value值可能由多个token组成,所以后面会采用一个span的预测方式。
4 案例应用:表格上的语义解析
4.1 有监督的语义解析
Spider数据集即是一个有监督的语义解析任务,他是由人工标注得到的大型Text-to-SQL数据集。
4.2 弱监督的语义解析
WikiTableQuestions数据集采用了一种类似于强化学习的方式,即模型看不到SQL语言的标注,只知道其执行结果是否正确。
5 实验
在Spider和WikiTableQuestions数据集上结果如下:
作者也对比了一些组件的效果。