本文对微软团队编写的2024 SIGMOD论文《Table-GPT: Table-tuned GPT for Diverse Table Tasks》进行解读,全文共7991字,预计阅读需要15至25分钟。
尽管如今GPT-3和ChatGPT等语言模型在执行各种任务上表现出了出色的能力,但是当进行基本的表格理解任务时,如今的语言模型在许多与表格相关的任务中仍然是不够理想的,这可能是因为这些语言模型主要是在一维自然语言文本上进行预训练的,而关系表是二维对象。于是作者团队提出了一个新的表格预训练,以继续训练/微调语言模型。表格与训练使用从真实的表合成的各种表任务作为训练数据,目的是增强语言模型理解表和执行表任务的能力。研究表明,表格预训练后得到的Table-GPT模型表现出更好的表理解能力和更强的概括性。
1.1大语言模型的发展
近年来的大型语言模型,如GPT和LLaMa,在执行各种自然语言任务方面表现出令人印象深刻的能力。一些工作也表明通过使用“提示工程”,例如实体匹配和数据填充,可以提示语言模型在许多表任务上表现更优。虽然并行工程是增强模型性能的一个有前途的方向,但它需要特定于任务的调优。作者团队旨在提出了一种称为“表调优”的范式,修改一次底层语言模型的权重,通过继续使用不同的表格任务作为训练数据来训练它们,以提高它们理解表格的能力。
1.2大语言模型完成表格任务的局限性
虽然如今语言模型在自然语言任务中表现出色,但这些模型是否最适合表格任务?因为它们主要是在自然语言文本上进行预训练的,而自然语言文本与表格不同。
自然语言文本具有以下的特点:单向的、从左到右阅读的、交换两个标记通常会改变句子的含义。相比之下,关系表具有行和列的二维性质;其中对于同一列中的值,在垂直方向上从上到下阅读在许多表任务中是至关重要的。此外,与文本不同的是,表格中交换两行或两列通常不会改变表格的语义含义。


语言模型在表任务上的表现实例
根据一些简单的在表任务上的测试(如缺失元素识别、列查找、表格问答和数据插补)可以表明,一些大型语言模型在大量单向自然语言文本上进行预训练时,并不适合“阅读”二维表格,特别是在垂直方向上阅读,但这对于执行许多表格任务至关重要。
1.3提出Table-tuning的动机
为了更好地增强语言模型理解表格和执行表格任务的能力,作者提到了两个方法:NLP中的指令调优和表调优。
1.3.1 NLP中的指令调优:训练语言模型以遵循不同的人类指令
为了改变语言模型的行为,一些文献采用了“预调优”的技术。指令调优是将类似GPT的模型训练成类似ChatGPT的模型的一种关键技术,通常由人类标签人员手动注释来构造以“指令-完成“对为特点的训练数据,随后在显式演示上训练语言模型,从而产生了众所周知的模型,如ChatGPT/InstructGPT等。
1.3.2表调优:训练语言模型理解表
通过之前指令调优的经验,为了提高语言模型的能力,理解表和执行表任务。作者提出了一个“表调优”的范例,来继续训练语言模型,通过合成使用大量的真实的表得到不同的训练数据的形式(如“指令,表,完成“)。

指令调优和表调优的对比
通过大量的实验可以证明了表调优是一个有前途的新方向,最终得到的表格GPT模型有以下特点:
强表格模型:在广泛的可见和不可见的表格任务上,其性能可以大大优于GPT3.5和ChatGPT。
可推广到新任务:由于表格GPT模型可以很好地响应各种表任务,可以将Chat-GPT推广到新的NLP任务。

表格GPT模型可以推广到的新任务
由于像GPT这样的语言模型主要是在自然语言文本上进行预训练的,因此首先需要探讨一个基本问题,即语言模型是否可以可靠地读取和理解关系表?具体而言,关系表在许多方面与文本不同:

表相关的任务
2.1一维(文本)vs二维(表格)
语言模型主要基于自然语言文本和编程代码进行训练,这两者都是单向的,即从左到右,逐个标记,以顺序的方式阅读。相比之下,关系表是二维的,有行和列,其中对于同一列中的列标题和其他值,从上到下垂直阅读对于许多表任务来说是至关重要的。
考虑数据填补的任务(上图中的T-8),为了推断表格单元格中的缺失值,需要观察同一列中的其他值,然后才能猜测缺失的值;类似地,对于错误检测任务(上图中的T-9),在确定单元格是否错误之前,还需要查看列标题和同一列中的其他值,以理解列的语义。对于表查询(上图中的T-3),即使是传统的NLP问题,为了正确回答表上的问题,垂直地在列中阅读同样重要。
根据测试语言模型在表格缺失值识别任务上的结果可以看出,语言模型在列方向上读取表显然是具有挑战性的,其中有和没有列分隔符的准确率分别为0.38和0.26。即使使用列分隔符和显式的几次演示,该模型只能得到一半的测试正确(0.51)。在行方向上,模型识别丢失单元格的能力明显更好,尽管仍然不是很好,特别是在“无列分隔符”设置中。

vanilla GPT-3.5在执行缺失值识别任务上的结果
2.2顺序敏感(文本)vs置换不变(表格)
自然语言文本往往是顺序敏感的,交换两个标记通常会导致不同的含义。相比之下,表往往是置换不变的,其中交换两行或两列,一般不应改变结果表的语义含义。因此,当将语言模型应用于表任务时(例如正确性匹配,错误检测,模式匹配),预测结果可能对输入表中列的顺序相当敏感,即使我们只是稍微重新排序列。这表明语言模型对表的理解仍然是不稳定的和次优的,这可能是因为语言模型受到在其预训练中使用的大量文本数据的影响,它们默认实体匹配和错误检测这样的任务的决策实际上不应该取决于列的顺序,由此导致了错误。
2.3其他差异
表格数据还有许多其他方面与文本不同。首先,表格单元格往往是简短的实体名称或短语,当在一行中进行序列化时,通常与文本文档中的自然语言句子不同。此外,同一列中的值通常具有同质值,成对的列编码之间存在关系,这是文本中没有的属性。这些差异都可能使语言模型对于表格用例来说不是最佳的,这体现出了表调优方法的关键性。
3.1表调优总体概述
受到指令调优中“(指令,完成)”对形式的启发,作者提出的表调优,使用“(指令,表,完成)”的三元组提高语言模型执行表任务的能力。其中每个这样的三元组定义表任务中的一个实例:
定义1:表任务的实例,由𝑡表示,被定义为三元组
,其中
是指定表任务的自然语言指令,
是要在其上执行任务的输入表,并且
是遵循指令
在表
上执行任务的预期完成。
为了确保训练数据的质量和多样性,之前的指令调优中是通过人工标签来手动标记这些数据。为避免昂贵的人工标记,作者希望利用现有的基准数据来进行表格的调优。但是现有的基准数据存在以下问题:
有限的任务多样性:过去的文献集中在少数的精挑细选的表任务(如实体匹配和数据转换)。
有限的数据多样性:由于基准数据通常由研究人员仅在几个特定数据集上手动标记,若将其用作语言模型的训练数据时是不够的。
总体来说,表调优的方法是:合成然后增强。通过使用真实的表来创建不同的表任务,它可以被用作训练数据表调优语言模型:

表调优算法
首先,从一个大的真实的表
的语料库中采样一个表
,以及一种类型的表任务
。从
对中,合成一个表任务的实例
。之后从创建的表任务的不同实例集合
中,在指令/表/完成级别上“增强”任务。最后得到的表任务
成为用来调整表语言模型的训练数据。

表相关的任务
3.2合成不同的表任务
为描述如何合成表任务
的不同实例,作者提出了两种互补的方法:为任务多样性合成新的表任务、为数据多样性合成新的表测试用例。
3.2.1为了任务多样性而合成新的表格任务
作者团队利用大量已经存在的真实的表格,提出了一些易于合成的表格理解/增强/操作任务。
(T-13)表格摘要(TS):由于Web表格通常具有描述性标题,因此需要要求模型总结表格中的内容。此任务旨在使用带有真实的人为题的真实的表格,以增强模型读取表格并理解表格重点的能力。
(T-14)列增强:创建一个任务,取一个表中的前k个列,要求语言模型生成第k+1个列。这个任务练习了模型在给定表上下文的情况下生成实际列的能力,并要求需要在语义上兼容。
(T-15)行增强(RA):与列增强类似,在该任务中,对一个表进行采样,并要求模型通过给定的前n行生成第(n+1)行。这个任务锻炼了模型在给定表上下文的情况下合成实际行的能力,这些行需要与现有行垂直对齐。
(T-16)行/列交换(RS/CS):在此任务中,要求模型执行表完成交换第i行和第j行的指令,以更好地阅读和理解表格。
(T-17)行/列过滤:在这个表操作任务中,要求模型根据一组指定的行/列索引过滤到样本表
中的特定行/列。这个任务能够锻炼模型操作表格的能力,表格中的单元格在垂直和水平方向上都需要对齐。(T-18)行/列排序(RS/CS):在排序任务中,要求模型根据列中的值对表中的行进行排序,生成预期的表。排序任务对于语言模型来说是相当具有挑战性的,同样锻炼了模型操作表的能力。
(T-11)头值匹配(HVM):在这个任务中,需要对一个表进行采样,删除它的所有列头,生成相应的没有列头的表。它旨在帮助模型更好地理解和关联列标题和值的语义。
3.2.2为数据多样性合成新的表测试用例
如前所述,这些任务的现有基准通常在少数数据集上手动标记,这些数据集可用于评估,但由于其有限的数量和多样性而不适合作为表调优的训练数据。作者在此提出通过使用真实的表,为这些已建立的表任务合成新的表测试用例。
(T-5)行到行数据转换(R2R):为了通过数据转换合成新的表,通过构造一个合成器在表的集合
内去识别那些行之间存在数据转换的表
。这些行可以通过推理程序
进行转化。之后要求合成器通过缺失某些数值
的表格
推理出缺失值得到
(T-7)模式匹配(SM):为了合成新的表以进行模式匹配,对一个真实的表
进行采样,并取表的前k行得到
,之后再取k行得到
,其中通过使用GPT生成的语义相似的列名映射,将原始表中的列名重新归纳为
的列名。最后,重新排列
和
中的列,并将这两个列作为模式匹配的测试用例。
(T-8)数据插补(DI):随机抽取一个真实的表
,然后删除一个随机值得到
,通过数据插补任务对其中缺失的值
进行预测。这个任务可以锻炼模型利用行和列上下文中的值之间存在的相关性的能力。
(T-9)错误检测(ED):对一个真实的表
进行采样,并生成一个修改后的表
,使用一个错误的值注入表中。目的是为了训练模型通过表的上下文来识别这个错误值的能力。(T-10)列表提取(LE):首先对表
进行了采样,并将表中所有列分隔符替换为白色空格,以生成其未分段的列表形式的分隔符。列表提取的目的是令模型能够基于垂直方向上的值对齐来产生正确的列分段,并生成对应的表
。
3.3扩充合成的表任务
对于合成后得到的表任务实例,之后表调优将进行在多个级别上进行额外的增强任务,以创建更多的任务/数据多样性并避免表调优中的过度拟合。
3.3.1指令级增强
对于指令级增强,由于在训练数据实例中重复使用相同的指令可能会导致过度拟合,因此使用生成模型(如GPT)来增强规范指令,以将人为的书面指令解释为许多不同的变体。
3.3.2表级增强
二维表应该在很大程度上是“置换不变”的,可以通过执行列置换,行置换,列采样和行采样等操作,以增加表任务中使用的表的多样性。通过继续在这样的训练表数据上训练语言模型,可以增加模型在表上的稳定性。
3.3.3完成级增强
在完成级,对于表任务的合成实例
,由于观察到在更复杂的表任务(例如实体匹配和错误检测)上执行推理步骤可以导致更好的任务性能之后,作者通过生成将推理步骤添加到原始的
中的
来增强原始的
。主要分为以下两种:模型辅助的完成级增强和真实信息辅助的完成级增强。
3.3.4额外的增强
对于额外类型的增强,其中包括"模板级增强",即混合了零次任务模板和少次任务模板(在指令模板之后添加多个输入/输出完成示例
),以及"任务级增强"(通过合成新类型的表任务),这都提高了训练数据的多样性并有助于表调优。
3.4 Table-GPT作为“表基础模型”
在经过“合成然后增强”的表调优之后,得到大量不同的表任务
。其中使用序列化的
作为prompt,继续训练语言模型(如GPT),并将
作为”完成“。在训练过程中最小化语言建模的完成损失,并进行正则化。
对于一个解码器式的语言模型M,让TableTune(M)是M的表调优版本。如果在以下所有场景中,TableTune(M)在表任务上的性能优于M,那么它可以作为一个更好的“表基础模型”:
Out of the box zero-shot:当只使用M或TableTune(M)的指令来执行表任务时。
Out of the box few-shot:当使用指令和随机选择的少数触发示例来执行表任务时。
Task-specific prompt-tuning:当具有用于下游任务的少量标记数据,并且执行随机触发调优以选择最佳指令/示例组合时。
Task-specific fine-tuning:当拥有足够数量的标记数据时,并为任务执行特定微调时。
4.1实验设置
4.1.1实验基线
在实验中,测试以下的对比语言模型:
GPT-3.5 (text-davinci-002):这个175B模型可从OpenAI获得,是普通GPT模型之一。
Table-GPT-3.5 (text-davinci-002 +table-tune):通过对GPT-3.5(text-davinci-002)执行表调优获得的模型。实验中比较了Table-GPT-3.5和GPT-3.5的性能。
ChatGPT (text-chat-davinci-002):作为内部可用的ChatGPT模型的一个版本。
Table-ChatGPT (text-chat-davinci-002 +table-tune):通过对ChatGPT(text-chatdavinci-002)执行表调优获得的模型,实验中将其与ChatGPT进行比较
4.1.2训练任务和数据
训练中的表任务
在实验中总共使用了14种表任务(T-5到T-18),作为表调优的训练数据。除了两种任务(T-6和T-12)之外的所有任务类型中,都是用表任务的合成实例。通过遵循之前描述的“合成然后增强”的方法,作者采用50:50的zero-shot和few-shot模板混合生成1000个表任务实例。在任务合成期间,主要是从125k个真实的web表和数据库据表中采样。
4.1.3测试任务和数据
为了评估表调优的好处,作者测试了表调优与未调优的配对模型的性能,即,将GPT-3.5与Table-GPT-3.5和ChatGPT与Table-ChatGPT作为两组进行比较。其中此处测试的表任务(9个)划分为不可见任务和可见任务:
不可见任务(T-1到T-4):这些任务在表调优过程中是完全看不见的,以评估表调优模型是否可以继续遵循人类指令并执行新的不可见的任务。
可见任务(T-5到T-9):这些任务是文献中广泛研究的重要表任务,希望表调优模型能够理解这些表相关的概念。

测试数据和评估指标的详细信息
4.2总体实验结果比较
GPT-3.5和Table-GPT-3.5之间总体质量改善

ChatGPT和Table-ChatGPT之间的整体质量改进
在每一组对比中,任务设置分为零触发设置和少触发设置。可以看出,在所有情况下,表调优模型在不同的表任务中显示出强大的性能优势。当GPT-3.5和ChatGPT都用作基础模型时,可以观察到表调优的好处,这表明本文提出的表调优方法在不同风格的底层语言模型之上的通用性。
通过表格可以看出单个数据集级别的详细结果,显示了表调优在GPT-3.5和ChatGPT上,无论是不可见任务还是可见任务,都展现的强大性能优势。

表调优详细结果
4.3针对特定任务的优化表现
(1)单任务prompt工程:作者在列类型注释(CTA)任务上对表GPT-3.5和GPT-3.5执行了prompt工程(使用的是Efthymiou数据集),通过使用200个标记的示例选择最佳的少数样本,其中在标记的示例上评估prompt的良好性。可以看到,在通过prompt工程产生的5个最佳提示上,Table-GPT-3.5始终优于GPT-3.5。

使用prompt工程的结果比较
(2)单任务微调:实验在Efthymiou数据集上对Table-GPT-3.5和GPT-3.5中进行特定CTA任务的微调,以及在WikiTableQuestions数据集上进行TQA表格问答任务。在这两种情况下,改变x轴上的训练数据量。正如预期的那样,Table-GPT-3.5和GPT-3.5的性能都受益于持续的特定于任务的微调,但在相同数量的训练数据下,Table-GPT-3.5完全优于GPT-3.5。

单任务微调结果
4.4敏感度分析

改变训练任务的数量结果
(1)改变训练任务的数量:当使用较少的训练任务对每个选定的任务子集进行微调时,表调优退化为单任务调优,任务的平均性能一般。使用更多的训练任务对每个选定的任务子集进行微调时,对于所有任务以及所有任务的平均性能持续上升,显示出类似于多任务训练的益处。

改变训练数据的数量结果
(2)改变训练数据的数量:在不同训练数据量的情况下,可见和不可见任务的性能随着训练数据的增加而提高,随着使用更多数据,性能趋于稳定。

改变基本模型大小结果
(3)改变基本模型大小:为了理解基本模型的大小如何影响表调优模型的性能,实验中对GPT的四个变体进行表调优,即Text-Ada-001(350 M参数)、Text-Babbage-001(3B参数)、Text-Curie-001(13 B参数)、Text-Davinci-002(175 B参数)。实验结果可以看出,对于不可见的任务,表调优后的模型在较小的模型上的优势不大(Ada/Babbage/Curie),但在较大的模型上,表调优模型的优势突然变得非常显著。

改变prompt模板结果
(4)改变prompt模板:为了测试表调优模型的鲁棒性,作者生成了5个不同的提示模板(任务描述和特殊标记),这些模板是使用GPT自动解释的,是来自人类编写的规范提示模板。实验结果显示了每个prompt模板在所有不可见测试任务上的平均模型性能。不同的prompt模板会导致性能的变化,对于Table-GPT-3.5和GPT-3.5,在所有5个prompt模板上,前者的性能始终优于后者10个百分点以上,显示了Table-GPT对不同类型prompt的鲁棒性。

使用不同的表格格式序列化表格时,Table-GPT-3.5的性能
(5)改变表格格式:将表格序列化为文本时有多种选择,例如Markdown,CSV,JSON等。为了了解在prompts中使用不同表格格式表示表格的效果,实验测试了使用不同表格格式时的平均性能。正如实验所示,Markdown格式的平均性能优于其他格式(CSV,JSON),尽管差距并不太明显。
4.5消融实验
消融实验由以下几部分完成:

表调优的消融实验
(1)没有进行任务合成:第一个消融是从训练数据中删除所有这些合成任务。结果如表中所示为“NoSyn”,结果体现出可见和不可见任务的平均性能显着下降,显示了多样化合成表任务的贡献。
(2)无表级增强:通过取消列置换操作来禁用表级增强。结果如表所示为“NoColPer”。实验结果可以看出,在没有列置换的情况下,可见和不可见任务的平均性能都有所降低。
(3)无指令级别增强:实验通过对每个任务只使用一个提示模板(没有释义)来禁用指令级别的增强。结果在表中显示为“NointVar”。实验结果可以看出,可见和不可见任务的平均性能略有下降。
(4)无完成级增强:通过从调优数据中的完成中,移除通过推理增强的完成。结果在表中显示为“NoCOT”。在没有COT的情况下,表调优在任务上的平均性能变得更低。
5.1语言模型
如今的语言模型有两种流行风格,分别是编码器式的语言模型和解码器式的语言模型,两者都源于最初的Transformer架构。
编码器式的语言模型:包括著名的BERT和RoBERTa,只使用来自Transformer的编码器,并在大量文本上进行预训练,以使用嵌入向量有效地表示文本的语义。编码器式的语言模型的下游任务主要是特定于任务的微调。当目标输入数据或所需输出发生变化时,编码器式的语言模型通常需要重复标记工作以获得最佳性能。虽然编码器式的语言模型是强模型,需要用任务特定的标记数据进行微调,这限制了它推广到新的不可见的任务的能力。
解码器式的语言模型:仅解码器的语言模型,如GPT和LLaMa,本质上是生成的,并且被证明在没有特定于任务的微调的情况下在推广到新的下游任务方面表现出色。研究表明,解码器式的模型,可以很容易地适应新的任务,只使用自然语言指令(例如,“对以下评论中的情感进行分类”),以及列举地一些示例。并且无需对每个特定任务的标记数据进行微调,使解码器风格的模型更加通用。
5.2表任务的语言模型
目前的一些开创性工作已经以各种方式使用上述的语言模型来执行与表相关的任务。
表任务的编码器式语言模型:如TURL,TaBERT,Ditto等,其中表模型基于编码器式的BERT类模型进行训练,这些模型在各种表任务上表现良好。然而,像它们的BERT类基础模型一样,为了推广到新的数据集或新的任务,这些编码器风格的表模型通常需要对标记数据进行微调。相比之下,能够适应新的数据集和任务而无需特定于任务的微调,这是在这个工作中更重要的目标。
表任务的解码器式的语言模型:随着GPT-3和ChatGPT等解码器式的语言模型的成功,一些研究为表任务开发了指令优化技术,该技术仔细选择提示中的指令和示例,这样,普通语言模型可以很好地执行与表相关的任务。针对表格任务的表格调优。与指令优化相反,作者提出的“表调优”探索了正交方向,通过继续训练一次(不是针对特定于任务的)底层语言模型,这样得到的模型在一系列表格任务上表现得更好。
作者团队提出了一种称为表调优table-tuning的新范式,它可以继续微调预训练的大型语言模型(如GPT-3.5和ChatGPT)的模型权重,从而使生成的模型更好地理解表和执行表任务,同时仍然能够在各种人类指令中执行不可见的任务。就像指令优化在NLP领域已经成为一个丰富而富有成果的研究方向,作者希望表调优方面的最初设想可以为后人铺路,为表和与表相关的任务开发出更优化的模型。
论文解读联系人:
刘思源
13691032906(微信同号)
liusiyuan@caict.ac.cn











