Tapas

论文标题:[2004.02349] TAPAS: Weakly Supervised Table Parsing via Pre-training (arxiv.org)

code:google-research/tapas: End-to-end neural table-text understanding models. (github.com)

Abstract

TAPAS是一种不生成逻辑形式来解决【表问答】(Table Q&A)问题的方法。它基于弱监督的方式,通过应用相应的聚合操作符来选择表单元格来进行预测。

在三种语义解析数据集上,SQA,WIKISQL,WIKITQ均取得了较好的结果。

1 Introduction

从半结构化表中回答问题通常被视为一个语义解析任务,其中问题被转换为一个逻辑形式,可以对表执行,以检索正确的表示。

  • 语义解析器依赖于有监督的训练数据,将自然语言问题与逻辑形式配对,但这些数据的注释代价昂贵。
  • 此外,语义解析应用程序只利用生成的逻辑形式作为检索答案的中间步骤。然而,生成逻辑形式会带来困难,例如保持足够表达性,服从解码约束等。

在本文中,我们提出了Tapas(表解析器),一个弱监督的问题回答模型,它对表进行推理,而不生成逻辑形式。因此,它可以从自然语言中学习操作,而不需要以形式主义来指定。

2 TAPAS Model

图1 模型架构

模型整体介绍

  • 本模型基于BERT的编码器,并添加了额外的位置嵌入来编码表型结构
  • 将表格扁平化成一系列单词,再将单词分割成单词块(token),并将问题的token连接到表的token之前
  • 额外添加两个分类层用来选择表中的单元以及对这些单元格进行聚合的操作符

Additional embedding

我们在问题与表中增添了一个分隔符,这些token嵌入的信息与表格感知的位置嵌入一起提供给模型。

  • Position ID
  • Segment ID
  • Column / Row ID
  • Rank ID:对可以解析成浮点数或日期的列值进行排序
  • Previous Answer

Cell selection

分类层将选择表单元格的一个子集。

  • 首先,我们在token的最后一个隐藏向量上使用一个线性层来计算其的logit。cell的logit是其含有token的logit的平均值。该线形层的输出为选择cell $c$的概率$p_s^{(c)}$。
  • 另外添加一个诱导偏差对在单个列中选择cell有益
    • 我们引入一个分类变量来选择正确的列。模型使用一个新线形层对指定的列上的cell embedding进行处理。
    • 我们也添加了一个额外的列logit值,来表示不选择任何列或任何cell
    • 那么这个线形层的输出是使用softmax处理列logit后选择列co的概率$p_{col}^{(co)}$,另外我们设置未被选中的列上的cell概率为0

Aggregation operator prediction

语义解析任务需要在表上进行离散推理,例如求和和计数。

为了不通过生成逻辑形式的方式解决上述任务,TAPAS在输出表单元格子集的同时,一并输出可选的聚合运算符。

这些运算符描述了应用在这些单元格子集上的操作,例如SUM,COUNT,AVERAGE,NONE

选择指定操作符,需要让最终隐藏向量的第一个token(特殊的[CLS]token)先经过一个线性层再通过softmax。

我们将这一层记作$p_a^{(op)}$,其中op是某个聚合运算符

Inference

我们预测了最有可能的聚合运算符和单元格的一个子集(使用cell selection layer)。为了预测一个离散单元格的选择,我们选择了所有其概率大于0.5的表单元格。然后,通过在选定的单元格上应用预测的聚合,对表执行这些预测来检索答案。

3 Pre-training

我们将预训练过程从单纯的自然语言文本扩展到结构化数据上,作为我们表解析任务的初始化。为此,我们在维基百科的大量表中预训练了TAPAS,这使得我们模型能够学到文本和表之间以及表的单元格和标题之间有趣的相关性。

  • 与TABERT一致,本文也采用了masked language model(MLM)预训练目标。
  • 我们将单词片段的序列长度控制在128以内,这需要我们对表进行适配。
    • 首先只添加每个列名和单元格的第一个单词。然后我们不断地添加单词,直到我们达到单词块预算(128)。
  • 我们遵循由BERT引入的掩蔽程序,使用 whole word masking

4 Fine-tuning

概览

  • 我们在弱监督设置中正式定义表解析:

给定一个含N个例子的训练集 $\{(x_i,T_i,y_i)\}_{i=1}^N$,其中,$x_i$是一个语句(utterance),$T_i$是一张表,$y_i$是一组相应的表示。我们的目的是学习一个模型,能够将语句x映射到一段程序z,其中z作用在对应的表T上可以得到正确的表示y

这段程序z包括一个表单元格的子集和一个可选的聚合运算符。表T将一个表单元格映射到它的值。

  • 在具体实现时,我们把表示y翻译成(C,s),其中C是单元格坐标,s是一个标量。我们可以根据(C,s)的内容指导训练:
    1. Cell Selection : s未填充(not populated)
    2. Scalar Answer : s被填充,C为空集

Cell Selection

Scalar Answer

Ambiguous Answer

image-20221002163526787

另外,TAPAS把Table QA问题分为了三类:

  1. cell selection:可以通过选择表中若干单元格解决问题

  2. scalar answer:可以通过在若干个单元格上进行聚合操作解决问题

  3. ambiguous answer:在某些情况下,是scalar answer,而其他情况下则是cell selection